:root{--ink:#151615;--ink-2:#2a2b2a;--paper:#fff;--paper-2:#f6f6f5;--line:#e3e3e1;--line-2:#cfcfcc;--text:#151615;--text-2:#55564f;--text-3:#75766f;--pink:#e31258;--pink-dk:#c40d4b;--pink-wash:#fdeaf1;--mint:#41e2ba;--mint-dk:#0b7a5e;--mint-wash:#e3faf3;--amber:#a15c00;--amber-wash:#fff4e0;--red:#b3123f;--f-head:"Outfit","Avenir Next","Helvetica Neue",Arial,sans-serif;--f-mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,monospace;--r:10px;color-scheme:light}*{box-sizing:border-box}body,html{margin:0}body{background:var(--paper-2);color:var(--text);font-family:var(--f-head);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--pink-dk)}h1,h2,h3{font-weight:600;letter-spacing:-.02em;line-height:1.1;margin:0;text-wrap:balance}p{margin:0}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--pink);outline-offset:2px;border-radius:4px}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.label,.mono{font-family:var(--f-mono)}.label{font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--pink)}.muted{color:var(--text-2)}.small{font-size:14px}.wrap{max-width:860px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}.topbar{background:var(--ink);color:#fff}.topbar .wrap{justify-content:space-between;gap:16px;min-height:64px}.brand,.topbar .wrap{display:flex;align-items:center}.brand{gap:10px;color:#fff;text-decoration:none;font-weight:700;font-size:20px;letter-spacing:.02em}.brand svg{width:30px;height:30px;flex:none}.brand .for{overflow:hidden;text-overflow:ellipsis;max-width:38vw;font-weight:500;letter-spacing:.08em;text-transform:uppercase}.brand .for,.savechip{white-space:nowrap;font-family:var(--f-mono);font-size:12px;color:#b9bab7}.savechip{display:flex;align-items:center;gap:8px}.show-sm{display:none}@media (max-width:520px){.savechip .t-long{display:none}.navbar .wrap{gap:8px}.navbar .btn{padding:0 14px}.hide-sm{display:none}.show-sm{display:inline}}.savechip i{width:8px;height:8px;border-radius:50%;background:var(--mint);display:inline-block}.savechip.saving i{background:#b9bab7}.savechip.error i{background:var(--pink)}.progress{background:var(--ink);padding-bottom:18px}.steps{display:flex;gap:4px}.steps button{flex:1 1;min-width:0;background:none;border:0;padding:8px 0 0;cursor:pointer;text-align:left;color:#8f908d;font-family:var(--f-mono);font-size:11px;letter-spacing:.04em}.steps button:disabled{cursor:default}.steps button .bar{display:block;height:4px;border-radius:2px;background:#3a3b3a;margin-bottom:8px}.steps button.done .bar{background:var(--mint)}.steps button.current .bar{background:var(--pink)}.steps button.current{color:#fff}.steps button .t{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (max-width:700px){.steps button .t{display:none}.progress .mobile-step{display:block}}.mobile-step{display:none;color:#fff;font-family:var(--f-mono);font-size:12px;margin-top:10px}main{padding:32px 0 120px}.card{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:clamp(20px,4vw,36px)}.stack{gap:28px}.section-head,.stack{display:flex;flex-direction:column}.section-head{gap:10px;margin-bottom:8px}.section-head h1{font-size:clamp(28px,5vw,40px)}.q{display:flex;flex-direction:column;gap:8px}.q>.qlabel{font-weight:600;font-size:17px}.q .req{color:var(--pink);margin-left:4px}.q .opt{font-family:var(--f-mono);font-size:11px;color:var(--text-3);margin-left:8px;text-transform:uppercase;letter-spacing:.08em}.q .help{color:var(--text-2);font-size:14px}.q .err,.q.invalid .qlabel{color:var(--red)}.q .err{font-size:14px}.input,.select,.textarea{width:100%;border:1.5px solid var(--line-2);border-radius:8px;padding:11px 12px;background:#fff;font-size:16px}.input:focus,.select:focus,.textarea:focus{border-color:var(--ink);outline:none}.textarea{resize:vertical;min-height:84px}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{display:inline-flex;align-items:center;gap:8px;border:1.5px solid var(--line-2);border-radius:999px;padding:8px 14px;cursor:pointer;background:#fff;font-size:15px;-webkit-user-select:none;-moz-user-select:none;user-select:none;min-height:40px}.chip input{position:absolute;opacity:0;pointer-events:none}.chip.on,.chip:hover{border-color:var(--ink)}.chip.on{background:var(--ink);color:#fff}.chip:has(input:focus-visible){outline:2px solid var(--pink);outline-offset:2px}.defer{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.defer .chip{min-height:32px;padding:4px 10px;font-size:13px;border-style:dashed}.defer .chip.on{background:var(--amber-wash);color:var(--amber);border-color:var(--amber);border-style:solid}.listrow{display:grid;grid-gap:8px;gap:8px;grid-template-columns:repeat(var(--cols),minmax(0,1fr)) 40px;align-items:start}.listrow+.listrow{margin-top:8px}@media (max-width:640px){.listrow{grid-template-columns:1fr 40px}.listrow .input:not(:first-child){grid-column:1}}.iconbtn{width:40px;height:44px;border:1.5px solid var(--line-2);border-radius:8px;background:#fff;cursor:pointer;color:var(--text-2)}.iconbtn:hover{border-color:var(--pink);color:var(--pink)}.linkbtn{background:none;border:0;padding:6px 0;color:var(--pink-dk);font-weight:600;cursor:pointer;text-align:left}.grid-perm{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:10px 16px;gap:10px 16px;align-items:center}.grid-perm .chips{justify-content:flex-end}@media (max-width:640px){.grid-perm{grid-template-columns:1fr}.grid-perm .chips{justify-content:flex-start;margin-bottom:8px}}.platform{border:1.5px solid var(--line);border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:10px}.platform.on{border-color:var(--ink)}.platform-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}@media (max-width:640px){.platform-grid{grid-template-columns:1fr}}.platform-head{display:flex;align-items:center;gap:10px;font-weight:600;cursor:pointer}.platform-head input{width:20px;height:20px;accent-color:var(--pink)}.navbar{position:fixed;left:0;right:0;bottom:0;background:hsla(0,0%,100%,.96);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);z-index:20}.navbar .wrap{display:flex;align-items:center;gap:12px;min-height:72px}.navbar .spacer{flex:1 1}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:0 22px;border-radius:8px;border:1.5px solid transparent;font-weight:600;font-size:16px;cursor:pointer;text-decoration:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--pink);color:#fff}.btn-primary:hover:not(:disabled){background:var(--pink-dk)}.btn-ghost{background:#fff;border-color:var(--line-2);color:var(--text)}.btn-ghost:hover:not(:disabled){border-color:var(--ink)}.btn-dark{background:var(--ink);color:#fff}.btn-sm{min-height:36px;padding:0 14px;font-size:14px}.cat{border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden}.cat-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:16px 18px}.cat-head h3{font-size:18px}.cat-body{padding:0 18px 18px;display:flex;flex-direction:column;gap:12px}.badge{font-family:var(--f-mono);font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:4px 8px;border-radius:6px;white-space:nowrap}.badge.ok{background:var(--mint-wash);color:var(--mint-dk)}.badge.miss{background:var(--paper-2);color:var(--text-2)}.badge.later{background:var(--amber-wash);color:var(--amber)}.badge.link{background:#efe7f0;color:#6e0a75}.badge.fail{background:var(--pink-wash);color:var(--red)}.drop{border:2px dashed var(--line-2);border-radius:10px;padding:20px;text-align:center;color:var(--text-2);cursor:pointer;transition:border-color .15s,background .15s}.drop.over,.drop:hover{border-color:var(--pink);background:var(--pink-wash);color:var(--text)}.drop strong{color:var(--text)}.drop .limits{font-family:var(--f-mono);font-size:11px;color:var(--text-3);margin-top:6px}.files{display:flex;flex-direction:column;gap:8px}.file{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:6px 12px;gap:6px 12px;align-items:center;padding:10px 12px;border-radius:8px;background:var(--paper-2)}.file .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15px}.file .meta{font-family:var(--f-mono);font-size:12px;color:var(--text-2)}.file .actions{display:flex;gap:6px;align-items:center}.file .bar{grid-column:1/-1;height:6px;background:var(--line);border-radius:3px;overflow:hidden}.file .bar i{display:block;height:100%;background:var(--mint);transition:width .2s}.file.failed{background:var(--pink-wash)}.file.failed .meta{color:var(--red)}.file.done .meta{color:var(--mint-dk)}.linkform{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr) auto;grid-gap:8px;gap:8px}@media (max-width:640px){.linkform{grid-template-columns:1fr}}.later-toggle{display:inline-flex;align-items:center;gap:8px;font-size:14px;color:var(--text-2);cursor:pointer}.later-toggle input{width:18px;height:18px;accent-color:var(--amber)}.notice{border-radius:10px;padding:14px 16px;font-size:15px;display:flex;gap:10px;align-items:flex-start}.notice.warn{background:var(--amber-wash);color:#6b3d00}.notice.info{background:var(--mint-wash);color:#064c3a}.notice.error{background:var(--pink-wash);color:var(--red)}.review-sec{border-top:1px solid var(--line);padding-top:18px;display:flex;flex-direction:column;gap:12px}.review-sec h2{font-size:22px;display:flex;justify-content:space-between;align-items:baseline;gap:12px}.review-row{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,3fr);grid-gap:4px 20px;gap:4px 20px;font-size:15px}.review-row .k{color:var(--text-2)}.review-row .v{white-space:pre-wrap;overflow-wrap:anywhere}.review-row .v.empty{color:var(--text-3);font-style:italic}.review-row .v.deferred{color:var(--amber)}@media (max-width:640px){.review-row{grid-template-columns:1fr}}.admin main{padding-bottom:60px}.table{width:100%;border-collapse:collapse;font-size:15px}.table th{text-align:left;font-family:var(--f-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-2);padding:8px 10px;border-bottom:1.5px solid var(--ink)}.table td{padding:10px;border-bottom:1px solid var(--line);vertical-align:top}.tablewrap{overflow-x:auto}.kv{display:grid;grid-template-columns:180px minmax(0,1fr);grid-gap:8px 16px;gap:8px 16px;font-size:15px}@media (max-width:640px){.kv{grid-template-columns:1fr}}.code{font-family:var(--f-mono);font-size:13px;background:var(--paper-2);border:1px solid var(--line);border-radius:6px;padding:8px 10px;overflow-wrap:anywhere}.row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}