*{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#f5f4f0;--surface:#fff;--surface-soft:#faf9f6;--border:#e0ddd6;--border-strong:#c8c4ba;
  --text:#1a1a1a;--muted:#77736b;--quiet:#9a968d;--accent:#7a6034;--accent-hover:#654e29;
  --danger:#b3392e;--success:#2e7d55;--warning:#b27622;--radius:10px;
  --font-ui:'Outfit','Noto Sans SC',system-ui,sans-serif;--sidebar:248px;--mobile-bar:56px;
}
html,body{min-height:100%;background:var(--bg);color:var(--text);font-family:var(--font-ui);font-size:14px}
body{overflow:hidden}
button,input,select,textarea{font:inherit}
button{color:inherit}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid color-mix(in srgb,var(--accent) 55%,transparent);outline-offset:2px}
[hidden]{display:none!important}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
#app{display:flex;height:100dvh;overflow:hidden}
.mobile-bar,.sidebar-scrim{display:none}

/* Sidebar */
#sidebar{width:var(--sidebar);min-width:var(--sidebar);background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow-y:auto;z-index:30}
.sidebar-logo{padding:22px 18px 14px;border-bottom:1px solid var(--border)}
.sidebar-logo .brand{display:flex;align-items:center;gap:7px;font-size:17px;font-weight:700;color:var(--accent)}
.brand-mark{flex:none;border-radius:4px}.sidebar-logo .sub{font-size:11px;color:var(--quiet);margin-top:3px}
.sb-section{padding:12px 14px 2px}.sb-btn{display:flex;width:100%;align-items:center;justify-content:center;gap:6px;padding:9px 10px;border-radius:7px;cursor:pointer;font-size:12px;font-weight:600;margin-bottom:7px;transition:background .15s,border-color .15s,color .15s,transform .08s}
.sb-btn:active,.btn:active,.icon-btn:active{transform:translateY(1px)}
.sb-btn svg{width:14px;height:14px}.sb-primary{background:var(--accent);color:#fff;border:1px solid var(--accent)}.sb-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}
.sb-ghost{background:transparent;color:var(--muted);border:1px solid var(--border-strong)}.sb-ghost:hover{border-color:var(--accent);color:var(--accent)}
.sidebar-section{padding:12px 18px 6px;font-size:10px;font-weight:600;color:var(--quiet);letter-spacing:.1em;text-transform:uppercase}
.sidebar-divider{height:1px;background:var(--border);margin:6px 0}.sidebar-spacer{flex:1;min-height:12px}
.sidebar-item{width:100%;border:0;border-left:2px solid transparent;background:transparent;padding:9px 16px;cursor:pointer;font-size:13px;color:var(--muted);display:flex;align-items:center;gap:7px;text-align:left;user-select:none;transition:background .1s,color .1s,border-color .1s}
.sidebar-item:hover{color:var(--text);background:rgba(0,0,0,.035)}.sidebar-item.active{color:var(--accent);border-left-color:var(--accent);background:rgba(122,96,52,.08)}.sidebar-item.drag-over{background:rgba(122,96,52,.14);border-left-color:var(--accent)}
.sidebar-settings{border-left:0;padding-top:12px;padding-bottom:16px}.item-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-del{opacity:0;color:var(--quiet);padding:2px 5px;border-radius:3px;flex:none}.sidebar-item:hover .item-del{opacity:1}.item-del:hover{color:var(--danger)}.sb-icon{width:14px;height:14px;flex:none;opacity:.6}

/* Main editor */
#main{flex:1;overflow-y:auto;padding:28px 32px;min-width:0;overscroll-behavior:contain}
.editor-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:22px;gap:18px}.editor-heading{min-width:0;display:flex;flex-direction:column;gap:5px}.editor-title{font-size:21px;font-weight:700;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.editor-subtitle{font-size:12px;color:var(--muted)}
.save-status{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--quiet)}.save-dot{width:6px;height:6px;border-radius:50%;background:var(--success)}.save-status[data-state="dirty"] .save-dot{background:var(--warning)}.save-status[data-state="saving"] .save-dot{background:var(--warning);animation:pulse 1s ease-in-out infinite}.save-status[data-state="error"]{color:var(--danger)}.save-status[data-state="error"] .save-dot{background:var(--danger)}
@keyframes pulse{50%{opacity:.35}}
.btn-row{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.btn{min-height:34px;padding:7px 13px;border-radius:7px;border:1px solid transparent;cursor:pointer;font-size:12px;font-weight:500;display:inline-flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap;transition:background .15s,border-color .15s,color .15s,transform .08s}.btn svg{width:14px;height:14px}.btn-sm{min-height:29px;padding:5px 10px;font-size:11px}.btn-ghost{background:transparent;border-color:var(--border-strong);color:var(--muted)}.btn-ghost:hover{border-color:var(--text);color:var(--text)}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn-danger{background:transparent;border-color:var(--border-strong);color:var(--danger)}.btn-danger:hover{background:var(--danger);border-color:var(--danger);color:#fff}.btn[disabled]{cursor:not-allowed;opacity:.55;transform:none}
.share-bar{background:rgba(122,96,52,.07);border:1px solid rgba(122,96,52,.24);border-radius:8px;padding:10px 12px;display:flex;align-items:center;gap:10px;margin-bottom:18px}.share-state{font-size:11px;font-weight:600;color:var(--accent);white-space:nowrap}.share-url{flex:1;font:11px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--muted);word-break:break-all}
.tabs{display:flex;border-bottom:1px solid var(--border);margin-bottom:22px;overflow-x:auto}.tab{padding:9px 18px;border:0;border-bottom:2px solid transparent;background:transparent;cursor:pointer;font-size:13px;font-weight:500;color:var(--muted);margin-bottom:-1px;white-space:nowrap}.tab:hover{color:var(--text)}.tab.active{color:var(--accent);border-bottom-color:var(--accent)}.tab-content{display:none}.tab-content.active{display:block}
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:22px;margin-bottom:18px}.card-title{font-size:10px;font-weight:600;color:var(--quiet);letter-spacing:.1em;text-transform:uppercase;margin-bottom:14px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}.form-grid.cols3{grid-template-columns:repeat(3,1fr)}.form-group{display:flex;flex-direction:column;gap:5px}.form-group.full{grid-column:1/-1}.form-group label{font-size:11px;color:var(--muted);font-weight:500}.field-help{font-size:10px;color:var(--quiet);line-height:1.5}
input,select,textarea{width:100%;background:var(--surface-soft);border:1px solid var(--border-strong);border-radius:7px;padding:8px 10px;color:var(--text);font-size:13px;outline:none;transition:border-color .15s,background .15s}input::placeholder,textarea::placeholder{color:#8a867e}input:focus,select:focus,textarea:focus{border-color:var(--accent);background:#fff}textarea{resize:vertical;min-height:64px;line-height:1.6}

/* Item editor */
.col-chips,.palette-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:13px;align-items:center}.col-chip,.palette-chip{min-height:28px;padding:4px 10px;border-radius:7px;font-size:11px;font-weight:500;cursor:pointer;border:1px solid var(--border-strong);color:var(--muted);background:transparent;transition:border .15s,background .15s,color .15s}.col-chip.active{background:var(--accent);color:#fff;border-color:var(--accent)}.col-chip-label{font-size:11px;color:var(--muted);margin-right:3px}.palette-chip{display:flex;align-items:center;gap:2px;padding:4px 8px}.palette-chip.active{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.palette-swatch{width:10px;height:10px;border-radius:2px}
.table-scroll,.gantt-scroll{overflow-x:auto;overscroll-behavior-x:contain}.items-table{width:100%;min-width:760px;border-collapse:collapse}.items-table th{padding:7px 8px;text-align:left;font-size:10px;font-weight:600;color:var(--quiet);letter-spacing:.06em;text-transform:uppercase;border-bottom:1px solid var(--border)}.items-table th.r{text-align:right}.items-table td{padding:3px 5px;border-bottom:1px solid var(--border)}.items-table input,.items-table select{background:transparent;border:1px solid transparent;padding:6px;border-radius:4px;font-size:12px}.items-table input:focus,.items-table select:focus{background:#fff;border-color:var(--accent)}.td-total{text-align:right;font-weight:600;color:var(--accent);padding-right:8px!important;white-space:nowrap}.group-row td{background:#f0ede8;font-weight:700;font-size:12px;padding:6px 8px}.item-del-btn,.item-note-btn{width:26px;height:26px;border-radius:5px;border:1px solid transparent;background:transparent;color:var(--quiet);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.item-del-btn:hover{border-color:var(--danger);color:var(--danger)}.item-note-btn:hover{border-color:var(--accent);color:var(--accent)}.item-del-btn svg,.item-note-btn svg{width:13px;height:13px}.drag-handle{cursor:grab;color:var(--quiet);padding:3px;font-size:15px;user-select:none}.drag-handle:active{cursor:grabbing}tr.dragging{opacity:.4}tr.drag-target-above td{border-top:2px solid var(--accent)}tr.drag-target-below td{border-bottom:2px solid var(--accent)}
.add-item-btn,.add-group-btn{width:100%;padding:9px;border:1px dashed var(--border-strong);border-radius:7px;background:transparent;color:var(--muted);cursor:pointer;font-size:12px;margin-top:8px;display:flex;align-items:center;justify-content:center;gap:5px}.add-item-btn svg,.add-group-btn svg{width:14px;height:14px}.add-item-btn:hover{border-color:var(--accent);color:var(--accent)}.add-group-btn{margin-top:5px}.add-group-btn:hover{border-color:var(--text);color:var(--text)}
.summary-row{display:flex;justify-content:space-between;padding:5px 0;font-size:13px}.summary-row .lbl{color:var(--muted)}.summary-row.total{border-top:1px solid var(--border-strong);margin-top:8px;padding-top:11px;font-size:16px;font-weight:700;color:var(--accent)}.empty-state{padding:24px 12px;text-align:center;color:var(--quiet);font-size:12px}

/* Studio manager */
.studio-manager-row{display:grid;grid-template-columns:minmax(220px,1fr) auto auto auto;gap:8px}.studio-manager-row select{min-width:0}

/* Preview shell */
#preview-resize{width:5px;background:var(--border);cursor:col-resize;flex:none;transition:background .15s}#preview-resize:hover{background:var(--accent)}
#preview-panel{background:#e8e6e0;overflow:auto;display:none;padding:20px;flex:none;width:620px;min-width:620px;overscroll-behavior:contain}#preview-panel.open{display:block}#preview-toolbar{position:sticky;top:-20px;z-index:6;display:flex;align-items:center;gap:6px;margin:0 -4px 14px;padding:12px 4px 8px;background:linear-gradient(#e8e6e0 78%,rgba(232,230,224,0));flex-wrap:wrap}.preview-tool-label{font-size:10px;color:var(--muted);margin-left:4px}.preview-page-count{margin-left:auto;font-size:11px;color:var(--muted);white-space:nowrap}.toolbar-select{width:auto;min-width:96px;height:30px;padding:4px 28px 4px 8px;background:#fff;font-size:11px}.page-theme-chip{height:28px;display:inline-flex;align-items:center;gap:5px;padding:3px 7px;border:1px solid var(--border-strong);border-radius:6px;background:#fff;color:var(--muted);font-size:11px;cursor:pointer}.page-theme-chip:hover{border-color:var(--accent);color:var(--text)}.page-theme-chip.active{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);color:var(--text)}.page-theme-swatches{display:flex;gap:2px}.page-theme-swatch{width:8px;height:8px;border-radius:2px}.preview-close-mobile{display:none}

/* Modal and toast */
.modal-overlay{position:fixed;inset:0;background:rgba(20,20,18,.38);display:flex;align-items:center;justify-content:center;z-index:100;opacity:0;pointer-events:none;transition:opacity .15s}.modal-overlay.show{opacity:1;pointer-events:auto}.modal-box{background:#fff;border-radius:12px;padding:26px;width:380px;max-width:calc(100vw - 32px);box-shadow:0 18px 60px rgba(40,35,25,.18);transform:translateY(8px);transition:transform .15s}.modal-overlay.show .modal-box{transform:translateY(0)}.modal-title{font-size:15px;font-weight:700;margin-bottom:8px}.modal-msg{font-size:13px;color:var(--muted);margin-bottom:18px;line-height:1.6;white-space:pre-line}.modal-input{width:100%;margin-bottom:18px}.modal-btns{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}.toast{position:fixed;bottom:max(24px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%) translateY(20px);background:#22211f;color:#fff;padding:10px 18px;border-radius:8px;font-size:12px;opacity:0;transition:opacity .2s,transform .2s;pointer-events:none;z-index:200;white-space:nowrap;max-width:calc(100vw - 32px);overflow:hidden;text-overflow:ellipsis}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
