:root{--ink:#181816;--muted:#77736c;--paper:#e6e1d8;--glass:rgba(237,233,225,.78);--line:rgba(24,24,22,.15)}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#d7d0c5;color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}button{font:inherit;color:inherit}#gl{position:fixed;inset:0;width:100%;height:100%;display:block;background:linear-gradient(#cec8bd,#c7c0b5)}
.grain{pointer-events:none;position:fixed;inset:0;opacity:.055;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 140 140' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.3'/%3E%3C/svg%3E");z-index:2}
header{position:fixed;z-index:5;left:28px;right:28px;top:23px;display:flex;justify-content:space-between;align-items:center;letter-spacing:.06em}.brand{font:700 15px/1 ui-sans-serif,sans-serif}.brand span{font-weight:500;color:rgba(24,24,22,.55);margin-left:12px;font-size:10px}.top-actions{display:flex;gap:8px}.top-actions button{border:1px solid var(--line);background:rgba(242,239,232,.52);backdrop-filter:blur(14px);padding:9px 12px;border-radius:999px;font-size:10px;letter-spacing:.12em;cursor:pointer}
.panel{position:fixed;left:28px;top:88px;width:min(330px,calc(100vw - 56px));max-height:calc(100vh - 190px);overflow:auto;z-index:5;padding:22px;border:1px solid rgba(255,255,255,.45);background:var(--glass);backdrop-filter:blur(24px) saturate(120%);border-radius:18px;box-shadow:0 22px 60px rgba(30,26,20,.12);transition:.35s ease}.eyebrow{font-size:9px;letter-spacing:.18em;color:var(--muted);font-weight:700}.panel h1{font:500 28px/1.08 Georgia,"Times New Roman",serif;margin:8px 0 9px;letter-spacing:-.025em}.panel p{font-size:11px;line-height:1.55;color:#6f6b65;margin:0 0 16px}.cards{display:grid;grid-template-columns:1fr 1fr;gap:8px}.card{appearance:none;border:1px solid rgba(24,24,22,.11);background:rgba(255,255,255,.35);text-align:left;border-radius:12px;padding:11px;min-height:74px;cursor:pointer;transition:.2s}.card:hover,.card.active{border-color:rgba(24,24,22,.52);background:rgba(255,255,255,.68);transform:translateY(-1px)}.swatch{height:28px;border-radius:6px;margin-bottom:8px;border:1px solid rgba(0,0,0,.05)}.card strong{display:block;font-size:10px;letter-spacing:.04em}.card small{display:block;color:var(--muted);font-size:8px;margin-top:3px}.controls{margin-top:16px;padding-top:15px;border-top:1px solid var(--line)}.control{margin:12px 0}.control-row{display:flex;justify-content:space-between;align-items:center;font-size:9px;letter-spacing:.08em}.control output{font-variant-numeric:tabular-nums;color:var(--muted)}input[type=range]{width:100%;accent-color:#24231f;margin-top:9px}.seg{display:flex;gap:5px;margin-top:8px}.seg button{flex:1;padding:8px 6px;border:1px solid var(--line);background:rgba(255,255,255,.3);font-size:8px;border-radius:9px;cursor:pointer}.seg button.active{background:#22211e;color:#f6f1e8}.hint{font-size:9px;line-height:1.45;color:var(--muted);margin-top:12px}
.dock{position:fixed;z-index:6;left:50%;bottom:24px;transform:translateX(-50%);display:flex;align-items:center;padding:5px;background:rgba(235,231,223,.82);border:1px solid rgba(255,255,255,.55);box-shadow:0 14px 36px rgba(33,29,23,.15);backdrop-filter:blur(20px);border-radius:999px;white-space:nowrap}.dock-item,.make{border:0;background:transparent;padding:11px 12px;font-size:8px;letter-spacing:.13em;cursor:pointer;border-radius:999px}.dock-item.active{background:rgba(25,24,21,.09)}.make{margin-left:5px;background:#20201d;color:#f4f0e8;padding-left:16px;padding-right:16px}.status{position:fixed;z-index:5;right:29px;bottom:91px;font-size:8px;letter-spacing:.14em;background:rgba(235,231,223,.6);padding:8px 10px;border-radius:999px;backdrop-filter:blur(12px)}.dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:#69735c;margin-right:7px}
.slab-badge{position:fixed;right:28px;top:85px;z-index:5;width:150px;background:rgba(235,231,223,.66);border:1px solid rgba(255,255,255,.45);padding:12px;border-radius:14px;backdrop-filter:blur(18px)}.slab-badge span{display:block;font-size:7px;letter-spacing:.17em;color:var(--muted)}.slab-badge strong{font-size:11px;letter-spacing:.06em}.slab-line{height:4px;border-radius:99px;background:rgba(24,24,22,.12);margin:9px 0 6px;position:relative}.slab-line i{position:absolute;left:50%;top:50%;width:8px;height:8px;border-radius:50%;background:#222;transform:translate(-50%,-50%);transition:left .1s linear}.slab-badge small{font-size:7px;color:var(--muted);font-variant-numeric:tabular-nums}
dialog{border:0;padding:28px;width:min(460px,calc(100vw - 40px));border-radius:20px;background:#ece8e0;color:#1e1d1a;box-shadow:0 30px 100px rgba(0,0,0,.3)}dialog::backdrop{background:rgba(24,22,18,.35);backdrop-filter:blur(8px)}dialog h2{font:500 33px/1 Georgia,serif;margin:10px 0 22px}.close{position:absolute;right:16px;top:13px;border:0;background:transparent;font-size:25px;cursor:pointer}.project-summary{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.1);margin-bottom:16px}.project-summary div{background:#ece8e0;padding:11px}.project-summary span{display:block;font-size:7px;letter-spacing:.15em;color:var(--muted)}.project-summary strong{display:block;margin-top:4px;font-size:11px}.primary{width:100%;border:0;background:#20201d;color:white;padding:13px;border-radius:999px;font-size:9px;letter-spacing:.14em;cursor:pointer}.unsupported{position:fixed;z-index:99;inset:0;background:#ebe6dc;padding:15vh 10vw}
@media(max-width:880px){header{left:16px;right:16px;top:16px}.brand span{display:none}.panel{left:16px;top:63px;width:275px;max-height:55vh;padding:16px}.panel h1{font-size:22px}.slab-badge{display:none}.dock{left:10px;right:10px;transform:none;overflow:auto;justify-content:flex-start;bottom:10px}.dock-item,.make{padding:10px 9px}.status{right:14px;bottom:72px}.cards{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.panel{width:calc(100vw - 32px);max-height:45vh}.top-actions #resetCamera{display:none}.dock-item{font-size:7px}.make{font-size:7px}}
