:root{--bg:#fffef9;--panel:#f7f6f3;--ink:#1a1a1a;--mute:#6b6b6b;--line:#d9d6cc;--accent:#0b2545;--accent-hover:#13315c;--accent-wash:#eef3fa;--accent-tint:#dce6f4;--danger:#b3261e;--mono:"JetBrains Mono", Menlo, monospace}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--ink);margin:0;font:14px/1.45 Inter,-apple-system,Segoe UI,sans-serif}#root{flex-direction:column;display:flex}body.dragging{-webkit-user-select:none;user-select:none;cursor:grabbing}h2,h3{margin:0;font-size:20px}p{margin:8px 0}.mono{font-family:var(--mono)}.mute{color:var(--mute)}.small{font-size:12px}.strong{font-weight:600}.nowrap{white-space:nowrap}.pad{padding:16px}.grow{flex:1}.prompt{color:var(--accent);font-family:var(--mono);font-weight:600}.error{color:var(--danger)}.sec{font:600 11px/1.4 var(--mono);letter-spacing:.04em;color:var(--ink);margin:18px 0 6px}.sec:before{content:"// ";color:var(--accent)}summary.sec{cursor:pointer;list-style:none}button,select,input,textarea{font:inherit;color:inherit;border-radius:0}button{background:var(--bg);border:1px solid var(--ink);cursor:pointer;padding:5px 10px}button:hover:not(:disabled){background:var(--panel)}button:disabled{opacity:.4;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}button.primary:hover:not(:disabled){background:var(--accent-hover)}button.small{padding:2px 8px;font-size:12px}button.danger{border-color:var(--danger);color:var(--danger)}button.link{color:var(--ink);text-underline-offset:2px;background:0 0;border:0;padding:0;text-decoration:underline}button.link:hover:not(:disabled){color:var(--accent);background:0 0}input,select,textarea{border:1px solid var(--line);background:#fff;min-width:0;padding:5px 7px}input:focus,select:focus,textarea:focus,button:focus-visible{outline:2px solid var(--accent);outline-offset:-1px}input:disabled,select:disabled,textarea:disabled{background:var(--panel);color:var(--ink);opacity:1}textarea{resize:vertical;width:100%}label{color:var(--mute);margin:8px 0;font-size:12px;display:block}label>input,label>select,label>textarea{width:100%;margin-top:2px;font-size:14px;display:block}label.check{color:var(--ink);align-items:center;gap:6px;display:flex}label.check.inline,label.inline{align-items:center;gap:4px;margin:0 8px 0 0;display:inline-flex}label.inline>select{width:auto;margin:0;font-size:13px}label.check>input{width:auto;margin:0}.row{align-items:center;gap:8px;display:flex}.row.between{justify-content:space-between}.row.wrap,.wrap{flex-wrap:wrap}.gap-top{margin-top:12px}.login{background:var(--panel);flex:1;place-items:center;padding:24px;display:grid}.login-box{background:var(--bg);border:2px solid var(--ink);width:100%;max-width:380px;padding:28px}.login-box input{width:100%;margin:4px 0 12px;padding:10px;font-size:16px}.login-box input.code{font:600 28px var(--mono);letter-spacing:8px;text-align:center}.login-box button.primary{width:100%;padding:11px}.brand{color:var(--ink);letter-spacing:-.01em;font-size:17px;font-weight:700;text-decoration:none}.brand span{color:var(--accent)}.brand.big{font-size:26px}.addr{font:12px var(--mono);color:var(--mute);white-space:nowrap}.loading{font-family:var(--mono);color:var(--mute);flex:1;place-items:center;display:grid}.top{border-bottom:2px solid var(--ink);flex-wrap:wrap;align-items:center;gap:16px;padding:8px 14px;display:flex}.top nav{gap:2px;display:flex}.top nav a{color:var(--ink);border-bottom:2px solid #0000;padding:4px 9px;text-decoration:none}.top nav a:hover{background:var(--panel)}.top nav a.on{border-bottom-color:var(--accent);font-weight:600}.top-right{align-items:center;gap:12px;margin-left:auto;display:flex}.search{flex:0 280px;position:relative}.search input{width:100%}.results{z-index:30;background:var(--bg);border:1px solid var(--ink);min-width:300px;position:absolute;top:100%;left:0;right:0;box-shadow:4px 4px #0000001f}.results button{border:0;border-bottom:1px solid var(--line);text-align:left;justify-content:space-between;gap:12px;width:100%;padding:7px 10px;display:flex}.results .none{padding:8px 10px}.body{flex:1;min-height:0;display:flex}main{flex-direction:column;flex:1;min-width:0;display:flex;overflow:auto}.page{max-width:1100px;padding:8px 18px 40px}.movebar,.bulkbar{background:var(--accent-wash);border-bottom:1px solid var(--accent);flex-wrap:wrap;align-items:center;gap:10px;padding:7px 14px;display:flex}.hint{background:var(--accent-wash);border:1px solid var(--accent);margin-bottom:6px;padding:6px 10px}.toolbar{border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:8px 14px;display:flex}.bldg{white-space:nowrap;align-items:baseline;gap:8px;margin-right:4px;display:flex}.tabs{display:flex}.tabs button{border-right-width:0}.tabs button:last-child{border-right-width:1px}.tabs button.on{background:var(--ink);color:var(--bg)}.zoom{display:flex}.zoom button{border-right-width:0;min-width:30px}.zoom button:last-child{border-right-width:1px}.legend{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:4px 14px;padding:6px 14px;font-size:12px;display:flex}.legend i{vertical-align:-1px;border:1px solid #999;width:11px;height:11px;margin-right:5px;display:inline-block}.map-view{flex-direction:column;flex:1;min-height:0;display:flex}.map-body{flex:1;min-height:0;display:flex}.map-main{flex-direction:column;flex:1;min-width:0;padding:8px;display:flex;overflow:auto}.plan{border:1px solid var(--line);touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none;background:#fff;flex:none;width:100%;height:calc(100vh - 128px);min-height:420px}.plan.aiming,.plan.aiming .mark{cursor:crosshair}.mark{cursor:pointer}.plan.grabbed,.plan.grabbed .mark{cursor:grabbing}.mark rect{stroke:#555;stroke-width:.35px}.mark.empty rect{stroke:#aaa;stroke-dasharray:1.2 1;fill-opacity:.55}.mark text{fill:var(--ink);pointer-events:none;font-family:Inter,sans-serif;font-weight:500}.mark text.ghosted{fill:#999;font-family:var(--mono);font-weight:400}.mark.held text{fill:#555;font-style:italic}.mark.held rect{stroke-dasharray:2 1}.mark .tag{fill:#0000;stroke:#0000}.mark:hover .tag{stroke:var(--accent);stroke-width:.8px}.mark:hover rect{stroke:var(--accent);stroke-width:.8px;stroke-dasharray:none}.mark.sel rect,.mark.sel .tag{stroke:var(--accent);stroke-width:1.4px;stroke-dasharray:none}.mark.picked rect{stroke:var(--accent);stroke-width:1.2px;stroke-dasharray:2 1}.mark.pulse rect{animation:.65s ease-in-out 4 pulse}@keyframes pulse{50%{stroke:var(--accent);stroke-width:4px}}.print-head{display:none}.unplaced{border-right:1px solid var(--line);flex-direction:column;flex:none;gap:6px;width:232px;min-height:0;padding:0 10px 10px;display:flex}.unplaced ul{border:1px solid var(--line);background:#fff;flex:1;min-height:80px;margin:0;padding:0;list-style:none;overflow:auto}.unplaced li{border-bottom:1px solid var(--line);cursor:grab;-webkit-user-select:none;user-select:none;align-items:flex-start;gap:6px;padding:5px 7px;display:flex}.unplaced li:hover{background:var(--panel)}.unplaced li.sel{outline:2px solid var(--accent);outline-offset:-2px}.unplaced li.placeholder .who{color:#555;font-style:italic}.unplaced li.none{cursor:default}.unplaced .who{flex-direction:column;min-width:0;display:flex}.unplaced small{font-size:11px;font-style:normal}.unplaced input[type=checkbox]{margin-top:3px}.drop-hint{margin:0}.off-plan{padding:4px 6px 24px}.chip-group{margin-top:10px}.chips{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:4px;margin-top:3px;display:grid}.chip{text-align:left;border:1px dashed #aaa;flex-direction:column;align-items:flex-start;min-height:42px;padding:4px 7px;font-size:12px;display:flex}.chip.taken{border-style:solid;border-color:#555}.chip.sel{outline:2px solid var(--accent);outline-offset:-1px}.chip.pulse{animation:.65s ease-in-out 4 chip-pulse}@keyframes chip-pulse{50%{box-shadow:0 0 0 4px var(--accent)}}.chip .mono{color:var(--mute);font-size:11px}.panel{border-left:2px solid var(--ink);background:var(--bg);flex:none;width:320px;padding:14px 16px 40px;position:relative;overflow:auto}.panel h2{margin:2px 0;font-size:24px}.panel .rename{gap:8px;margin:4px 0 8px;display:grid}.panel .rename input:not([type=checkbox]){font-size:18px;font-weight:700}.panel .close{border:0;padding:2px 8px;font-size:20px;line-height:1;position:absolute;top:8px;right:8px}.combo{margin-top:4px}.combo>input{width:100%}.combo>.check{margin:6px 0}.combo .picks{background:var(--bg);border:1px solid var(--ink);max-height:264px;overflow:auto}.combo .picks>div{border-bottom:1px solid var(--line);cursor:pointer;justify-content:space-between;align-items:baseline;gap:10px;padding:6px 8px;display:flex}.combo .picks>div:last-child{border-bottom:0}.combo .picks>.on{background:var(--accent-wash)}.combo .picks>.none{cursor:default}.combo .picks .mono{white-space:nowrap}.pics{grid-template-columns:1fr 1fr;gap:6px;margin:6px 0 4px;display:grid}.pics button{border-color:var(--line);text-align:left;background:#fff;flex-direction:column;padding:0;display:flex}.pics button:disabled{opacity:1}.pics button:hover:not(:disabled){border-color:var(--ink);background:#fff}.pics button.on{border-color:var(--accent);outline:2px solid var(--accent);outline-offset:-1px}.pics img{object-fit:contain;width:100%;height:84px;display:block}.pics span{border-top:1px solid var(--line);color:var(--mute);padding:3px 6px;font-size:11px}.pics button.on span{color:var(--ink);font-weight:600}.pics small{color:var(--mute);font-size:10px;font-weight:400;display:block}.modal.lookbook{max-width:min(1500px,96vw)}.lookbook a{color:inherit}.lookbook img{border:1px solid var(--line);width:100%;margin-top:10px;display:block}.panel details{border-top:1px solid var(--line);margin-top:18px}.panel details .danger{margin-top:12px}.table-view{flex-direction:column;flex:1;min-height:0;display:flex}.scroll{flex:1;overflow:auto}table.grid{border-collapse:collapse;width:max-content;min-width:100%;font-size:13px}.grid th,.grid td{border-bottom:1px solid var(--line);border-right:1px solid var(--line);text-align:left;vertical-align:middle;padding:4px 8px}.grid th{z-index:2;background:var(--panel);font:600 11px var(--mono);white-space:nowrap;border-bottom:1px solid var(--ink);position:sticky;top:0}.grid th.sortable{cursor:pointer}.grid tr.sel td{background:var(--accent-wash)}.grid tr:hover td{background:#faf8f1}.grid td.edit{padding:0}.grid td.edit input,.grid td.edit select{background:0 0;border:0;width:100%;min-width:84px;padding:5px 8px}.grid td.tick,.grid th.tick{text-align:center;width:28px}.grid .stick{background:var(--bg);z-index:1;position:sticky;left:0}.grid th.stick{z-index:3;background:var(--panel)}.grid .na{color:#ccc;padding:0 8px}.sheet:focus{outline:none}.sheet td{white-space:nowrap;text-overflow:ellipsis;cursor:cell;max-width:340px;scroll-margin:30px 0 0 96px;position:relative;overflow:hidden}.sheet td.tick{cursor:default}.sheet td.note{min-width:220px}.sheet tr td.in{background:var(--accent-tint)}.sheet td.cur{outline:2px solid var(--mute);outline-offset:-2px}.sheet:focus td.cur,.sheet td.cur:focus-within{outline-color:var(--accent)}.sheet tr td.cur{background:#fff}.sheet td .ed{width:100%;height:100%;font:inherit;background:#fff;border:0;padding:4px 8px;position:absolute;inset:0}.sheet td .ed:focus{outline:2px solid var(--accent);outline-offset:-2px}.grid.plain{width:100%}.grid.plain.narrow{width:auto;min-width:0}.grid tr.undone td{color:var(--mute);text-decoration:line-through}.grid tr.undone td .mute{text-decoration:none;display:inline-block}.sum-block{margin:14px 0}.sum-block h3{margin-bottom:4px;font-size:15px}.notes{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:0 28px;display:grid}.notes ul{margin:0;padding-left:18px}.modal-back{z-index:50;background:#1a1a1a59;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--bg);border:2px solid var(--ink);width:100%;max-width:400px;max-height:90vh;padding:8px 22px 20px;overflow:auto;box-shadow:6px 6px #00000026}.modal.wide{max-width:1040px}.modal .row{margin-top:14px}.import .grid td{white-space:normal}.badge{font:600 11px var(--mono);border:1px solid var(--line);white-space:nowrap;color:var(--mute);padding:1px 6px;display:inline-block}.badge.new{border-color:var(--ink);color:var(--ink)}.badge.change{border-color:var(--accent);color:var(--accent)}.badge.problem{border-color:var(--danger);color:var(--danger)}.ghost{z-index:100;pointer-events:none;background:var(--ink);color:var(--bg);padding:3px 9px;font-size:12px;font-weight:600;position:fixed}.tour{z-index:80;position:fixed;inset:0}.tour-hole{pointer-events:none;outline:2px solid var(--accent);transition:left .15s,top .15s,width .15s,height .15s;position:fixed;box-shadow:0 0 0 200vmax #1a1a1a80}.tour-card{background:var(--bg);border:2px solid var(--ink);width:320px;max-width:calc(100vw - 24px);padding:14px 16px;position:fixed}.tour-card .sec{margin-top:0}.tour-card p{margin:0 0 14px;line-height:1.45}@media print{.tour{display:none}}.toast{z-index:90;background:var(--ink);color:var(--bg);cursor:pointer;max-width:90vw;padding:9px 16px;position:fixed;bottom:18px;left:50%;transform:translate(-50%)}@media (width<=820px){.unplaced,.last,.who{display:none}.panel{z-index:40;border-left:0;border-top:2px solid var(--ink);width:auto;max-height:60vh;position:fixed;bottom:0;left:0;right:0}.search{flex-basis:100%;order:5}.toolbar{flex-wrap:wrap}}@media print{@page{size:landscape;margin:.4in}html,body,#root{height:auto}.top,.toolbar,.legend,.unplaced,.panel,.movebar,.toast,.off-plan,.hint{display:none!important}.print-head{font:600 12px var(--mono);margin-bottom:6px;display:block}.body,main,.map-view,.map-body,.map-main{padding:0;display:block;overflow:visible}.plan{border:0;width:100%;height:6.9in;min-height:0}.mark.sel rect,.mark.picked rect{stroke:#555;stroke-width:.35px}}.facts{grid-template-columns:max-content 1fr;gap:6px 16px;margin:12px 0 4px;display:grid}.facts dt{color:var(--mute);padding-top:1px;font-size:12px}.facts dd{margin:0}.note-text{overflow-wrap:anywhere}.grid td .note-text{white-space:normal;max-width:320px}
