:root{color-scheme:light;--bg:#f7f4ee;--paper:#fffdf8;--ink:#26241f;--muted:#686258;--line:#e3dbce;--orange:#a74120;--orange-2:#f4ded1;--dark:#232521;--dark-2:#1d201e;--bed:#eca569;--kitchen:#80c1a2;--storage:#d8be8a;--shower:#80b5d4;--seat:#baa6d7;--danger:#f58379}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.48 system-ui,-apple-system,"Segoe UI",sans-serif}
button,input,select{font:inherit}
button{cursor:pointer}
a{color:var(--orange)}
button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,a:focus-visible{outline:3px solid #b6613b;outline-offset:3px}
[hidden]{display:none!important}
.skip{position:absolute;left:16px;top:-80px;z-index:5;background:white;padding:8px}
.skip:focus{top:8px}
.wrap{width:min(1440px,calc(100% - 80px));margin-inline:auto}
.mast{border-bottom:1px solid var(--line);background:#fffaf2}
.mast-inner{min-height:76px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.brand{display:flex;align-items:center;gap:12px}
.brand img{display:block}
.brand strong,.brand span{display:block}
.brand strong{font-size:20px;line-height:1.1;letter-spacing:-.045em}
.brand span,.model-tag,.eyebrow,.stats div>span,.board-unit{font:700 10px/1.3 ui-monospace,"Cascadia Mono",monospace;letter-spacing:.13em}
.brand span{color:var(--muted);margin-top:5px}
.model-tag{border:1px solid var(--line);border-radius:100px;color:#594f44;padding:8px 12px}
.intro{display:flex;align-items:end;justify-content:space-between;gap:30px;margin:36px 0 25px}
.eyebrow{color:var(--orange);display:flex;gap:7px;align-items:center;margin:0 0 9px}
.eyebrow span{width:7px;height:7px;border-radius:50%;background:currentColor}
h1,h2,p{margin-top:0}
h1{font-size:clamp(38px,5vw,69px);line-height:1.04;letter-spacing:-.069em;margin-bottom:10px;font-weight:760}
.intro-text{color:var(--muted);margin:0;max-width:55ch;font-size:16px}
.stats{display:flex;flex-shrink:0;gap:0;padding-bottom:3px}
.stats div{padding:0 17px;border-left:1px solid var(--line)}
.stats div:last-child{padding-right:0}
.stats div>span,.stats strong{display:block}
.stats div>span{color:var(--muted);margin-bottom:5px}
.stats strong{font-size:21px;letter-spacing:-.03em;white-space:nowrap}
.stats small{color:var(--muted);font-size:11px;font-weight:600}
.variants{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}
.variants button{display:flex;align-items:center;gap:14px;text-align:left;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:13px;padding:12px 16px;min-height:70px}
.variants button[aria-pressed=true]{background:#fcf0e7;border-color:#c9815e;box-shadow:inset 0 0 0 1px #c9815e}
.variant-no{display:grid;place-items:center;flex:none;width:35px;height:35px;border-radius:8px;background:#eee7dc;color:#675a50;font:700 13px ui-monospace,monospace}
.variants button[aria-pressed=true] .variant-no{background:var(--orange);color:white}
.variants button strong,.variants button small{display:block}
.variants button strong{font-size:16px;letter-spacing:-.025em}
.variants button small{color:var(--muted);font-size:12px;margin-top:2px}
.indicator{margin-left:auto;width:11px;height:11px;flex:none;border:1px solid #9a8d7d;border-radius:50%}
.variants button[aria-pressed=true] .indicator{background:var(--orange);border-color:var(--orange);box-shadow:inset 0 0 0 2px #fcf0e7}
.workspace{display:grid;grid-template-columns:minmax(0,1fr) minmax(295px,330px);gap:16px;align-items:stretch}
.board{
  --plan-panel:var(--dark-2);--plan-canvas:#222520;--plan-edge:#34372f;--plan-ink:#faf0de;
  --plan-caption:#d6ccba;--plan-accent:#f3a66b;--plan-cab:#2e332c;--plan-floor:#293027;
  --plan-wall:#c8a27c;--plan-door:#ffc184;--plan-detail:#b5a58b;--plan-grid:#d4caab1c;
  --plan-label:#f5ead5;--module-label:#fbf1e2;--plan-selected:#fff0d4;
  --plan-conflict:#fa8e81;--plan-selected-conflict:#ffd3b8;--plan-gap:#b1d9ff;--plan-passage:#91e0cb;
  --bed-fill:#513c2e;--bed-line:var(--bed);--kitchen-fill:#284637;--kitchen-line:var(--kitchen);
  --storage-fill:#48402e;--storage-line:var(--storage);--shower-fill:#2b424e;--shower-line:var(--shower);
  --seat-fill:#433a50;--seat-line:var(--seat);
  background:var(--plan-panel);color:var(--plan-ink);border:1px solid var(--plan-edge);
  border-radius:18px;min-width:0;display:flex;flex-direction:column;overflow:hidden
}
body[data-theme="light"]{--bg:#fff;--paper:#fff}
[data-theme="light"] .mast{background:#fff}
[data-theme="light"] .board{
  --plan-panel:#fff;--plan-canvas:#fff;--plan-edge:#e2dad0;--plan-ink:var(--ink);
  --plan-caption:var(--muted);--plan-accent:var(--orange);--plan-cab:#f4f2ee;--plan-floor:#fff;
  --plan-wall:#5b4e40;--plan-door:#a95124;--plan-detail:#817568;--plan-grid:#756c5c30;
  --plan-label:#574c40;--module-label:#2b2721;--plan-selected:#29251f;
  --plan-conflict:#b9362e;--plan-selected-conflict:#85261f;--plan-gap:#295e89;--plan-passage:#116c61;
  --bed-fill:#fae5d2;--bed-line:#935222;--kitchen-fill:#e1f1e6;--kitchen-line:#2d6848;
  --storage-fill:#f5ebd6;--storage-line:#73592f;--shower-fill:#e1f0f8;--shower-line:#356886;
  --seat-fill:#ede6f4;--seat-line:#634f80
}
.board-head,.board-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:16px 21px}
.board-head{border-bottom:1px solid var(--plan-edge);flex-wrap:wrap}
.board-actions{display:flex;gap:6px;flex-wrap:wrap}
.board-eyebrow{color:var(--plan-accent)}
h2{margin-bottom:0;font-size:24px;line-height:1.16;letter-spacing:-.043em}
.dim-toggle{border:1px solid #595d50;border-radius:8px;padding:7px 10px;background:transparent;color:#d1cabc;display:flex;align-items:center;gap:7px;font-size:12px}
.dim-toggle[aria-pressed=true]{color:#ffe0bc;background:#353027;border-color:#795f45}
[data-theme="light"] .dim-toggle{color:#574c40;border-color:#c9bcad}
[data-theme="light"] .dim-toggle[aria-pressed=true]{color:#793619;background:#fbefe6;border-color:#b98565}
.dim-toggle svg{width:17px;height:17px;stroke:currentColor;stroke-width:1.6}
.canvas{overflow:auto;flex:1;display:flex;align-items:center;min-height:365px;scrollbar-color:#a58a6c var(--plan-canvas)}
#plan{width:100%;min-width:660px;display:block;background:var(--plan-canvas)}
.view-modes,.scene-controls{display:flex;gap:5px}
.view-modes{padding-right:5px;border-right:1px solid var(--plan-edge)}
.scene-panel{flex:1;background:var(--plan-canvas)}
#scene-3d{display:block;width:100%;height:clamp(315px,42vw,560px);touch-action:none;cursor:grab}
#scene-3d:active{cursor:grabbing}
#scene-3d:focus-visible{outline:2px solid var(--plan-accent);outline-offset:-2px}
.scene-controls{flex-wrap:wrap;padding:8px 14px 0}
.scene-panel p,.scene-error{margin:0;padding:9px 14px 12px;font-size:12px;color:var(--plan-caption)}
.board-foot{border-top:1px solid var(--plan-edge);color:var(--plan-caption);flex-wrap:wrap}
.legend{display:flex;gap:8px 15px;flex-wrap:wrap}
.legend span{display:flex;align-items:center;gap:5px;font-size:11px;white-space:nowrap}
.dot{width:8px;height:8px;display:inline-block;border-radius:2px;background:currentColor}
.dot.bed{color:var(--bed-line)}.dot.kitchen{color:var(--kitchen-line)}.dot.storage{color:var(--storage-line)}.dot.shower{color:var(--shower-line)}.dot.seat{color:var(--seat-line)}.dot.danger{color:var(--plan-conflict)}
.dot.gap{color:var(--plan-gap)}
.dot.passage{color:var(--plan-passage)}
.arch-key{width:19px;border-top:2px dashed var(--plan-detail)}
.board-unit{color:var(--plan-caption);font-size:9px}
.scroll-note{display:none;color:var(--plan-caption);font-size:11px;margin:0;padding:6px 14px}
.checks,.panel{background:var(--paper);border:1px solid var(--line);border-radius:18px;padding:18px 20px}
.checks{min-width:0}
.routes{display:grid;gap:7px;margin-top:14px}
.route{display:flex;justify-content:space-between;align-items:center;gap:7px;padding:8px 10px;border:1px solid #e9e1d5;background:#f8f4eb;border-radius:8px;font-size:12px}
.route strong{white-space:nowrap;font-size:13px;font-variant-numeric:tabular-nums}
.route.good strong{color:#256343}.route.warn strong{color:#855015}.route.danger strong{color:#a1362d}
.route.info strong{color:#345c70}
.route-note{font-size:11px;color:var(--muted);margin:6px 0 10px}
.alerts{display:grid;gap:6px;max-height:325px;overflow:auto;scrollbar-color:#b9a996 transparent}
.alert{display:flex;gap:8px;background:#f8f0dd;border:1px solid #eee0bf;border-radius:8px;padding:8px 9px;color:#563911}
.alert.danger{background:#fbeae4;border-color:#f2d3cb;color:#7b3328}
.alert.good{background:#e9f3ea;border-color:#d6e9d9;color:#2c5639}
.alert.info{background:#edf4f6;border-color:#dbe8ec;color:#345565}
.alert b,.alert small{display:block}
.alert b{font-size:12px;line-height:1.3}
.alert small{font-size:11px;line-height:1.35;margin-top:2px}
.alert .mark{flex:none;width:16px;height:16px;text-align:center;border-radius:50%;background:#ffffffa0;font-weight:800;font-size:10px;line-height:16px}
.tools{display:grid;grid-template-columns:1fr 1.55fr;gap:16px;margin-top:16px}
.panel header{margin-bottom:13px}
.panel-help,.editor p,.reference small,.notes,.footer{font-size:13px;color:var(--muted)}
.panel-help{margin:-3px 0 12px}
.scenarios{display:grid;gap:0}
.scenarios label{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid #eee8dd;font-size:14px;cursor:pointer}
.scenarios input{appearance:none;width:35px;height:20px;border:1px solid #a79a89;border-radius:20px;margin:0;background:#e8e0d5;position:relative;cursor:pointer;flex:none}
.scenarios input::before{content:"";position:absolute;width:14px;height:14px;top:2px;left:2px;border-radius:50%;background:#fffdf8;box-shadow:0 1px 3px #0004}
.scenarios input:checked{background:var(--orange);border-color:var(--orange)}
.scenarios input:checked::before{left:17px}
.reference{margin-top:15px}
.reference label,.measure-fields label,.position label{display:block;font-size:12px;font-weight:650}
.reference small{display:block;margin-top:6px}
select,input[type=number]{border:1px solid #cfc5b7;border-radius:7px;background:#fffdfa;color:var(--ink);min-height:36px;padding:5px 8px}
select{max-width:100%;width:100%;margin-top:5px}
.module-list{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.module-list button,.button{border:1px solid #d9cec0;border-radius:8px;padding:6px 9px;background:#faf6ee;color:var(--ink);font-size:12px}
.module-list button[aria-pressed=true]{background:var(--orange-2);border-color:#bb7656;color:#6d2c16;font-weight:700}
.editor{background:#f8f4ec;border:1px solid #ece3d6;padding:11px 13px;border-radius:10px}
.editor-head{display:flex;gap:10px;align-items:baseline;justify-content:space-between}
.editor-head span{color:#714b35;font-size:13px;font-weight:650;white-space:nowrap}
.editor p{margin:5px 0 9px}
.position{display:flex;gap:9px;align-items:end;flex-wrap:wrap}
.position input,.measure-fields input{display:block;margin-top:3px;width:100%}
.position label{width:92px}
.module-sizes,.orientation{margin-bottom:10px}
.module-sizes label{width:136px;max-width:100%}
.orientation{align-items:center}
#module-angle{min-width:38px;color:var(--muted);font-size:13px;font-variant-numeric:tabular-nums}
.button.subtle{min-height:36px}
.layout-transfer{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 12px}
.layout-transfer a{display:inline-flex;align-items:center;text-decoration:none}
.layout-transfer small{color:var(--muted)}
.layout-sync{flex-basis:100%;display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.primary-save{background:#9d3e20;color:#fff;border-color:#9d3e20;font-weight:750}
[data-offline] :is(.layout-transfer,.reference,#rotate-module,#reset-geometry,#reset-module,#align-night-seat,#reset-cabin-seats,#reset-variant){display:none}
[data-offline] .shape{cursor:pointer;touch-action:auto}
[data-offline] input[readonly]{background:#f4f0e8}
[data-public-view] :is(.layout-transfer,.reference,#rotate-module,#reset-geometry,#reset-module,#align-night-seat,#reset-cabin-seats,#reset-variant){display:none}
[data-public-view] .shape{cursor:pointer;touch-action:auto}
[data-public-view] input[readonly]{background:#f4f0e8}
[data-public-view] .footer span:last-child{display:none}
.published-view-note{padding:12px 16px;margin:0 0 14px;border:1px solid #e5d4b8;border-radius:10px;background:#fbf4e6;line-height:1.55;color:#5b4937;font-size:13px}
.button:hover,.module-list button:hover{border-color:#b37557}
input:disabled{opacity:.62}
.measures{margin-top:16px}
.measures summary{cursor:pointer}
.measures summary span{display:inline-block;vertical-align:top;margin-left:5px}
.measures summary strong,.measures summary small{display:block}
.measures summary small{color:var(--muted);font-size:12px;margin-top:2px}
.measures-body{padding-top:15px}
.measure-fields{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.cabin-specs{max-width:720px;margin-top:18px}
.cabin-specs table{width:100%;border-collapse:collapse;text-align:left;font-size:13px}
.cabin-specs caption{text-align:left;font-weight:700;margin-bottom:4px}
.cabin-specs th,.cabin-specs td{border-bottom:1px solid var(--line);padding:7px clamp(3px,1vw,8px);vertical-align:top;overflow-wrap:anywhere}
.cabin-specs td{width:18%}
.cabin-specs input{display:block;width:100%;min-width:0;max-width:110px}
.cabin-specs small{display:block;color:var(--muted);margin-top:3px}
.cabin-specs .panel-help{margin:8px 0 0}
.cabin-positions{display:flex;flex-wrap:wrap;gap:8px 14px;margin-top:8px}
.cabin-positions fieldset{border:1px solid var(--line);border-radius:8px;margin:0;padding:5px 8px 8px;min-width:0}
.cabin-positions legend{font-size:12px;font-weight:650}
.cabin-specs .button{margin-top:8px}
.notes{margin:12px 0}
.notes p{margin:0 0 6px}
.footer{display:flex;justify-content:space-between;gap:12px;margin:20px 0 28px}
.shape{cursor:grab;outline:none;touch-action:none}
.shape:active{cursor:grabbing}
.shape.attached{cursor:pointer;touch-action:auto}
.shape:focus .outline,.shape.selected .outline{stroke:var(--plan-selected);stroke-width:8}
.shape.conflict .outline{stroke:var(--plan-conflict);stroke-width:6}
.shape.selected.conflict .outline,.shape.conflict:focus .outline{stroke:var(--plan-selected-conflict);stroke-width:8}
.shape text,.shape .interior{pointer-events:none}
@media(max-width:1120px){.wrap{width:calc(100% - 36px)}.workspace{grid-template-columns:minmax(0,1fr) 282px}.board-head,.board-foot{padding-inline:15px}.checks,.panel{padding-inline:15px}}
@media(max-width:970px){.workspace{grid-template-columns:1fr}.checks .alerts{grid-template-columns:repeat(2,minmax(0,1fr));max-height:none}.routes{grid-template-columns:1fr 1fr}.canvas{min-height:0}}
@media(max-width:680px){.wrap{width:calc(100% - 24px)}.mast-inner{min-height:60px}.brand img{width:34px;height:34px}.brand strong{font-size:18px}.brand span,.model-tag{font-size:8px}.model-tag{padding:6px;letter-spacing:.03em}.intro{display:block;margin:23px 0 16px}.intro-text{font-size:14px}.stats{margin-top:16px}.stats div{padding:0 13px}.stats div:first-child{padding-left:0;border:0}.stats strong{font-size:17px}.stats div>span{font-size:9px}.variants{gap:7px;margin-bottom:10px}.variants button{min-height:66px;padding:7px;gap:7px}.variant-no{width:25px;height:26px;font-size:10px}.variants button strong{font-size:13px;line-height:1.2}.variants button small{font-size:10px;line-height:1.2}.indicator{display:none}.workspace,.tools{gap:10px}.board-head,.board-foot{padding:10px 12px}.board,.checks,.panel{border-radius:12px}.board h2{font-size:20px}.scroll-note{display:block}.tools{grid-template-columns:1fr;margin-top:10px}.measures{margin-top:10px}.measure-fields{grid-template-columns:1fr 1fr}.footer{display:block;font-size:11px}.footer span{display:block}.checks .alerts{grid-template-columns:1fr}}
@media(prefers-reduced-motion:no-preference){button,input,select{transition:background-color .14s,border-color .14s}}
.reference-plan{margin:0 0 12px;padding:8px 0;color:var(--muted);font-size:13px}
.reference-plan img{display:block;width:min(100%,940px);height:auto;border:1px solid var(--line);border-radius:10px;margin-top:10px}

button:disabled{cursor:default;opacity:.55}

.home-link{margin-left:auto;color:inherit;text-decoration:none;font-weight:700;font-size:13px}.freshness-note{padding:10px 14px;border-radius:10px;background:#f7f0db;color:#615943;font-size:13px}
@media(max-width:680px){.home-link{font-size:11px}.model-tag{display:none}}
