
  :root{
    --bg:#f5f6f8;
    --panel:#ffffff;
    --ink:#1f2937;
    --muted:#667085;
    --line:#d9dee7;
    --line2:#eaecf0;
    --accent:#315efb;
    --accent-soft:#eef2ff;
    --warn:#b54708;
    --warn-bg:#fff6e6;
    --danger:#b42318;
    --danger-bg:#fff0ee;
    --ok:#027a48;
    --ok-bg:#ecfdf3;
    --shadow:0 10px 30px rgba(16,24,40,.08);
  }
  *{box-sizing:border-box}
  html,body{height:100%;margin:0;font-family:var(--f-ui);color:var(--ink);background:var(--bg)}
  button,input,select{font:inherit}
  button{cursor:pointer}
  .app{height:100%;display:grid;grid-template-rows:58px 1fr 42px;overflow:hidden}
  .topbar{display:flex;align-items:center;gap:10px;padding:0 14px;background:var(--panel);border-bottom:1px solid var(--line);z-index:20}
  .planner-name{display:flex;align-items:center;gap:9px;font-weight:800;margin-right:6px;white-space:nowrap}
  .title-input{min-width:180px;max-width:280px;border:1px solid transparent;background:transparent;border-radius:0;padding:7px 8px;font-weight:650;color:var(--ink)}
  .title-input:hover,.title-input:focus{border-color:var(--line);outline:none;background:#fff}
  .pill{border:1px solid var(--line);background:#fff;border-radius:0;padding:8px 10px;color:var(--ink)}
  .pill:hover{background:#f8fafc}
  .pill.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:700}
  .pill.ghost{border-color:transparent}
  .pill[disabled]{opacity:.35;cursor:not-allowed}
  .spacer{flex:1}
  .save-state{font-size:12px;color:var(--muted);min-width:48px;text-align:right}
  .workspace{display:grid;grid-template-columns:238px minmax(360px,1fr) 286px;min-height:0}
  .left,.right{background:var(--panel);overflow:auto}
  .left{border-right:1px solid var(--line)}
  .right{border-left:1px solid var(--line)}
  .panel-head{padding:16px 15px 9px}
  .panel-title{font-size:12px;text-transform:uppercase;letter-spacing:.08em;font-weight:800;color:#475467}
  .panel-sub{font-size:12px;color:var(--muted);margin-top:4px}
  .section{padding:10px 12px 14px;border-bottom:1px solid var(--line2)}
  .search{width:100%;border:1px solid var(--line);border-radius:0;padding:9px 10px;outline:none;background:#fff}
  .search:focus{border-color:#98a2ff;box-shadow:0 0 0 3px rgba(49,94,251,.08)}
  .asset-list{display:flex;flex-direction:column;gap:7px;margin-top:9px}
  .asset{display:grid;grid-template-columns:40px 1fr auto;gap:9px;align-items:center;padding:8px;border:1px solid var(--line2);border-radius:0;background:#fff}
  .asset:hover{border-color:#b7c0cf;box-shadow:0 2px 10px rgba(16,24,40,.05)}
  .asset-icon{width:40px;height:34px;border-radius:0;background:#f2f4f7;border:1px solid #e4e7ec;display:grid;place-items:center;font-size:11px;font-weight:800;color:#475467}
  .asset-name{font-size:13px;font-weight:700;line-height:1.2}
  .asset-meta{font-size:11px;color:var(--muted);margin-top:3px}
  .asset-add{border:1px solid var(--line);background:#fff;border-radius:0;padding:5px 7px;font-weight:800;color:#344054}
  .asset-add:hover{background:var(--accent-soft);border-color:#c7d0ff;color:var(--accent)}
  .canvas-shell{position:relative;min-width:0;min-height:0;background:
    radial-gradient(circle at 1px 1px,#d8dde7 1px,transparent 1.2px) 0 0/20px 20px,
    #f7f8fa;overflow:hidden}
  .canvas-wrap{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:24px}
  .workspace svg,.modal svg{width:100%;height:100%;max-width:1050px;max-height:780px;overflow:visible;touch-action:none;user-select:none}
  .canvas-label{position:absolute;left:18px;top:14px;background:rgba(255,255,255,.9);border:1px solid var(--line);border-radius:0;padding:8px 10px;box-shadow:0 3px 12px rgba(16,24,40,.05);font-size:12px;z-index:5}
  .canvas-label strong{font-size:13px}
  .hint{position:absolute;right:18px;top:14px;background:rgba(255,255,255,.9);border:1px solid var(--line);border-radius:0;padding:8px 10px;font-size:11px;color:var(--muted);z-index:5}
  .statusbar{display:flex;align-items:center;gap:10px;padding:0 14px;background:#fff;border-top:1px solid var(--line);font-size:12px;overflow:auto;white-space:nowrap}
  .status-item{display:flex;align-items:center;gap:6px;padding:5px 8px;border-radius:0;background:#f8fafc;border:1px solid #edf0f4}
  .status-dot{width:7px;height:7px;border-radius:0;background:#98a2b3}
  .status-item.ok .status-dot{background:var(--ok)}
  .status-item.warn .status-dot{background:#f79009}
  .status-item.bad .status-dot{background:var(--danger)}
  .right .section{padding:14px}
  .prop-title{font-size:18px;font-weight:800;line-height:1.15}
  .prop-meta{font-size:12px;color:var(--muted);margin-top:5px}
  .group{margin-top:14px}
  .group-label{font-size:11px;font-weight:800;color:#667085;text-transform:uppercase;letter-spacing:.06em;margin-bottom:7px}
  .row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px}
  .field label{font-size:11px;color:var(--muted);display:block;margin-bottom:4px}
  .field input,.field select{width:100%;border:1px solid var(--line);border-radius:0;padding:8px 9px;background:#fff;outline:none}
  .field input:focus,.field select:focus{border-color:#98a2ff;box-shadow:0 0 0 3px rgba(49,94,251,.08)}
  .wide{grid-column:1/-1}
  .action-stack{display:flex;flex-direction:column;gap:7px}
  .action{width:100%;border:1px solid var(--line);background:#fff;border-radius:0;padding:9px 10px;text-align:left;font-weight:650}
  .action:hover{background:#f8fafc}
  .action.primary{background:var(--accent-soft);border-color:#d6dcff;color:#2948c7}
  .action.danger{color:var(--danger)}
  .checkrow{display:flex;align-items:center;gap:8px;font-size:13px;margin:7px 0}
  .empty-state{padding:22px 14px;color:var(--muted);font-size:13px;line-height:1.45}
  .badge{display:inline-flex;align-items:center;border-radius:0;padding:3px 7px;font-size:10px;font-weight:800;background:#f2f4f7;color:#475467}
  .badge.owned{background:var(--ok-bg);color:var(--ok)}
  .badge.considering{background:var(--warn-bg);color:var(--warn)}
  .modal-backdrop{position:fixed;inset:0;background:rgba(16,24,40,.35);display:none;align-items:center;justify-content:center;padding:20px;z-index:100}
  .modal-backdrop.open{display:flex}
  .modal{width:min(920px,96vw);max-height:90vh;overflow:auto;background:#fff;border-radius:0;box-shadow:0 30px 80px rgba(16,24,40,.25);border:1px solid #e4e7ec}
  .modal-head{display:flex;align-items:center;padding:16px 18px;border-bottom:1px solid var(--line2)}
  .modal-head h2{font-size:18px;margin:0}
  .modal-body{padding:18px}
  .layout-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
  .layout-card{border:1px solid var(--line);border-radius:0;padding:12px;background:#fff}
  .layout-card:hover{border-color:#aeb8c7;box-shadow:0 8px 24px rgba(16,24,40,.08)}
  .layout-thumb{height:180px;border:1px solid #e4e7ec;border-radius:0;background:#fafbfc;display:grid;place-items:center;margin-bottom:10px}
  .layout-card h3{font-size:14px;margin:0 0 5px}
  .layout-card p{font-size:12px;color:var(--muted);line-height:1.4;min-height:50px;margin:0 0 10px}
  .layout-card button{width:100%;border:0;background:var(--ink);color:#fff;border-radius:0;padding:9px 10px;font-weight:750}
  .topo-btn{border:1px solid var(--line);background:#fff;padding:7px 9px;border-radius:0;font-size:12px}
  .mode-chip{display:none;align-items:center;gap:6px;background:var(--accent-soft);color:#2948c7;border:1px solid #d6dcff;border-radius:0;padding:7px 10px;font-size:12px;font-weight:700}
  .mode-chip.show{display:flex}

  .layout-availability{display:flex;flex-wrap:wrap;gap:6px}
  .layout-chip{display:inline-flex;align-items:center;gap:5px;padding:6px 8px;border-radius:0;border:1px solid #e4e7ec;background:#fff;font-size:11px;color:#475467}
  .layout-chip.active{background:#eef2ff;border-color:#d6dcff;color:#2948c7}
  .layout-count{font-size:12px;color:var(--muted);margin-bottom:8px;line-height:1.4}
  .layout-tags{display:flex;gap:5px;flex-wrap:wrap;margin:7px 0 10px}
  .layout-tag{font-size:10px;font-weight:800;border-radius:0;padding:3px 6px;background:#f2f4f7;color:#475467}
  .layout-tag.best{background:#ecfdf3;color:#027a48}
  .layout-tag.fit{background:#eef2ff;color:#2948c7}
  .kbd{font-size:10px;padding:1px 5px;border-radius:0;background:#f2f4f7;border:1px solid #e4e7ec;color:#667085}
  .host-drop-tray{
    position:absolute;left:50%;bottom:16px;transform:translateX(-50%);
    display:none;gap:8px;align-items:stretch;z-index:12;
    background:rgba(255,255,255,.96);border:1px solid var(--line);border-radius:0;
    padding:8px;box-shadow:0 12px 32px rgba(16,24,40,.14);max-width:calc(100% - 36px);overflow:auto
  }
  .host-drop-tray.show{display:flex}
  .host-drop{
    min-width:130px;max-width:180px;border:1px solid var(--line);background:#fff;
    border-radius:0;padding:8px 10px;text-align:left;color:var(--ink)
  }
  .host-drop:hover,.host-drop.hot{border-color:#8098ff;background:var(--accent-soft);box-shadow:0 0 0 2px rgba(49,94,251,.08)}
  .host-drop.current{opacity:.45;pointer-events:none}
  .host-drop-name{font-size:12px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .host-drop-meta{font-size:10px;color:var(--muted);margin-top:3px}
  .host-drop-hint{font-size:11px;color:var(--muted);padding:7px 8px;display:flex;align-items:center;white-space:nowrap}
  .library-tools{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:8px}
  .library-empty{font-size:12px;color:var(--muted);line-height:1.45;padding:6px 0}
  .asset.library-asset{grid-template-columns:42px 1fr auto auto}
  .asset-remove{border:0;background:transparent;color:#98a2b3;font-size:16px;padding:4px 5px;border-radius:0}
  .asset-remove:hover{background:#fff0ee;color:var(--danger)}
  .mini-fixture{width:38px;height:30px;display:block}
  .visual-note{font-size:11px;color:var(--muted);margin-top:4px}
  .kit-qty{width:56px;min-width:56px;border:1px solid var(--line);border-radius:0;padding:5px;text-align:center}
  .asset-kit{font-size:11px;color:var(--muted);margin-top:3px}
  .asset .kit-controls{grid-column:1/-1;display:flex;align-items:center;gap:7px;padding-top:5px;border-top:1px solid var(--line2)}
  .asset .kit-controls .asset-kit{margin:0}
  .tool-menu{position:relative}
  .tool-menu summary{list-style:none}
  .tool-menu summary::-webkit-details-marker{display:none}
  .tool-menu-content{position:fixed;right:14px;top:calc(var(--topbar-height,58px) + 5px);z-index:35;width:210px;padding:7px;background:#fff;border:1px solid var(--line);border-radius:0;box-shadow:var(--shadow);display:grid;gap:5px}
  .tool-menu-content button{width:100%}
  .review-sheet{background:#fff;color:#17212f;padding:20px;max-height:75vh;overflow:auto;line-height:1.45}
  #reviewModal .modal{display:flex;flex-direction:column;max-height:calc(100vh - 30px);overflow:hidden}
  #reviewModal .review-sheet{flex:1;min-height:0;max-height:none}
  .review-sheet h3{margin:18px 0 5px}
  .review-sheet table{width:100%;border-collapse:collapse;font-size:12px}
  .review-sheet th,.review-sheet td{padding:6px;border-bottom:1px solid #d9dee7;text-align:left;vertical-align:top}
  .review-sheet svg{max-width:100%;height:auto;border:1px solid var(--line)}
  .zone-row{display:grid;grid-template-columns:1fr auto;gap:6px;border:1px solid var(--line);border-radius:0;padding:7px;margin-top:6px;font-size:12px}
  .setup-actions{display:flex;gap:7px;justify-content:flex-end;padding:10px 20px}
  @media print{body>*{display:none!important}#reviewModal{display:block!important;position:static!important;background:#fff!important;padding:0!important}#reviewModal .modal{display:block!important;width:100%!important;max-width:none!important;max-height:none!important;overflow:visible!important;box-shadow:none!important}#reviewModal .modal-head button,#reviewModal .setup-actions{display:none!important}.review-sheet{max-height:none!important;overflow:visible!important;padding:0!important}@page{margin:12mm}}
  :focus-visible{outline:2px solid var(--accent);outline-offset:2px}
  .topbar{overflow-x:auto}
  .topbar > *{flex-shrink:0}
  .issue-note{margin:9px 0;padding:10px;border-radius:0;background:var(--warn-bg);color:#713b08;font-size:12px;line-height:1.45}
  .status-item.issue{cursor:pointer;font:inherit;color:inherit}
  .status-item.issue:hover{border-color:#f79009;background:var(--warn-bg)}
  .field-error{color:var(--danger);font-size:12px;min-height:1.2em;margin-top:5px}
  .mobile-only{display:none}
  .drawer-close{display:none}
  @media(max-width:980px){
    .workspace{grid-template-columns:210px minmax(320px,1fr) 250px}
    .layout-grid{grid-template-columns:1fr}
  }
  @media(max-width:760px){
    .app{grid-template-rows:auto minmax(0,1fr) 42px}
    .topbar{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;padding:6px;overflow:visible}
    .topbar > *{min-width:0}
    .topbar .spacer{display:none}
    .topbar .planner-name{grid-column:span 2;font-size:13px}
    .topbar .title-input{grid-column:span 2;width:100%;min-width:0;max-width:none}
    #plansBtn,#reviewBtn,#equipmentDrawerBtn,#boothSetupBtn{grid-row:2;font-size:11px;white-space:normal;line-height:1.15;min-height:38px;padding:5px}
    #propertiesDrawerBtn{grid-row:3;font-size:11px;white-space:normal}
    #generateBtn{grid-row:3;grid-column:span 2;font-size:11px}
    #fileMenu{grid-row:3;grid-column:4}
    #fileMenu summary{font-size:11px;text-align:center}
    #modeChip{display:none!important}
    #backBtn{grid-row:4;grid-column:1;font-size:11px}
    #undoBtn{grid-row:4;grid-column:2;font-size:11px}
    #redoBtn{grid-row:4;grid-column:3;font-size:11px}
    #saveState{grid-row:4;grid-column:4;font-size:11px}
    .workspace{grid-template-columns:1fr}
    .left,.right{display:none;position:fixed;z-index:30;top:var(--topbar-height,152px);bottom:42px;width:min(340px,94vw);box-shadow:var(--shadow)}
    .left{left:0}.right{right:0}
    .left.drawer-open,.right.drawer-open{display:block}
    .mobile-only,.drawer-close{display:inline-flex}
    .title-input{max-width:140px;min-width:100px}
    .hint{display:none}
  }

/* Algorithm Adventures Sheet Set shell; SVG equipment symbols retain their shapes. */
:root{--bg:var(--sheet);--panel:var(--field);--ink:var(--navy);--muted:var(--ink3);--line:var(--navy);--line2:var(--minor);--accent:var(--navy);--accent-soft:var(--band);--warn:#8C5B00;--danger:#9B1C1C;--shadow:none}
.app{grid-template-rows:auto auto minmax(0,1fr) 42px}
.topbar{flex-wrap:wrap;padding:8px 14px}.topbar .planner-name{font-family:var(--f-title);text-transform:uppercase}
.panel-title,.prop-title,.modal h2{font-family:var(--f-title);color:var(--navy)}
input[type=number],.save-state,.asset-meta{font-family:var(--f-mono)}
.canvas-shell{background:var(--sheet)}
.pill:hover,.action:hover{background:var(--band)}
.action.primary{background:var(--band);border-color:var(--navy);color:var(--navy)}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
@media(min-width:761px) and (max-width:1100px){.workspace{grid-template-columns:190px minmax(0,1fr) 230px}}
@media(max-width:760px){.app{grid-template-rows:auto auto minmax(0,1fr) 42px}.left,.right{top:var(--topbar-height,230px)}}
