*{box-sizing:border-box}body{margin:0;background:#edf0e9;color:#263a2f;font:14px system-ui,sans-serif}header{height:80px;display:flex;align-items:center;gap:12px;padding:0 24px;background:white;border-bottom:1px solid #dce2d9}.brand{font-size:25px;min-width:240px;color:#28533e}.brand small{display:block;font-size:9px;letter-spacing:2px;margin:4px 0 0 30px}header input{width:230px!important;border:0!important;font-weight:600}#status{margin-left:auto;font-size:11px;color:#819080}button{border:1px solid #d8dfd6;border-radius:7px;background:white;color:#34503d;padding:10px 12px;cursor:pointer;font:inherit;font-size:12px}button:hover{background:#e7eee4}button.active,#save{background:#28533e;color:white}main{display:grid;grid-template-columns:260px minmax(300px,1fr) 260px;height:calc(100dvh - 80px)}aside{padding:25px 20px;background:white;overflow:auto;border-right:1px solid #dce2d9}.right{border-left:1px solid #dce2d9}small,h5{font-size:10px;letter-spacing:1.2px;color:#7b8e7e}h2{font-size:20px;font-weight:550;margin:10px 0 24px}h5{margin-top:27px}summary{font-weight:600;cursor:pointer;padding:12px 0}details{border-bottom:1px solid #e4e9df;padding-bottom:14px}label{display:block;font-size:11px;color:#7c897b;margin:12px 0}input,select{width:100%;margin-top:6px;border:1px solid #dce3d8;border-radius:6px;background:#fbfcfa;color:#2b3c31;padding:10px;font:inherit;font-size:13px}select{appearance:none;padding-right:44px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='m1 1 5 5 5-5' fill='none' stroke='%2357675b' stroke-width='1.5'/%3E%3C/svg%3E");background-position:right 18px center;background-repeat:no-repeat}.row{display:flex;gap:10px}.row>*{flex:1;min-width:0}.tile{width:100%;text-align:left;margin:4px 0;padding:13px;display:flex;gap:12px;align-items:center}.tile i{font-style:normal;font-size:24px;background:#eff3eb;padding:8px;border-radius:5px}.tile small{display:block;font-size:10px;letter-spacing:0;margin-top:4px}p{font-size:11px;line-height:1.8;color:#8a9786}#viewport{position:relative;overflow:hidden}#scene{position:absolute;inset:0}canvas{display:block;touch-action:none}.viewbar{position:absolute;z-index:2;top:20px;left:20px;right:20px;display:flex;justify-content:space-between;gap:10px;align-items:center}.help{position:absolute;bottom:20px;left:20px;right:20px;text-align:center;font-size:10px;color:#6c7e69;pointer-events:none}.badge{position:absolute;bottom:55px;left:24px;background:#ffffffdf;border:1px solid #dce2d7;padding:12px 17px;border-radius:8px}.badge b{font-size:19px}.badge small{display:block;margin-top:4px;letter-spacing:0}.wide{width:100%;margin-top:10px}.item{display:flex;align-items:center;gap:8px;border-bottom:1px solid #edf0e8;padding:10px 0;font-size:12px;cursor:pointer}.item span{flex:1}.item button{padding:3px 8px}.item.selected{color:#258249;font-weight:700}#objects{max-height:310px;overflow:auto}.empty{font-size:13px;line-height:1.8;color:#86957f}#toast{display:none;position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#264d38;color:white;padding:12px 22px;border-radius:8px;z-index:20}input[type=color]{height:38px;padding:4px}@media(max-width:1100px){main{grid-template-columns:220px minmax(260px,1fr) 220px}aside{padding:20px 15px}.brand{min-width:190px}header input{width:180px!important}#status{display:none}.viewbar{flex-wrap:wrap}}@media(max-width:760px){header{height:auto;padding:12px;flex-wrap:wrap;gap:7px}.brand{min-width:140px;font-size:21px}.brand small{font-size:7px}header input{width:150px!important}main{height:auto;display:flex;flex-wrap:wrap}#viewport{order:0;width:100%;height:60dvh;min-height:380px}aside{order:1;width:50%;max-height:650px}.right{order:2}.viewbar{left:12px;right:12px;top:12px}.viewbar button{padding:8px}.help{font-size:9px}}
/* Shared palette for the interface and both colour schemes. */
:root{color-scheme:light;--bg:#edf0e9;--panel:#fff;--input:#fbfcfa;--text:#263a2f;--muted:#687e6b;--border:#dce2d9;--hover:#e7eee4;--accent:#28533e;--accent-text:#fff;--logo-line:#d2f6cc;--badge:#fffffff0;--tile:#eff3eb}
:root[data-theme=dark]{color-scheme:dark;--bg:#151e1b;--panel:#1c2722;--input:#24312a;--text:#e0e9df;--muted:#a1b5a3;--border:#35463a;--hover:#2e4034;--accent:#a8d9ad;--accent-text:#162b1e;--logo-line:#1c3624;--badge:#1c2722ef;--tile:#293a2e}
body{background:var(--bg);color:var(--text)}header,aside{background:var(--panel);border-color:var(--border)}.right,details,.item{border-color:var(--border)}button{background:var(--panel);border-color:var(--border);color:var(--text)}button:hover{background:var(--hover)}button.active,#save{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}input,select{background-color:var(--input);border-color:var(--border);color:var(--text)}small,h5,label,p,.empty,#status,.help{color:var(--muted)}.badge{background:var(--badge);border-color:var(--border)}.tile i{background:var(--tile)}.item.selected{color:var(--accent)}.brand{display:flex;align-items:center;gap:11px;min-width:240px;color:var(--accent)}.brand-mark{width:44px;height:44px;flex:none}.brand b{font-size:27px;font-weight:750;letter-spacing:-1.2px;line-height:1}.brand b span{font-weight:450;letter-spacing:-.7px}.brand small{font-size:8px;letter-spacing:1.6px;margin:7px 0 0;color:var(--muted)}.icon{width:19px;height:19px;flex:none;vertical-align:middle}button[data-add=door],button[data-add=window],#undo{display:flex;align-items:center;justify-content:center;gap:8px}.theme-toggle{width:38px;height:38px;display:grid;place-items:center;flex:none;padding:8px}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}:root[data-theme=dark] select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='m1 1 5 5 5-5' fill='none' stroke='%23bdd1bf' stroke-width='1.5'/%3E%3C/svg%3E")}
@media(max-width:1100px){.brand{min-width:190px}.brand b{font-size:25px}.brand-mark{width:39px;height:39px}}
@media(max-width:760px){.brand{min-width:140px;gap:8px}.brand b{font-size:23px}.brand small{font-size:6px;letter-spacing:1px}.brand-mark{width:35px;height:35px}}
/* Keep view controls comfortably separated at every viewport width. */
.viewbar>div{display:flex;align-items:center;flex-wrap:wrap;gap:10px}
@media(max-width:760px){.viewbar>div{gap:8px}}
.tile i{display:grid;place-items:center;width:44px;height:44px;flex:0 0 44px;padding:8px;color:var(--text)}
.tile i svg{display:block;width:28px;height:28px}
@media(max-width:760px){.tile{gap:8px;padding:10px}.tile i{width:38px;height:38px;flex-basis:38px;padding:6px}.tile i svg{width:26px;height:26px}}
.catalog-group{padding:4px 0 15px}.catalog-group summary{display:flex;align-items:center;gap:8px;font-size:13px;min-height:44px}.catalog-group summary::before{content:'›';font-size:21px;line-height:1;color:var(--muted);transition:transform .15s}.catalog-group[open] summary::before{transform:rotate(90deg)}.catalog-group summary span{margin-left:auto;font-size:10px;color:var(--muted)}.catalog-group h5{margin:23px 0 7px}.catalog-group p{line-height:1.6}.add-part{background:var(--hover);border-color:var(--border);min-height:40px}.sources a{display:block;color:var(--accent);font-size:11px;margin:10px 0}.part-info{padding:9px;background:var(--tile);border-radius:6px}.catalog-group select{font-size:12px;padding-right:42px;background-position:right 18px center}
@media(max-width:760px){.catalog-group summary{flex-wrap:wrap}.catalog-group select{font-size:11px;padding-left:7px}.catalog-group summary span{margin-left:20px}}
#catalog-search{margin:0 0 14px;min-height:40px;font-size:11px;padding:9px}.material-row{display:flex;gap:8px;padding:10px 0;border-bottom:1px solid var(--border);font-size:11px}.material-row b{color:var(--accent);flex:none}.material-row small{display:block;font-size:9px;letter-spacing:0;margin-top:5px}.quick-actions{margin:12px 0}.viewbar>div{max-width:100%;justify-content:flex-end}button[aria-pressed=true]:not(.theme-toggle){background:var(--hover);border-color:var(--accent)}button:disabled{opacity:.4;cursor:default}[hidden]{display:none!important}
@media(max-width:760px){.viewbar>div{justify-content:flex-start}.viewbar{align-content:start}.viewbar small{width:100%}.viewbar button{padding:7px 8px;font-size:11px}.quick-actions{flex-wrap:wrap}.quick-actions button{flex-basis:100%}}
.catalog-parent{padding:0;border-bottom:1px solid var(--border)}.catalog-parent>summary,.catalog-branch>summary{display:flex;align-items:center;gap:10px;list-style:none;min-height:52px;font-size:13px;font-weight:650;padding:12px 0}.catalog-parent>summary::-webkit-details-marker,.catalog-branch>summary::-webkit-details-marker{display:none}.catalog-parent>summary::before,.catalog-branch>summary::before{content:'›';font-size:21px;line-height:1;color:var(--muted)}.catalog-parent[open]>summary::before,.catalog-branch[open]>summary::before{transform:rotate(90deg)}.catalog-children{margin:0 0 12px 6px;padding-left:12px;border-left:1px solid var(--border)}.catalog-children>.catalog-group,.catalog-children>.catalog-branch{border-bottom:0;padding:0 0 6px}.catalog-children .catalog-group>summary,.catalog-branch>summary{min-height:42px;font-size:12px;font-weight:500;padding:9px 0}.catalog-group>summary::-webkit-details-marker{display:none}.catalog-children .catalog-group>summary span{font-size:9px}.catalog-branch .catalog-children{margin-left:2px;padding-left:10px}.catalog-parent>summary:hover,.catalog-group>summary:hover,.catalog-branch>summary:hover{color:var(--accent)}
@media(max-width:760px){.catalog-children{padding-left:8px;margin-left:2px}.catalog-parent>summary{font-size:12px}.catalog-branch .catalog-children{padding-left:7px}.catalog-children select{padding-right:38px;background-position:right 18px center}.catalog-children .catalog-group>summary{font-size:11px}}

textarea{width:100%;resize:vertical;margin-top:6px;border:1px solid var(--border);border-radius:6px;background:var(--input);color:var(--text);padding:10px;font:inherit;line-height:1.5}.check-label{display:flex;align-items:center;gap:8px}.check-label input{width:auto;margin:0}.point-row{display:flex;gap:6px;align-items:center}.point-row input{min-width:0}.point-row button{padding:8px}.room-points{max-height:280px;overflow:auto}.point-heading{display:flex;justify-content:space-around;font-size:11px;color:var(--muted)}

dialog{max-width:620px;width:calc(100% - 24px);max-height:90dvh;overflow:auto;background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:14px;padding:24px}dialog::backdrop{background:#0008}.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.dialog-heading h2{margin:0}#share-links input{font-size:11px}#share-conflict{border:1px solid #bc8756;border-radius:8px;padding:12px;margin-top:16px}#share-conflict button{margin:5px}#comment-list{max-height:280px;overflow:auto}#comment-list article{padding:12px 0;border-bottom:1px solid var(--border)}#comment-list small{display:block;font-size:10px;letter-spacing:0;margin-top:4px}#comment-list p{white-space:normal;overflow-wrap:anywhere;color:var(--text)}#sync-status{font-size:11px;color:var(--muted);max-width:230px}button:disabled,input:disabled,select:disabled,textarea:disabled{cursor:default;opacity:.6}[hidden]{display:none!important}@media(max-width:760px){#sync-status{width:100%;max-width:none}dialog{padding:16px}main>aside{width:100%;max-height:700px}.point-row input{width:65px}}

.add-with-icon{display:flex;align-items:center;gap:12px;text-align:left}.add-with-icon>svg{width:26px;height:26px;flex:none}.add-with-icon>span{flex:1}#share-links input{padding-right:10px}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:2px}

.planning-label{display:block;margin-bottom:24px}#snap-feedback{position:absolute;z-index:4;top:74px;left:50%;transform:translateX(-50%);background:#28583ee8;color:#fff;padding:9px 14px;border:1px solid #80c89a;border-radius:8px;font-size:12px;pointer-events:none;max-width:90%;text-align:center}
