:root{--ink:#21342f;--muted:#70807b;--paper:#f7f5ef;--panel:#fff;--accent:#c86f42;--accent2:#2f7465;--line:#dce2dc;--danger:#b64c47;--shadow:0 18px 55px rgba(37,54,48,.12)}*{box-sizing:border-box}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:var(--paper);font-size:14px}button,input{font:inherit}button{border:0;border-radius:10px;background:var(--accent2);color:#fff;padding:10px 14px;font-weight:700;cursor:pointer}button:hover{filter:brightness(.96)}button:disabled{opacity:.42;cursor:not-allowed}.secondary{background:#edf2ef;color:var(--ink);border:1px solid var(--line)}.danger{background:#fff0ee;color:var(--danger);border:1px solid #f0cac6}.wide{width:100%}.compact{padding:7px 11px}.muted{color:var(--muted);line-height:1.5}.small{font-size:12px}.eyebrow{font-size:11px;letter-spacing:.14em;font-weight:800;color:#86928e}.topbar{height:62px;padding:0 24px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.topbar>div{display:flex;gap:12px;align-items:center}.logo,.brand-mark{color:var(--accent);font-size:26px}.status-pill{font-size:11px;padding:4px 8px;border-radius:20px;background:#eef4f1;color:var(--accent2)}.top-actions{font-size:12px}.logout{color:var(--muted);text-decoration:none}.app{display:grid;grid-template-columns:260px minmax(480px,1fr) 280px;height:calc(100vh - 62px)}.panel{background:#fff;padding:20px;overflow:auto}.left-panel{border-right:1px solid var(--line)}.right-panel{border-left:1px solid var(--line)}.new-config{display:flex;gap:6px}.new-config input{min-width:0}.new-config button{padding:8px 10px}.config-list{display:flex;flex-direction:column;gap:7px;margin-top:14px}.config-item{padding:12px;border:1px solid var(--line);border-radius:10px;cursor:pointer;background:#fff}.config-item:hover,.config-item.active{border-color:#82a79e;background:#f2f7f4}.config-item strong{display:block}.config-item small{color:var(--muted)}.lock{float:right;color:var(--accent)}.legend{margin-top:35px;display:grid;gap:9px;color:var(--muted);font-size:12px}.legend span{display:flex;align-items:center;gap:8px}.swatch{width:18px;height:5px;display:inline-block}.swatch.wall{background:#293c37}.swatch.door{background:#e45a55}.swatch.window{background:#5ba5c9}.workspace{min-width:0;display:flex;flex-direction:column;padding:20px}.workspace-head{display:flex;justify-content:space-between;align-items:center}.workspace-head h1{margin:0;font-family:Georgia,serif;font-size:25px}.workspace-head p{margin:5px 0}.zoom{display:flex;align-items:center;gap:8px}.zoom button{background:#fff;color:var(--ink);border:1px solid var(--line);padding:5px 10px}.canvas-wrap{flex:1;min-height:0;overflow:auto;background:#e9ece7;border-radius:16px;box-shadow:inset 0 0 0 1px #daddd8;display:grid;place-items:center;outline:none}.canvas-wrap:focus{box-shadow:inset 0 0 0 2px #83a99f}.canvas-wrap svg{height:100%;min-height:650px;max-width:100%;background:#fcfbf7;box-shadow:var(--shadow);transform-origin:center;touch-action:none}.hint{text-align:center;color:var(--muted);font-size:11px;padding-top:10px}.right-panel label,.modal-card label{display:grid;gap:5px;margin:11px 0;font-size:12px;font-weight:700}.right-panel input,.modal-card input,.new-config input{border:1px solid var(--line);border-radius:9px;padding:9px;background:#fafbf9;color:var(--ink);width:100%}.two{display:grid;grid-template-columns:1fr 1fr;gap:8px}.edge-row{display:grid;grid-template-columns:1fr 80px;gap:8px;align-items:center}.selection-info{margin-top:20px;font-size:12px;color:var(--muted)}.modal{position:fixed;inset:0;background:rgba(25,38,34,.42);display:grid;place-items:center;z-index:10}.modal[hidden]{display:none}.modal-card{position:relative;background:#fff;border-radius:18px;padding:25px;width:min(420px,calc(100vw - 30px));max-height:90vh;overflow:auto;box-shadow:var(--shadow)}.modal-card h2{font-family:Georgia,serif;margin-top:0}.modal-close{position:absolute;right:14px;top:12px;background:transparent;color:var(--ink);font-size:22px}.login{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 50% 0,#fff 0,#f1eee5 70%)}.login-card{width:min(430px,calc(100vw - 30px));background:#fff;padding:45px;border-radius:24px;box-shadow:var(--shadow)}.login-card h1{font:34px Georgia,serif;margin:10px 0}.login-card label{display:grid;gap:8px;margin:25px 0 12px;font-weight:700}.login-card input{font-size:24px;letter-spacing:.28em;text-align:center;border:1px solid var(--line);border-radius:12px;padding:14px;width:100%}.login-card button{width:100%;padding:13px}.notice{padding:10px;border-radius:8px;margin-top:15px}.notice.error{background:#fff0ee;color:var(--danger)}svg .room{fill:#fff;stroke:#263b35;stroke-width:14;stroke-linejoin:round}svg .room-label{font:600 18px Georgia,serif;fill:#66756f;text-anchor:middle;pointer-events:none}svg .room-size{font:11px sans-serif;fill:#9aa49f;text-anchor:middle;pointer-events:none}svg .window{stroke:#5ba5c9;stroke-width:18}svg .window-inner{stroke:#fff;stroke-width:5}svg .door-clearance{fill:rgba(222,74,68,.13);stroke:#e15c56;stroke-width:2;stroke-dasharray:6 5}svg .door-leaf{stroke:#d7504b;stroke-width:4}svg .measure{font:11px sans-serif;fill:#62716c}svg .measure-line{stroke:#7a8883;stroke-width:1;marker-start:url(#tick);marker-end:url(#tick)}svg .furniture{stroke:#66482e;stroke-width:2;cursor:grab;vector-effect:non-scaling-stroke}svg .furniture.selected{stroke:#123f72;stroke-width:4;filter:drop-shadow(0 5px 5px rgba(0,0,0,.15))}svg .f-label{font:12px sans-serif;fill:#2b2d29;text-anchor:middle;pointer-events:none}svg .invalid{fill:#d85a55!important}.measure-layer.hidden{display:none}@media(max-width:950px){.app{grid-template-columns:210px 1fr}.right-panel{position:fixed;right:10px;top:72px;bottom:10px;width:270px;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);z-index:5}.canvas-wrap svg{min-height:580px}.top-actions>span{display:none}}@media(max-width:700px){.app{display:block;height:auto}.left-panel{border:0}.workspace{height:760px}.right-panel{position:static;width:auto;margin:0 12px 20px}.topbar{padding:0 12px}.top-actions{gap:7px}}
