:root{--brown:#7b3b14;--green:#056b03;--blue:#00bfff;--bg:#f5f7fb;--bg-grad:radial-gradient(circle at 20% 0%, #fbf0fb 0%, #eef2fb 40%, #d9eaf8 100%);--surface:#fff;--text:#1f2a24;--muted:#5d6b63;--border:#dfe6e2;--accent:var(--green);--link:#007fae;--success:#056b03;--warning:#9a5b00;--error:#b3261e;--shadow:0 6px 24px #1f2a2414;--font-body:"EB Garamond", Garamond, Georgia, serif;--font-head:"Archivo", system-ui, sans-serif;--font-script:"Oleo Script", cursive}:root[data-theme=dark]{--bg:#121614;--bg-grad:radial-gradient(circle at 20% 0%, #1d1a1f 0%, #141a17 45%, #0f1c24 100%);--surface:#1b211e;--text:#e7ede9;--muted:#9fb0a6;--border:#2c3631;--accent:#3fb13c;--link:#5fd3ff;--success:#6fd46b;--warning:#f2b45a;--error:#ff8a80;--shadow:0 6px 24px #00000059}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);background-image:var(--bg-grad);color:var(--text);font-family:var(--font-body);background-attachment:fixed;flex-direction:column;min-height:100vh;font-size:19px;line-height:1.6;transition:background-color .2s,color .2s;display:flex}#root{flex-direction:column;flex:1;display:flex}main{flex:1;width:100%;max-width:1120px;margin:0 auto;padding:24px 16px 48px}h1,h2,h3,.nav,.btn,th{font-family:var(--font-head)}h1{letter-spacing:-.03em;margin:.2em 0;font-size:clamp(2.2rem,6vw,3.4rem)}h2{align-items:center;gap:.5em;margin:0 0 .4em;font-size:1.15rem;display:flex}h3{margin:1.2em 0 .5em;font-size:1rem}a{color:var(--link)}code{background:color-mix(in srgb, var(--border) 60%, transparent);border-radius:4px;padding:.1em .35em;font-size:.8em}.muted{color:var(--muted)}.fineprint{color:var(--muted);word-break:break-all;margin-top:1em;font-size:.8rem}.script{font-family:var(--font-script);font-weight:400}.error-text{color:var(--error);font-family:var(--font-script);font-size:1.1rem}.warning-text{color:var(--warning)}.nav{z-index:10;background:color-mix(in srgb, var(--surface) 85%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);align-items:center;gap:16px;padding:12px 16px;display:flex;position:sticky;top:0}.nav-brand{color:var(--text);align-items:center;gap:8px;font-size:1.1rem;font-weight:800;text-decoration:none;display:flex}.nav-brand img{border-radius:6px}.nav-links{gap:4px;margin-right:auto;display:flex}.nav-links a{color:var(--muted);border-radius:8px;padding:6px 10px;font-size:.95rem;font-weight:600;text-decoration:none}.nav-links a.active,.nav-links a:hover{color:var(--accent);background:color-mix(in srgb, var(--accent) 10%, transparent)}.env-pill{text-transform:uppercase;letter-spacing:.08em;background:color-mix(in srgb, var(--blue) 20%, transparent);color:var(--link);border-radius:999px;padding:3px 8px;font-size:.7rem;font-weight:800}.env-development{background:color-mix(in srgb, var(--brown) 18%, transparent);color:var(--brown)}:root[data-theme=dark] .env-development{color:#e0a47a}.theme-toggle{font:600 .9rem var(--font-head);color:var(--text);background:var(--surface);border:1px solid var(--border);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:6px 12px;display:flex}.btn{border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:10px;align-items:center;gap:8px;padding:10px 16px;font-size:.95rem;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{border-color:var(--accent)}.btn-primary{background:var(--green);border-color:var(--green);color:#fff}.btn-primary:hover{background:#045502}.btn-google{color:#1f1f1f;background:#fff;border-color:#dadce0}.btn-row{flex-wrap:wrap;gap:8px;display:flex}.hero{text-align:center;padding:12px 0 8px}.hero-logo{filter:drop-shadow(0 8px 18px #1f2a241f);width:min(150px,40vw);height:auto}.lede{max-width:620px;color:var(--muted);margin:.5em auto 1.5em;font-size:1.2rem}.hero-actions{justify-content:center;gap:12px;display:flex}.narrow .lede{margin-left:0}.grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:16px;min-width:0;padding:20px}.card p{margin:0 0 1em}.card-wide{grid-column:1/-1}.profile{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.profile img{border-radius:50%}.profile>div{flex:1;min-width:160px}.db-source{margin-top:8px}.dot{border-radius:50%;width:10px;height:10px;margin-right:4px;display:inline-block}.dot-ok{background:var(--success)}.dot-bad{background:var(--error)}.table-wrap{border:1px solid var(--border);border-radius:12px;overflow-x:auto}table{border-collapse:collapse;width:100%;color:inherit;font-size:.95rem}th,td{color:inherit;text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:8px 12px}td:last-child{white-space:normal;min-width:220px}th{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:.8rem}tr:last-child td{border-bottom:none}.swatch{vertical-align:-1px;border-radius:3px;width:12px;height:12px;margin-right:8px;display:inline-block}meter{vertical-align:middle;width:60px}.error-page{text-align:center;padding:48px 0}.error-code{font:700 clamp(4rem, 15vw, 7rem)/1 var(--font-script);color:var(--brown);margin:0}:root[data-theme=dark] .error-code{color:#e0a47a}.error-page h1{color:var(--green);font-size:clamp(1.6rem,5vw,2.4rem)}:root[data-theme=dark] .error-page h1{color:var(--accent)}#toasts{z-index:50;pointer-events:none;flex-direction:column;align-items:flex-end;gap:8px;display:flex;position:fixed;bottom:16px;left:16px;right:16px}.toast{pointer-events:auto;background:var(--surface);border:1px solid var(--border);max-width:420px;box-shadow:var(--shadow);font-family:var(--font-script);cursor:pointer;border-left:5px solid;border-radius:12px;align-items:center;gap:10px;padding:12px 16px;font-size:1.1rem;display:flex}.toast-success{border-left-color:var(--success);color:var(--success)}.toast-warning{border-left-color:var(--warning);color:var(--warning)}.toast-error{border-left-color:var(--error);color:var(--error)}.footer{text-align:center;color:var(--muted);border-top:1px solid var(--border);padding:20px 16px;font-size:.9rem}@media (width<=720px){body{font-size:17px}.grid{grid-template-columns:1fr}.theme-toggle span{display:none}.nav{gap:8px}}.session-box{border:1px solid var(--border);background:color-mix(in srgb, var(--blue) 7%, transparent);border-radius:12px;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px 16px;margin:16px 0 4px;padding:12px 16px;font-size:.95rem;display:grid}.session-box .muted{font-family:var(--font-head);text-transform:uppercase;letter-spacing:.05em;font-size:.72rem;display:block}table.kv th{text-transform:none;letter-spacing:0;white-space:nowrap;width:34%;font-size:.85rem}table.kv td{white-space:normal;word-break:break-word}.raw{margin-top:12px}.raw summary{cursor:pointer;font-family:var(--font-head);color:var(--muted);font-size:.9rem}.raw pre{background:color-mix(in srgb, var(--border) 40%, transparent);border-radius:10px;padding:12px;font-size:.78rem;overflow-x:auto}.small{font-size:.85rem}.num{text-align:right;font-variant-numeric:tabular-nums}.success-text{color:var(--success);font-family:var(--font-script);font-size:1.15rem}.spacer{flex:1}ul.plain{margin:0 0 1em;padding:0;list-style:none}ul.plain li{padding:4px 0}.narrow{max-width:760px;margin:0 auto}.prose h2{margin-top:1.6em;font-size:1.25rem}.prose li{margin-bottom:.4em}.btn-small{padding:6px 12px;font-size:.85rem}.icon-btn{border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:8px;padding:5px 8px}.account-chip{font-family:var(--font-head);align-items:center;gap:8px;font-size:.85rem;display:flex}.account-chip img{border-radius:50%}.account-name{font-family:var(--font-head);color:var(--muted);text-overflow:ellipsis;white-space:nowrap;max-width:160px;font-size:.85rem;overflow:hidden}.type-pill{font-family:var(--font-head);text-transform:uppercase;letter-spacing:.06em;border-radius:999px;padding:2px 7px;font-size:.68rem;font-weight:800}.type-member{background:color-mix(in srgb, var(--blue) 18%, transparent);color:var(--link)}.type-client{background:color-mix(in srgb, var(--brown) 18%, transparent);color:var(--brown)}.type-staff{background:color-mix(in srgb, var(--green) 18%, transparent);color:var(--green)}.type-admin{color:var(--error);background:#b3261e29}:root[data-theme=dark] .type-client{color:#e0a47a}:root[data-theme=dark] .type-staff{color:var(--accent)}.provider-list{flex-direction:column;gap:12px;max-width:380px;display:flex}.btn-provider{min-height:52px;font:600 1rem var(--font-head);color:#fff;border:none;border-radius:12px;align-items:center;gap:14px;padding:6px 16px 6px 6px;text-decoration:none;transition:transform .12s,box-shadow .12s,filter .12s;display:flex;position:relative;box-shadow:0 2px 6px #0000001f,inset 0 -2px #0000001f}a.btn-provider:hover{filter:brightness(1.06);transform:translateY(-1px);box-shadow:0 6px 16px #0000002e,inset 0 -2px #0000001f}a.btn-provider:active{transform:translateY(0)}.provider-logo{border-radius:9px;flex:none;place-items:center;width:40px;height:40px;display:grid}.provider-logo svg{width:22px;height:22px}.provider-text{flex:1}.btn-google{background:linear-gradient(#4a8df8 0%,#1a73e8 100%)}.btn-google .provider-logo{background:#fff}.btn-x{background:#0f0f0f;box-shadow:0 1px 3px #0000002e}a.btn-x:hover{filter:none;background:#1c1c1c;box-shadow:0 4px 12px #00000038}.btn-x .provider-logo{color:#fff;background:0 0}:root[data-theme=dark] .btn-x{box-shadow:inset 0 0 0 1px #ffffff24}.btn-x .provider-logo svg{width:19px;height:19px}.btn-github{background:linear-gradient(135deg,#a371f7 0%,#8250df 55%,#6639ba 100%)}.btn-github .provider-logo{color:#fff;background:#24292f}.btn-apple{background:linear-gradient(135deg,#5b6b8c 0%,#2c3a5a 55%,#1b2238 100%)}.btn-apple .provider-logo{color:#fff;background:#000}.btn-provider.is-soon,.btn-provider.is-disabled{cursor:not-allowed;opacity:.6;box-shadow:none}.btn-provider.is-disabled small{color:#ffffffbf;font-size:.8rem;font-weight:400}.soon-badge{font:800 .66rem var(--font-head);text-transform:uppercase;letter-spacing:.08em;color:#fff;background:linear-gradient(90deg,#00bfff,#3fb13c);border-radius:999px;padding:4px 8px}.tabs{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:6px;margin:8px 0 20px;display:flex}.tabs button{font:600 .95rem var(--font-head);color:var(--muted);cursor:pointer;background:0 0;border:none;border-bottom:3px solid #0000;align-items:center;gap:8px;padding:10px 14px;display:flex}.tabs button.active{color:var(--accent);border-bottom-color:var(--accent)}.footer{flex-direction:column;align-items:center;gap:6px;display:flex}.footer-links{font-family:var(--font-head);flex-wrap:wrap;justify-content:center;gap:16px;font-size:.85rem;display:flex}.footer-links a{color:var(--muted)}.footer-fine{text-align:center;max-width:820px;margin:4px auto 0;line-height:1.5}.legal-logo{margin-bottom:8px;display:block}.internal{flex-direction:column;min-height:100vh;display:flex}.internal main{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:24px 16px 48px}.internal-tag{font:800 .7rem var(--font-head);text-transform:uppercase;letter-spacing:.1em;background:var(--brown);color:#fff;border-radius:6px;padding:3px 8px}.internal-gate{margin-top:40px}.stat-row{flex-wrap:wrap;gap:16px;display:flex}.stat{flex-direction:column;align-items:center;gap:6px;min-width:70px;display:flex}.stat-value{font:800 2rem var(--font-head)}.perm-table input{width:18px;height:18px;accent-color:var(--green)}.verdicts{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px;display:grid}.verdicts label{font:600 .85rem var(--font-head);flex-direction:column;gap:4px;display:flex}.verdicts select,.card select{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;padding:6px 8px;font-size:.9rem}.big-score{font:800 3rem var(--font-head);margin:0}tr.inactive{opacity:.5}@media (width<=720px){.account-name{display:none}.nav{flex-wrap:wrap}}.perm-table th.num,.perm-table td.num{text-align:center;width:90px}.perm-table td:last-child{min-width:0}.member-card .profile{margin-bottom:4px}.member-name{font-family:var(--font-head);font-size:1.2rem}.member-meta{margin-top:6px}.btn-logout{border-color:color-mix(in srgb, var(--error) 45%, transparent);color:var(--error)}.btn-logout:hover{background:color-mix(in srgb, var(--error) 10%, transparent);border-color:var(--error)}.member-card table.kv{margin-top:12px}a.account-name{text-decoration:none}.btn-provider.is-soon{opacity:1}.btn-provider.is-soon .provider-logo,.btn-provider.is-soon .provider-text{opacity:.55}.btn-signin{background:linear-gradient(135deg, #2f9e2c 0%, var(--green) 100%);color:#fff;border-color:#0000;box-shadow:0 2px 6px #056b0340}.btn-signin:hover{filter:brightness(1.08);border-color:#0000}main.wide{max-width:none;padding:0}.tagline{font:700 clamp(1.6rem, 4vw, 2.4rem) var(--font-script);color:var(--brown);letter-spacing:.01em;margin:-.2em 0 .2em}:root[data-theme=dark] .tagline{color:#e0a47a}.hero .lede{font-style:normal}.center{text-align:center}.row{align-items:center;gap:8px;display:flex}.row.wrap{flex-wrap:wrap}.row.between{justify-content:space-between}.notice{background:color-mix(in srgb, var(--blue) 10%, var(--surface));border:1px solid color-mix(in srgb, var(--blue) 35%, transparent);border-radius:12px;padding:10px 14px;font-size:.95rem}.danger{color:var(--error)}input:not([type=checkbox]):not([type=radio]),select,textarea{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;min-width:0;padding:7px 10px;font-size:.95rem}textarea{width:100%;min-height:80px}.field{flex-direction:column;gap:4px;margin:8px 0;display:flex}.field>span{font:600 .78rem var(--font-head);color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.check{align-items:center;gap:6px;font-size:.9rem;display:inline-flex}.seg{border:1px solid var(--border);background:var(--surface);border-radius:10px;display:inline-flex;overflow:hidden}.seg button{font:600 .85rem var(--font-head);color:var(--muted);cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;padding:7px 11px;display:inline-flex}.seg button+button{border-left:1px solid var(--border)}.seg button.is-on{background:color-mix(in srgb, var(--green) 14%, transparent);color:var(--accent)}.chips{flex-wrap:wrap;gap:6px;margin:6px 0;display:flex}.chip{font:600 .8rem var(--font-head);border:1px solid var(--border);cursor:pointer;background:var(--surface);color:var(--text);border-radius:999px;align-items:center;gap:4px;padding:4px 10px;display:inline-flex}.chip input{display:none}.chip.is-on{background:color-mix(in srgb, var(--blue) 18%, transparent);border-color:var(--blue)}.lvl{font:800 .62rem var(--font-head);text-transform:uppercase;letter-spacing:.06em;border-radius:6px;padding:2px 6px}.lvl-layer{background:color-mix(in srgb, var(--green) 18%, transparent);color:var(--accent)}.lvl-component{background:color-mix(in srgb, var(--blue) 20%, transparent);color:var(--link)}.lvl-item{background:color-mix(in srgb, var(--brown) 18%, transparent);color:var(--brown)}.lvl-subitem{color:#9c36b5;background:#9c36b529}:root[data-theme=dark] .lvl-item{color:#e0a47a}.nav-empty{justify-content:flex-end;min-height:57px}.nav-public{justify-content:space-between;min-height:57px}.toast-action{color:var(--text);border:1px solid var(--border);font:600 .8rem var(--font-head);cursor:pointer;background:#fff;border-radius:8px;margin-left:10px;padding:4px 10px}.crash{padding-top:10vh}.login-menu{position:relative}.login-pop{z-index:40;background:var(--surface);border:1px solid var(--border);width:min(320px,100vw - 32px);box-shadow:var(--shadow);border-radius:14px;flex-direction:column;gap:10px;padding:14px;display:flex;position:absolute;top:calc(100% + 8px);right:0}.login-pop-title{font:700 .9rem var(--font-head);color:var(--text);margin:0}.login-pop .provider-list{gap:8px}.login-pop .fineprint{margin:0}button.btn-provider{cursor:pointer;font:inherit;width:100%}button.btn-provider:hover{filter:brightness(1.06);transform:translateY(-1px);box-shadow:0 6px 16px #0000002e,inset 0 -2px #0000001f}.signin-done{padding-top:15vh}.demos{margin:24px 0 40px}.demos-first{margin-top:8px}.demo-stage{min-width:0}.player.has-writeup{grid-template-columns:minmax(200px,280px) minmax(0,1fr);align-items:start;gap:20px;display:grid}.player-main{flex-direction:column;gap:8px;min-width:0;display:flex}.player-writeup h2{margin:0 0 8px;font-size:1.3rem}.writeup p{margin:0 0 10px}.writeup ul{margin:0 0 10px;padding-left:18px}.current-contents{background:color-mix(in srgb, var(--green) 7%, var(--surface));border:1px solid color-mix(in srgb, var(--green) 30%, var(--border));border-radius:10px;margin:0 0 12px;padding:10px 12px}.current-contents ul{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.current-contents li{flex-wrap:wrap;align-items:baseline;gap:4px 10px;font-size:1.12rem;font-weight:600;line-height:1.3;display:flex}.current-contents li small{font-size:.78rem;font-weight:400}.current-contents .fineprint{margin:6px 0 0}.popup-add-label{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 6px;font-size:.78rem}.popup-modal.has-contents .option{gap:8px;padding:5px 10px;font-size:.86rem}.popup-modal.has-contents .form-fields .field{font-size:.88rem}.popup-modal.is-locked .option{cursor:default;opacity:.75}.view-only-note{color:var(--muted);align-items:baseline;gap:6px;margin:10px 0 0;font-size:.85rem;display:flex}.current-contents h3,.saved-answers h3{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 6px;font-size:.85rem}.saved-answers{border-top:1px solid var(--border);margin-top:16px;padding-top:12px}.answer-list{flex-direction:column;gap:8px;margin:8px 0 0;padding:0;list-style:none;display:flex}.answer-list li{border:1px solid var(--border);border-radius:10px;justify-content:space-between;align-items:flex-start;gap:8px;padding:8px 10px;display:flex}.answer-list li>form{width:100%}.answer-form{flex-direction:column;gap:6px;margin:8px 0;display:flex}.share-dialog{flex-direction:column;gap:14px;max-width:520px;display:flex}.share-dialog section h3{margin:0 0 4px;font-size:1rem}.share-link input,.share-dialog form input{flex:1;min-width:0}.people{flex-direction:column;gap:6px;margin:8px 0 0;padding:0;list-style:none;display:flex}.people li{border:1px solid var(--border);border-radius:10px;justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;display:flex}.shared-view .page-head{align-items:center;gap:10px;display:flex}@media (width<=760px){.player.has-writeup{grid-template-columns:1fr}}.credits{color:var(--muted);margin-top:8px;font-size:.8rem}.credits summary{cursor:pointer;font-family:var(--font-head)}.credits ul{margin:6px 0 0;padding-left:18px}.credits a{color:var(--muted)}.demo-tabs{flex-wrap:wrap;justify-content:center;gap:6px;margin-bottom:16px;display:flex}.demo-tabs button{font:600 .9rem var(--font-head);border:1px solid var(--border);background:var(--surface);color:var(--muted);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:7px 12px;display:inline-flex}.demo-tabs button.is-on{color:#fff;background:var(--green);border-color:var(--green)}.demo-body{grid-template-columns:260px minmax(0,1fr);align-items:start;gap:20px;display:grid}.demo-intro h2{font-size:1.4rem}.how{padding-left:0;font-size:.95rem;list-style:none}.how li{margin-bottom:8px}.steps{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;display:grid}.step-n{background:var(--brown);color:#fff;border-radius:50%;place-items:center;width:26px;height:26px;margin-right:6px;font-size:.85rem;display:inline-grid}.player{flex-direction:column;gap:8px;min-width:0;display:flex}.player-bar{align-items:center;gap:8px;min-height:36px;display:flex}.crumbs{flex-wrap:wrap;flex:1;align-items:center;gap:4px;min-width:0;font-size:.9rem;display:flex}.crumbs .fa-chevron-right{color:var(--muted);margin:0 2px;font-size:.65rem}.crumb{cursor:pointer;color:var(--text);font:inherit;background:0 0;border:none;border-radius:6px;align-items:center;gap:6px;padding:2px 4px;display:inline-flex}.crumb:hover{background:color-mix(in srgb, var(--border) 50%, transparent)}.stage{border:1px solid var(--border);background:var(--surface);width:100%;box-shadow:var(--shadow);border-radius:14px;position:relative;overflow:hidden}.stage-inner{transition:transform .45s cubic-bezier(.2,.7,.2,1);position:absolute;inset:0}.stage-inner>img{object-fit:fill;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;inset:0}.stage-empty{color:var(--muted);font-family:var(--font-head);place-items:center;display:grid;position:absolute;inset:0}.stage-svg{width:100%;height:100%;position:absolute;inset:0}.region{fill:#0000;stroke:#0000;stroke-width:3px;vector-effect:non-scaling-stroke;cursor:pointer;outline:none;transition:fill .15s,stroke .15s}.region.is-active,.region:focus-visible{fill:color-mix(in srgb, var(--blue) 22%, transparent);stroke:var(--blue)}.region.is-selected{fill:#f59f0040;stroke:#f59f00;stroke-width:3px}.editing .region{cursor:default;fill:color-mix(in srgb, var(--blue) 12%, transparent);stroke:color-mix(in srgb, var(--blue) 70%, transparent)}.editing .tool-select .region{cursor:pointer}.lens-ring{fill:none;stroke:#fff;stroke-width:4px;vector-effect:non-scaling-stroke;filter:drop-shadow(0 2px 6px #0006)}.region-tip{color:#fff;font:600 .82rem var(--font-head);white-space:nowrap;pointer-events:none;text-overflow:ellipsis;background:#1f2a24;border-radius:8px;max-width:320px;padding:5px 9px;position:absolute;overflow:hidden;transform:translate(-50%,calc(-100% - 8px))}.player-notice{font-family:var(--font-script);color:var(--success);margin:0}.modal-backdrop{z-index:40;background:#0f141280;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border-radius:16px;width:min(440px,100%);max-height:90vh;padding:20px;overflow:auto;box-shadow:0 20px 60px #0000004d}.modal-wide{width:min(900px,100%)}.modal-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.modal-actions{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.option-list{flex-direction:column;gap:6px;display:flex}.option{border:1px solid var(--border);cursor:pointer;border-radius:10px;align-items:center;gap:10px;padding:8px 12px;display:flex}.option.is-on{border-color:var(--green);background:color-mix(in srgb, var(--green) 8%, transparent)}.form-fields input{width:100%}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.usage{font:600 .85rem var(--font-head);color:var(--muted);flex-wrap:wrap;align-items:center;gap:12px;display:flex}.new-thing{margin:16px 0 24px}.new-thing input{flex:1;min-width:200px}.thing-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;display:grid}.thing-title{font:700 1.05rem var(--font-head);color:var(--text);align-items:center;gap:8px;text-decoration:none;display:flex}.thing-card.is-archived{opacity:.6}.editor{flex-direction:column;height:calc(100vh - 62px);display:flex}.toolbar{border-bottom:1px solid var(--border);background:var(--surface);flex-wrap:wrap;align-items:center;gap:8px;padding:8px 12px;display:flex}.title-input{width:220px;font:700 1rem var(--font-head)!important;background:0 0!important;border-color:#0000!important}.title-input:focus{border-color:var(--border)!important}.tools button span{display:none}@media (width>=1100px){.tools button span{display:inline}}.save-state{font:600 .8rem var(--font-head);color:var(--muted);margin-left:auto}.save-error{color:var(--error)}.menu{position:relative}.menu summary{list-style:none}.menu summary::-webkit-details-marker{display:none}.menu-list{z-index:30;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;flex-direction:column;min-width:220px;padding:6px;display:flex;position:absolute;top:calc(100% + 6px);right:0}.menu-list button{text-align:left;color:var(--text);font:600 .88rem var(--font-head);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:space-between;gap:8px;padding:7px 10px;display:flex}.menu-list button:hover:not(:disabled){background:color-mix(in srgb, var(--border) 50%, transparent)}.menu-list button:disabled{color:var(--muted);cursor:not-allowed}.menu-list em{text-transform:uppercase;font-size:.7rem;font-style:normal}.menu-list hr{border:none;border-top:1px solid var(--border);width:100%;margin:4px 0}.workshop{flex:1;grid-template-columns:260px minmax(0,1fr) 300px;min-height:0;display:grid}.panel{border-right:1px solid var(--border);background:color-mix(in srgb, var(--surface) 70%, transparent);padding:12px;overflow:auto}.workshop>.panel:last-child{border-right:none;border-left:1px solid var(--border)}.panel-head{justify-content:space-between;align-items:center;gap:6px;display:flex}.panel h2{font-size:1rem}.panel h3{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:.85rem}.panel h4{font:700 .85rem var(--font-head);margin:14px 0 4px}.panel select,.panel input:not([type=checkbox]){width:100%}.panel .row input,.panel .row select{flex:1;width:auto}.workspace{background:color-mix(in srgb, var(--border) 25%, transparent);flex-direction:column;gap:8px;padding:16px;display:flex;position:relative;overflow:auto}.canvas-wrap{flex-direction:column;gap:8px;display:flex}.canvas-hint{font-family:var(--font-head);color:var(--muted);flex-wrap:wrap;align-items:center;gap:10px;min-height:34px;font-size:.9rem;display:flex}.stage-svg.tool-circle,.stage-svg.tool-square,.stage-svg.tool-rect,.stage-svg.tool-poly{cursor:crosshair;touch-action:none}.draft{fill:#f59f002e;stroke:#f59f00;stroke-width:2.5px;stroke-dasharray:8 6;pointer-events:none}.draft-line{fill:none;stroke:#f59f00;stroke-width:2.5px;stroke-dasharray:6 5;pointer-events:none}.draft-point{fill:#f59f00;stroke:#fff;stroke-width:2px;vector-effect:non-scaling-stroke;pointer-events:none}.stage-svg.tool-select{touch-action:none}.editing .tool-select .region.is-selected,.stage-svg.over-draft{cursor:move}.stage-svg.is-dragging,.stage-svg.is-dragging .region{cursor:grabbing}.tree-list,.tree-list ul{margin:0;padding:0;list-style:none}.tree-node,.tree-region{text-align:left;width:100%;color:var(--text);cursor:pointer;font:600 .88rem var(--font-head);background:0 0;border:none;border-radius:8px;align-items:center;gap:6px;padding:6px 8px;display:flex}.tree-node:hover,.tree-region:hover{background:color-mix(in srgb, var(--border) 50%, transparent)}.tree-node.is-current{background:color-mix(in srgb, var(--green) 12%, transparent)}.tree-region{color:var(--muted);font-size:.84rem;font-weight:400}.tree-region.is-selected{color:#b06d00;background:#f59f0024}.tree-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.tree-count{color:var(--muted);background:color-mix(in srgb, var(--border) 60%, transparent);border-radius:999px;padding:0 7px;font-size:.72rem}.tree-view{color:var(--link);font-size:.7rem}.tree-action{margin-left:auto;font-size:.7rem}.tree-legend{word-break:normal;margin-top:16px}.image-pick{flex-wrap:wrap;gap:6px;display:flex}.popup-editor{border:1px solid var(--border);border-radius:12px;margin-top:10px;padding:10px}.popup-editor legend{font:700 .8rem var(--font-head);padding:0 6px}.popup-editor .row{margin:4px 0}.rule{border:1px dashed var(--border);border-radius:10px;margin:6px 0;padding:8px}.viewcube{z-index:5;flex-direction:column;align-items:center;gap:6px;display:flex;position:absolute;bottom:24px;right:24px}.viewcube-scene{perspective:400px;width:84px;height:84px}.viewcube-cube{width:84px;height:84px;transform-style:preserve-3d;transition:transform .5s;position:relative}.viewcube-face{border:1px solid var(--border);background:color-mix(in srgb, var(--surface) 92%, transparent);width:84px;height:84px;color:var(--text);font:700 .72rem var(--font-head);text-transform:uppercase;cursor:pointer;backface-visibility:hidden;background:color-mix(in srgb, var(--face,var(--surface)) 28%, var(--surface));position:absolute}.viewcube-face.is-on{background:var(--face,var(--green));color:#fff}.face-front{transform:translateZ(42px)}.face-back{transform:rotateY(180deg)translateZ(42px)}.face-right{transform:rotateY(90deg)translateZ(42px)}.face-left{transform:rotateY(-90deg)translateZ(42px)}.face-top{transform:rotateX(90deg)translateZ(42px)}.face-bottom{transform:rotateX(-90deg)translateZ(42px)}.viewcube-buttons{gap:2px;display:flex}.viewcube-buttons button{min-width:22px;height:22px;font:700 .65rem var(--font-head);border:1px solid var(--border);background:var(--surface);color:var(--muted);cursor:pointer;border-radius:5px;padding:0;padding:0 3px!important}.viewcube-buttons button.is-on{background:var(--green);color:#fff}.object-3d{flex-direction:column;gap:8px;display:flex}.object-flip{pointer-events:none;will-change:transform;position:absolute;inset:0}.object-face{pointer-events:none;position:absolute;overflow:visible}.object-face .region{pointer-events:visiblePainted}.object-gap{pointer-events:none}.turn-btn{z-index:3;color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#1016139e;border:1px solid #ffffff8c;border-radius:50%;place-items:center;width:40px;height:40px;font-size:1rem;transition:background .15s,transform .15s;display:grid;position:absolute;transform:translate(-50%,-50%);box-shadow:0 2px 10px #0000004d}.turn-btn:hover:not(:disabled),.turn-btn:focus-visible{background:var(--green);outline:none;transform:translate(-50%,-50%)scale(1.08)}.turn-btn:active:not(:disabled){transform:translate(-50%,-50%)scale(.94)}.turn-btn:disabled{opacity:.35;cursor:not-allowed}.object-bar{justify-content:center;align-items:center;gap:16px;padding:4px 0;display:flex}.object-bar-text{flex-direction:column;gap:2px;max-width:360px;display:flex}.object-bar-text strong{font-family:var(--font-head);align-items:center;gap:6px;display:inline-flex}.object-bar-text small{color:var(--muted)}.face-dot{border-radius:3px;width:12px;height:12px;display:inline-block}.facecube{width:var(--cube);height:var(--cube);perspective:320px;margin:calc(var(--cube) * .72) calc(var(--cube) * .62) calc(var(--cube) * .5);z-index:1;pointer-events:none;flex:none;position:relative}.facecube-cube{width:100%;height:100%;transform-style:preserve-3d;transition:transform .38s cubic-bezier(.3,.7,.3,1);position:relative}.facecube-face{color:#fff;font:700 .62rem var(--font-head);text-transform:uppercase;letter-spacing:.02em;backface-visibility:hidden;text-shadow:0 1px 2px #00000059;border:1px solid #00000047;border-radius:4px;place-items:center;display:grid;position:absolute;inset:0}.cf-front{transform:translateZ(calc(var(--cube) / 2))}.cf-back{transform:rotateY(180deg) translateZ(calc(var(--cube) / 2))}.cf-right{transform:rotateY(90deg) translateZ(calc(var(--cube) / 2))}.cf-left{transform:rotateY(-90deg) translateZ(calc(var(--cube) / 2))}.cf-top{transform:rotateX(90deg) translateZ(calc(var(--cube) / 2))}.cf-bottom{transform:rotateX(-90deg) translateZ(calc(var(--cube) / 2))}.facecube-flag{--pole:calc(var(--cube) * .78);--flag-w:calc(var(--cube) * .8);--flag-h:calc(var(--cube) * .42);width:0;height:0;transform-style:preserve-3d;transform:translateZ(calc(var(--cube) / 2)) rotateX(-20deg);position:absolute;top:0;left:50%}.flag-pole{left:-1px;top:calc(var(--pole) * -1);width:2px;height:calc(var(--pole) + 2px);background:linear-gradient(90deg,#8d9390,#e9ecea 45%,#7c827f);border-radius:2px;position:absolute}.flag-pole:before{content:"";background:#d8b23a;border-radius:50%;width:6px;height:6px;position:absolute;top:-4px;left:-2px}.flag-cloth{left:1px;top:calc(var(--pole) * -1);width:var(--flag-w);height:var(--flag-h);transform-style:preserve-3d;transform-origin:0;animation:2.6s ease-in-out infinite flag-flutter;position:absolute}.flag-strip{width:calc(100% / var(--strips));height:100%;transform-style:preserve-3d;animation:1.1s ease-in-out infinite flag-ripple;animation-delay:calc(var(--i) * -.16s);position:absolute;top:0}.flag-side{backface-visibility:hidden;animation:1.1s ease-in-out infinite flag-shade;animation-delay:inherit;background:#fff;position:absolute;inset:0 -.5px;overflow:hidden;box-shadow:inset 0 -1px #0000001f,inset 0 1px #00000014}.flag-back{transform:rotateY(180deg)}.flag-side b{width:calc(100% * var(--strips));height:100%;font:800 calc(var(--cube) * .15) var(--font-head);text-transform:uppercase;letter-spacing:.04em;color:#2f6fde;place-items:center;display:grid;position:absolute;top:0}.flag-strip:last-child .flag-side{border-radius:0 3px 3px 0}@keyframes flag-flutter{0%,to{transform:rotateY(-14deg)rotate(1deg)}50%{transform:rotateY(12deg)rotate(-2deg)}}@keyframes flag-ripple{0%,to{transform:translateZ(calc(var(--cube) * -.035)) translateY(-.5px)}50%{transform:translateZ(calc(var(--cube) * .035)) translateY(.5px)}}@keyframes flag-shade{0%,to{background:#f1f3f2}50%{background:#fff}}@media (prefers-reduced-motion:reduce){.facecube-cube{transition:none}.flag-cloth,.flag-strip,.flag-side{animation:none}}.setup-3d{flex-direction:column;gap:6px;display:flex}.setup-3d ol{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.setup-3d li button{border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;border-radius:8px;grid-template-columns:14px 1fr auto auto;align-items:center;gap:8px;padding:6px 8px;display:grid}.setup-3d li button.is-current{border-color:var(--green);box-shadow:0 0 0 1px var(--green)}.setup-3d .ok{color:var(--success)}.setup-3d .todo{color:var(--muted)}.setup-3d .ai-soon{flex-direction:column;gap:4px;margin-top:4px;display:flex}.setup-3d .ai-soon .btn{justify-content:center}.region.is-object{stroke-dasharray:10 6}.baskets{grid-template-columns:260px minmax(0,1fr);align-items:start;gap:16px;display:grid}.basket-list{margin:12px 0 0;padding:0;list-style:none}.basket-list button{text-align:left;width:100%;color:var(--text);cursor:pointer;font:600 .9rem var(--font-head);background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;padding:8px;display:flex}.basket-list button.is-on{background:color-mix(in srgb, var(--green) 12%, transparent)}.basket-list .tree-count{margin-left:auto}.dropzone{border:2px dashed var(--border);cursor:pointer;color:var(--muted);font-family:var(--font-head);text-align:center;border-radius:14px;flex-direction:column;align-items:center;gap:6px;margin:12px 0;padding:24px;display:flex}.dropzone i{font-size:1.6rem}.dropzone:hover{border-color:var(--green)}.asset-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin-top:10px;display:grid}.asset{border:1px solid var(--border);background:var(--surface);cursor:pointer;text-align:left;color:var(--text);border-radius:12px;flex-direction:column;margin:0;padding:0;display:flex;overflow:hidden}.asset img{aspect-ratio:4/3;object-fit:cover;background:color-mix(in srgb, var(--border) 40%, transparent);width:100%;display:block}.asset span,.asset figcaption{font:600 .78rem var(--font-head);text-overflow:ellipsis;white-space:nowrap;padding:6px 8px;overflow:hidden}.asset figcaption{justify-content:space-between;align-items:center;gap:6px;display:flex}.plans{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;display:grid}.plan.is-current{border-color:var(--green)}.plan-pro{background:linear-gradient(160deg, color-mix(in srgb, var(--blue) 8%, var(--surface)), var(--surface))}.price{font:800 2rem var(--font-head);margin:0 0 8px!important}.pay-methods{flex-wrap:wrap;gap:6px;margin:12px 0;display:flex}@media (width<=960px){.demo-body,.workshop{grid-template-columns:1fr}.editor{height:auto}.panel{border:none;border-bottom:1px solid var(--border)}.baskets{grid-template-columns:1fr}}
