*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%;overflow-x:hidden;overscroll-behavior:none}button,a,input,select,textarea{touch-action:manipulation}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#f5f5f5;color:#333;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.app{display:flex;flex-direction:column;min-height:100%;max-width:100vw;overflow-x:hidden}.app-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:1rem;background:#fff;border-bottom:1px solid #ddd;position:relative;z-index:1050}.app-header h1{margin:0;font-size:1.25rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:1;min-width:0}.app-main{flex:1;display:flex;align-items:center;justify-content:center;padding:2rem 1rem}.empty-state{text-align:center;color:#888}.empty-state p{margin:.25rem 0}.empty-hint{font-size:.875rem}.plan-list{width:100%;max-width:500px;margin:0 auto}.plan-list h2{margin:0 0 1rem;font-size:1.25rem}.plan-create{display:flex;gap:.5rem;margin-bottom:1rem}.plan-create input{flex:1;padding:.5rem;border:1px solid #ccc;border-radius:4px;font-size:1rem}.plan-create button{padding:.5rem 1rem;background:#4a90d9;color:#fff;border:none;border-radius:4px;font-size:1rem;cursor:pointer}.plan-create button:disabled{opacity:.5;cursor:not-allowed}.plan-error{color:#d32f2f;font-size:.875rem;margin-bottom:.5rem}.plan-list ul{list-style:none;padding:0;margin:0}.plan-list li{display:flex;align-items:center;gap:.5rem;padding:.75rem;border-bottom:1px solid #eee}.plan-name{flex:1;cursor:pointer;font-weight:500}.plan-name:hover{color:#4a90d9}.plan-date{font-size:.75rem;color:#999}.plan-delete{background:none;border:none;color:#999;font-size:1.25rem;cursor:pointer;padding:.25rem .5rem}.plan-delete:hover{color:#d32f2f}.plan-empty{text-align:center;color:#999;margin-top:1rem}.plan-canvas-container{display:flex;flex-direction:column;height:100%}.canvas-toolbar{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:#fff;border-bottom:1px solid #ddd;flex-wrap:wrap}.canvas-plan-name{font-weight:600;flex-shrink:0}.canvas-controls{display:flex;gap:.25rem}.canvas-controls button,.canvas-calibration-controls button{padding:.25rem .5rem;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer;font-size:.875rem}.canvas-controls button:hover,.canvas-calibration-controls button:hover{background:#f0f0f0}.canvas-calibration-controls{display:flex;align-items:center;gap:.5rem;margin-left:auto}.calib-hint{color:#4a90d9;font-size:.875rem;font-style:italic}.calib-distance-group{display:flex;align-items:center;gap:.25rem}.calib-distance-group input{width:80px;padding:.25rem .5rem;border:1px solid #ccc;border-radius:4px;font-size:.875rem}.scale-readout{font-size:.75rem;color:#666}.canvas-error{padding:.5rem 1rem;color:#d32f2f;font-size:.875rem;background:#ffeaea}.canvas-upload{padding:1rem;text-align:center}.upload-label{display:inline-block;padding:.75rem 1.5rem;background:#4a90d9;color:#fff;border-radius:4px;cursor:pointer;font-size:1rem}.upload-label input{display:none}.canvas-wrap{flex:1;overflow:hidden;position:relative;background:#e8e8e8}.canvas-wrap svg{display:block;width:100%;height:100%}.btn-back{background:none;border:1px solid #ccc;border-radius:4px;padding:.25rem .75rem;cursor:pointer;font-size:.875rem}.btn-back:hover{background:#f0f0f0}.toolbar{display:flex;gap:.25rem;padding:.5rem;background:#fff;border-top:1px solid #ddd;justify-content:center;flex-wrap:wrap}.toolbar-btn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:.5rem .75rem;border:1px solid #ccc;border-radius:8px;background:#fff;cursor:pointer;font-size:.75rem;min-width:60px;transition:all .15s}.toolbar-btn:hover{background:#f0f4ff;border-color:#4a90d9}.toolbar-btn.active{background:#4a90d9;color:#fff;border-color:#4a90d9}.toolbar-icon{font-size:1.25rem;line-height:1}.toolbar-label{font-size:.65rem;text-transform:uppercase;letter-spacing:.03em}.rect-dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000}.rect-dialog{background:#fff;border-radius:12px;padding:1.5rem;min-width:280px;box-shadow:0 8px 32px #0003}.rect-dialog h3{margin:0 0 1rem;font-size:1.1rem}.rect-dialog-fields{display:flex;flex-direction:column;gap:.75rem}.rect-dialog-fields label{display:flex;flex-direction:column;gap:.25rem;font-size:.875rem;font-weight:500}.rect-dialog-fields input{padding:.5rem;border:1px solid #ccc;border-radius:4px;font-size:1rem}.rect-dialog-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1rem}.rect-dialog-actions button{padding:.5rem 1rem;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer;font-size:.875rem}.rect-dialog-confirm{background:#4a90d9!important;color:#fff!important;border-color:#4a90d9!important}.rect-dialog-confirm:disabled{opacity:.5;cursor:not-allowed}.drawing-hint{color:#f60;font-size:.8rem;font-style:italic;margin-left:.5rem}.polygon-done-btn{padding:.25rem .75rem;background:#f60;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.875rem;font-weight:600;margin-left:.5rem}.polygon-done-btn:hover{background:#e65100}@media(max-width:768px){.toolbar{position:fixed;bottom:0;left:0;right:0;z-index:900;padding:.375rem;padding-bottom:calc(.375rem + env(safe-area-inset-bottom));border-top:2px solid #ccc;box-shadow:0 -2px 8px #0000001a}.plan-canvas-container{padding-bottom:70px}.toolbar-btn{min-width:52px;padding:.4rem .5rem}.rect-dialog{min-width:90vw;max-width:90vw}}@media(min-width:769px){.plan-canvas-container{display:flex;flex-direction:column;height:100%}.toolbar{flex-direction:row;border-top:1px solid #ddd}}.toolbar{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.toolbar-group{display:flex;gap:.25rem;align-items:center}.toolbar-btn-small{min-width:40px;padding:.4rem .5rem}.toolbar-btn-small .toolbar-label{display:none}.toolbar-btn:disabled{opacity:.35;cursor:not-allowed}.properties-panel{background:#fff;border:1px solid #ddd;border-radius:12px;padding:1rem;box-shadow:0 4px 16px #00000026;font-size:.875rem}.properties-panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.properties-panel-header h3{margin:0;font-size:.95rem}.props-close-btn{background:none;border:none;font-size:1.1rem;cursor:pointer;color:#999;padding:.25rem}.props-close-btn:hover{color:#333}.props-section{margin-bottom:.75rem}.props-label-text{display:block;font-weight:600;font-size:.8rem;margin-bottom:.35rem;color:#555}.props-colors{display:flex;gap:.35rem;flex-wrap:wrap}.props-swatch{width:28px;height:28px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:transform .1s}.props-swatch:hover{transform:scale(1.15)}.props-swatch.active{border-color:#333;transform:scale(1.15)}.props-input{width:100%;padding:.4rem .5rem;border:1px solid #ccc;border-radius:4px;font-size:.875rem}.props-input:focus{outline:none;border-color:#4a90d9;box-shadow:0 0 0 2px #4a90d933}.props-dimensions{display:flex;gap:.5rem}.props-dim-field{flex:1;display:flex;flex-direction:column;gap:.2rem;font-size:.75rem;color:#666}.props-polygon-info{font-size:.8rem;color:#555;line-height:1.5}.props-rotation-info{font-size:.85rem;color:#555}@media(max-width:768px){.properties-panel{border-radius:12px 12px 0 0;border-bottom:none;z-index:850}.toolbar{flex-direction:row;justify-content:center;z-index:900}.toolbar-group{flex-wrap:wrap;justify-content:center}.plan-canvas-container{padding-bottom:70px}}@media(min-width:769px){.properties-panel{max-height:calc(100vh - 80px);overflow-y:auto}}.toolbar-save{display:flex;align-items:center;gap:.35rem}.save-status{font-size:.75rem;color:#2ecc71;white-space:nowrap;min-width:70px}.offline-banner{position:fixed;top:0;left:0;right:0;background:#ff9800;color:#fff;padding:.5rem 1rem;display:flex;align-items:center;justify-content:space-between;z-index:1100;font-size:.875rem;box-shadow:0 2px 8px #0003}.offline-banner button{background:#fff;color:#e65100;border:none;padding:.25rem .75rem;border-radius:4px;cursor:pointer;font-weight:600;font-size:.8rem}.offline-banner button:hover{background:#fff3e0}.conflict-prompt{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:#fff;border:2px solid #ff9800;border-radius:12px;padding:1.5rem;z-index:1200;box-shadow:0 8px 32px #0000004d;max-width:400px;width:90%;text-align:center}.conflict-prompt p{margin:0 0 1rem;font-size:.95rem;color:#333}.conflict-actions{display:flex;gap:.75rem;justify-content:center;flex-wrap:wrap}.conflict-actions button{padding:.5rem 1rem;border:1px solid #ccc;border-radius:6px;background:#fff;cursor:pointer;font-size:.875rem;min-width:120px}.conflict-actions button:hover{background:#f0f4ff;border-color:#4a90d9}@media(max-width:768px){.properties-panel{border-radius:12px 12px 0 0;border-bottom:none;z-index:850;-webkit-overflow-scrolling:touch}.props-dimensions{flex-direction:row;gap:.5rem}.props-dim-field{min-width:0}}.furniture-list{background:#fff;border:1px solid #ddd;border-radius:12px;padding:1rem;box-shadow:0 4px 16px #00000026;font-size:.875rem}.furniture-list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.furniture-list-header h3{margin:0;font-size:.95rem}.furniture-list-close-btn{background:none;border:none;font-size:1.1rem;cursor:pointer;color:#999;padding:.25rem}.furniture-list-close-btn:hover{color:#333}.furniture-list-items{display:flex;flex-direction:column;gap:4px}.furniture-list-item{display:flex;align-items:center;gap:8px;padding:8px;border-radius:6px;cursor:pointer;transition:background .15s}.furniture-list-item:hover{background:#f0f4ff}.furniture-list-item.selected{background:#e3edfa;border:1px solid #4a90d9}.furniture-list-swatch{width:16px;height:16px;border-radius:50%;border:1px solid #ccc;flex-shrink:0}.furniture-list-label{flex:1;font-weight:500;font-size:.85rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.furniture-list-dimensions{font-size:.75rem;color:#888;flex-shrink:0}.furniture-list-empty{text-align:center;color:#999;padding:1rem 0;font-size:.875rem}.furniture-list-item-actions{display:flex;gap:2px;flex-shrink:0}.furniture-action-btn{display:flex;align-items:center;justify-content:center;background:none;border:1px solid transparent;border-radius:4px;padding:2px 5px;cursor:pointer;font-size:.85rem;line-height:1;color:#666;transition:background .15s,color .15s}.furniture-action-btn:hover{background:#f0f4ff;border-color:#4a90d9;color:#4a90d9}.furniture-action-btn-delete:hover{background:#ffeaea;border-color:#d32f2f;color:#d32f2f}.furniture-list-chevron-btn{background:none;border:none;font-size:.85rem;cursor:pointer;color:#999;padding:.15rem .35rem;line-height:1;border-radius:4px;transition:background .15s,color .15s}.furniture-list-chevron-btn:hover{background:#f0f4ff;color:#4a90d9}.furniture-list-collapsed-bar{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;cursor:pointer;min-height:40px;-webkit-user-select:none;user-select:none}.furniture-list-collapsed-bar:hover{background:#f8f8ff}.furniture-list-collapsed-label{font-size:.85rem;font-weight:500;color:#555}.furniture-list-chevron{font-size:.8rem;color:#999;flex-shrink:0}@media(max-width:768px){.furniture-list{border-radius:12px 12px 0 0;border-bottom:none;z-index:840;-webkit-overflow-scrolling:touch}.furniture-list-collapsed-bar{border-radius:12px 12px 0 0;border-bottom:none}}.login-container{width:100%;max-width:360px;margin:0 auto}.login-form{background:#fff;border:1px solid #ddd;border-radius:12px;padding:2rem 1.5rem;box-shadow:0 4px 16px #0000001a}.login-form h2{margin:0 0 1.5rem;text-align:center;font-size:1.25rem}.login-field{display:flex;flex-direction:column;gap:.35rem;margin-bottom:1rem}.login-field label{font-size:.875rem;font-weight:600;color:#555}.login-field input{padding:.6rem .75rem;border:1px solid #ccc;border-radius:6px;font-size:1rem}.login-field input:focus{outline:none;border-color:#4a90d9;box-shadow:0 0 0 2px #4a90d933}.login-form button[type=submit]{width:100%;padding:.6rem;background:#4a90d9;color:#fff;border:none;border-radius:6px;font-size:1rem;font-weight:600;cursor:pointer}.login-form button[type=submit]:hover{background:#3a7bc8}.login-form button[type=submit]:disabled{opacity:.5;cursor:not-allowed}.login-error{color:#d32f2f;font-size:.875rem;margin-top:.75rem;text-align:center}.app-header-actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.app-header-menu-container{position:relative;flex-shrink:0}.app-header-menu-btn{background:none;border:1px solid #ccc;border-radius:4px;padding:.25rem .5rem;cursor:pointer;font-size:1.25rem;line-height:1;color:#333}.app-header-menu-btn:hover{background:#f0f0f0}.app-header-menu{position:absolute;top:calc(100% + .25rem);right:0;background:#fff;border:1px solid #ddd;border-radius:8px;box-shadow:0 4px 16px #00000026;padding:.5rem;display:flex;flex-direction:column;gap:.25rem;z-index:1100;min-width:120px}.app-header-menu button{text-align:left;width:100%}@media(max-width:768px){.app-header-actions{display:none}}@media(min-width:769px){.app-header-menu-container{display:none}}.btn-logout{background:none;border:1px solid #ccc;border-radius:4px;padding:.25rem .75rem;cursor:pointer;font-size:.875rem;color:#666}.btn-logout:hover{background:#f0f0f0;color:#d32f2f;border-color:#d32f2f}.edit-bar{display:flex;align-items:center;gap:.5rem;row-gap:.35rem;padding:.35rem .5rem;background:#fff;border-top:2px solid #ccc;box-shadow:0 -2px 8px #0000001a;flex-wrap:wrap}.edit-bar-group{display:flex;align-items:center;gap:.2rem;flex-shrink:0}.edit-swatch{width:22px;height:22px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0;transition:transform .1s;flex-shrink:0}.edit-swatch:hover{transform:scale(1.15)}.edit-swatch.active{border-color:#333;transform:scale(1.15)}.edit-btn{display:flex;align-items:center;justify-content:center;padding:.3rem .45rem;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer;font-size:1rem;min-width:32px;flex-shrink:0}.edit-btn:hover{background:#f0f4ff;border-color:#4a90d9}.edit-btn-done{background:#4a90d9;color:#fff;border-color:#4a90d9;font-size:.75rem;font-weight:600;min-width:auto;padding:.3rem .6rem}.edit-btn-done:hover{background:#3a7bc8}.edit-btn-danger{background:#fff;color:#d32f2f;border-color:#d32f2f}.edit-btn-danger:hover{background:#ffeaea;border-color:#b71c1c}.edit-input{padding:.25rem .4rem;border:1px solid #ccc;border-radius:4px;font-size:.8rem;width:80px;flex-shrink:0}.edit-input:focus{outline:none;border-color:#4a90d9;box-shadow:0 0 0 2px #4a90d933}.edit-input-sm{padding:.25rem .3rem;border:1px solid #ccc;border-radius:4px;font-size:.8rem;width:52px;text-align:center;flex-shrink:0}.edit-input-sm:focus{outline:none;border-color:#4a90d9;box-shadow:0 0 0 2px #4a90d933}.edit-sep{font-size:.75rem;color:#999;padding:0 .15rem}@media(max-width:768px){.edit-bar{position:fixed;bottom:0;left:0;right:0;z-index:900;padding-bottom:calc(.35rem + env(safe-area-inset-bottom))}.plan-canvas-container{padding-bottom:50px}}@media(min-width:769px){.edit-bar{border-top:1px solid #ddd}}
