:root{color:#201b17;background:#efe8df;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--ink: #201b17;--muted: #6a625a;--paper: #fffaf2;--paper-strong: #ffffff;--line: #d8cdbf;--accent: #146c63;--accent-strong: #0c4d47;--coral: #d45d4c}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}#boot-error{display:none;margin:16px;padding:12px 14px;border:1px solid #f0b7aa;border-radius:8px;background:#fff2ee;color:#8c2f25}button,input{font:inherit}button{border:1px solid var(--line);background:var(--paper-strong);color:var(--ink);cursor:pointer}button:hover{border-color:#bba996;transform:translateY(-1px)}.app-shell{min-height:100vh;padding:20px;background:linear-gradient(135deg,rgba(20,108,99,.1),transparent 34%),linear-gradient(315deg,rgba(212,93,76,.16),transparent 36%),#efe8df}.workspace{display:grid;grid-template-columns:minmax(278px,340px) minmax(0,1fr);gap:16px;min-height:calc(100vh - 40px);min-width:0}.workspace>*{min-width:0;max-width:100%}.control-panel{display:flex;flex-direction:column;gap:18px;padding:18px;border:1px solid var(--line);border-radius:8px;background:#fffaf2e6;box-shadow:0 22px 60px #4a3c2d29;width:100%}.brand-row{display:flex;align-items:center;gap:12px;min-width:0}.brand-mark{display:grid;place-items:center;width:44px;height:44px;flex:0 0 44px;border-radius:8px;background:var(--accent);color:#fff}h1{margin:0;font-size:1.45rem;line-height:1.1;letter-spacing:0}p{margin:4px 0 0;color:var(--muted);font-size:.92rem}.upload-zone{position:relative;display:flex;align-items:center;gap:10px;min-height:58px;padding:12px;border:1px dashed #b9a997;border-radius:8px;background:#fffdf8;color:var(--accent-strong);cursor:pointer}.upload-zone span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-zone input{position:absolute;inset:0;opacity:0;cursor:pointer}.button-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.button-row button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;border-radius:8px}.toggle-row{display:grid;grid-template-columns:auto minmax(0,1fr) 46px;align-items:center;gap:10px;min-height:44px;padding:0 2px;color:var(--ink)}.switch{position:relative;justify-self:end;width:46px;height:26px}.switch input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0}.switch span{position:absolute;inset:0;border-radius:999px;background:#cabfb2;transition:.18s ease}.switch span:before{content:"";position:absolute;top:4px;left:4px;width:18px;height:18px;border-radius:50%;background:#fff;transition:.18s ease}.switch input:checked+span{background:var(--accent)}.switch input:checked+span:before{transform:translate(20px)}.sliders{display:flex;flex-direction:column;gap:15px}.slider-row{display:grid;gap:8px}.slider-heading{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;color:#403934;font-size:.94rem}.slider-heading strong{min-width:2ch;color:var(--accent-strong);font-size:.9rem;text-align:right}input[type=range]{width:100%;accent-color:var(--accent)}.stage{position:relative;min-height:560px;overflow:hidden;border:1px solid var(--line);border-radius:8px;background:#f7f4ef;box-shadow:0 22px 60px #4a3c2d29}.viewport{position:absolute;inset:0}.viewport canvas{display:block;width:100%;height:100%}.stage-toolbar{position:absolute;left:14px;right:14px;bottom:14px;display:flex;justify-content:space-between;gap:10px;padding:10px 12px;border:1px solid rgba(216,205,191,.82);border-radius:8px;background:#fffaf2d6;color:#473f38;font-size:.9rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.error-banner{position:absolute;top:14px;left:14px;right:14px;padding:11px 12px;border-radius:8px;background:#fff2ee;color:#8c2f25;border:1px solid #f0b7aa}@media(max-width:860px){.app-shell{padding:12px}.workspace{grid-template-columns:1fr;min-height:auto}.control-panel{order:2}.stage{min-height:62vh}}@media(max-width:560px){.stage-toolbar{flex-direction:column}.toggle-row{grid-template-columns:auto auto minmax(0,1fr)}.switch{justify-self:start}.brand-row{align-items:flex-start}h1{font-size:1.28rem}}
