/* soip.app — one dark surface, hairline borders, one green. Mobile first. */
:root{
  color-scheme:dark;
  --bg:#0e0e10;
  --surface:#151517;
  --surface-2:#1b1b1e;
  --ink:#f5f5f7;
  --ink-2:#a1a1aa;
  --ink-3:#6b6b74;
  --line:#ffffff14;
  --line-2:#ffffff29;
  --plus:#b5ff5b;
  --plus-ink:#101a06;
  --danger:#ff7b6b;
  --ring:#ffffff;
  --r-sm:8px;--r-md:12px;--r-lg:16px;
  --gutter:clamp(16px,5vw,40px);
  --measure:560px;
  font-family:-apple-system,BlinkMacSystemFont,"Inter","SF Pro Text","Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  font-size:16px;line-height:1.5;
  color:var(--ink);background:var(--bg);
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%}
body{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh;overflow-x:hidden}
a{color:inherit;text-decoration:none}
button,input{font:inherit;color:inherit;letter-spacing:inherit}
button{cursor:pointer;border:0;background:none;padding:0}
fieldset{border:0;margin:0;padding:0;min-width:0}
details summary::-webkit-details-marker{display:none}
summary{list-style:none}
svg{display:block}
[hidden]{display:none!important}
.mono{font-family:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,monospace;font-variant-numeric:tabular-nums;letter-spacing:.04em}
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
:focus-visible{outline:2px solid var(--ring);outline-offset:3px}
::selection{background:#b5ff5b55}

/* Header */
.site-header{display:flex;align-items:center;justify-content:space-between;gap:12px;height:64px;padding:0 var(--gutter);border-bottom:1px solid var(--line)}
.wordmark{display:flex;align-items:center;height:44px;padding:0 2px;border-radius:var(--r-sm)}
.wordmark img{height:22px;width:auto}
.header-actions{display:flex;align-items:center;gap:8px}
.lang{min-width:40px;height:36px;padding:0 10px;border-radius:var(--r-sm);font-size:13px;font-weight:600;color:var(--ink-2);letter-spacing:.02em}
.lang:hover{color:var(--ink);background:var(--surface-2)}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:0 16px;border-radius:var(--r-sm);font-size:15px;font-weight:600;line-height:1;white-space:nowrap;border:1px solid transparent;transition:background-color .15s,border-color .15s,color .15s,opacity .15s}
.btn:active{transform:translateY(.5px)}
.btn-primary{background:var(--plus);color:var(--plus-ink);border-color:var(--plus)}
.btn-primary:hover{background:#c3ff78;border-color:#c3ff78}
.btn-outline{border-color:var(--line-2);color:var(--ink)}
.btn-outline:hover{background:var(--surface-2)}
.btn-ghost{color:var(--ink-2)}
.btn-ghost:hover{color:var(--ink);background:var(--surface-2)}
.btn[aria-current=page].btn-outline{background:var(--surface-2)}
.btn[disabled]{opacity:.5;pointer-events:none}
.btn-block{width:100%;min-height:48px;font-size:16px}
.link{color:var(--ink-2);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--line-2)}
.link:hover{color:var(--ink)}

main{flex:1;width:100%}

/* Home */
.home{display:flex;flex-direction:column;align-items:center;padding:clamp(40px,8vw,88px) var(--gutter) 0}
.intro{width:100%;max-width:960px;text-align:left}
.intro h1{font-size:clamp(34px,6.5vw,60px);line-height:1.05;letter-spacing:-.03em;font-weight:600;margin:0 0 16px;max-width:16ch;text-wrap:balance}
.intro p{font-size:clamp(16px,1.4vw,18px);color:var(--ink-2);margin:0;max-width:46ch;text-wrap:pretty}
.intro .cta{display:flex;gap:10px;margin-top:28px;flex-wrap:wrap}

/* TV mockup: a thin bezel and the real launcher, drawn in container units so it scales. */
.tv{width:min(100%,960px);margin:clamp(40px,7vw,72px) auto 0;padding:0;background:#000;border:1px solid var(--line-2);border-radius:clamp(8px,1.2vw,14px);box-shadow:0 1px 0 #ffffff0a inset,0 30px 60px -30px #000}
.tv-screen{container-type:inline-size;position:relative;aspect-ratio:16/9;border-radius:inherit;overflow:hidden;background:radial-gradient(ellipse at 50% 35%,#24242b 0%,#121214 62%)}
.ui{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;padding:3cqw 3.4cqw 2.4cqw;text-align:center;color:#f5f5f7}
.ui-brand{height:3.2cqw;width:auto}
.ui h2{font-size:3cqw;font-weight:500;letter-spacing:-.08cqw;margin:6.6cqw 0 4.4cqw;line-height:1.1}
.ui-profiles{display:flex;justify-content:center;gap:3.4cqw}
.ui-profile{display:flex;flex-direction:column;align-items:center;gap:1.9cqw;width:11cqw}
.ui-avatar{display:grid;place-items:center;width:9cqw;height:9cqw;border-radius:50%;font-size:3.9cqw;font-weight:500;color:#fff;background:radial-gradient(circle at 30% 20%,hsl(var(--h) 30% 70%),hsl(var(--h) 24% 34%) 80%);box-shadow:inset 0 .1cqw .1cqw #ffffff38}
.ui-avatar.add{background:#ffffff05;border:.1cqw solid #ffffff25;color:#9999a7;font-weight:300}
.ui-profile.focus .ui-avatar{box-shadow:0 0 0 .3cqw #ffffff90,inset 0 .1cqw .1cqw #ffffff38}
.ui-profile span{font-size:1.05cqw;color:#b4b4bf}
.ui-profile.focus span{color:#fff;font-weight:600}
.ui-device{margin-top:auto;display:flex;flex-direction:column;align-items:center;gap:1.1cqw;padding-top:2.2cqw;border-top:.08cqw solid #ffffff14;min-width:26cqw}
.ui-plan{display:flex;align-items:center;gap:1.4cqw;font-size:1.05cqw;color:#c9c9cf}
.ui-plan b{font-size:.9cqw;font-weight:600;border:.08cqw solid #ffffff38;border-radius:.4cqw;padding:.3cqw .7cqw;color:#fff}
.ui-device small{font-size:.95cqw;color:#9595a0}
.ui-device strong{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1.5cqw;font-weight:500;letter-spacing:.14cqw}

.steps{width:100%;max-width:960px;margin:clamp(40px,7vw,80px) auto 0;padding:clamp(28px,4vw,40px) 0 0;border-top:1px solid var(--line);display:grid;gap:28px}
.steps h2{grid-column:1/-1;margin:0;font-size:13px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
.steps ol{display:contents;margin:0;padding:0;list-style:none;counter-reset:step}
.steps li{counter-increment:step;display:grid;grid-template-columns:28px 1fr;gap:12px;align-items:baseline}
.steps li::before{content:counter(step);font-size:13px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.steps h3{margin:0 0 4px;font-size:16px;font-weight:600}
.steps p{margin:0;color:var(--ink-2);font-size:15px;max-width:34ch}
@media (min-width:720px){.steps{grid-template-columns:repeat(3,1fr);gap:32px}}

/* Task pages */
.page{width:100%;max-width:var(--measure);margin:0 auto;padding:clamp(28px,6vw,64px) var(--gutter) 0}
.page h1{font-size:clamp(28px,5vw,40px);line-height:1.1;letter-spacing:-.025em;font-weight:600;margin:0 0 12px;text-wrap:balance}
.page .lead{margin:0;color:var(--ink-2);font-size:16px;text-wrap:pretty}
.page .note{display:flex;gap:10px;align-items:flex-start;margin:18px 0 0;font-size:14px;color:var(--ink-3)}
.page .note svg{flex:none;width:16px;height:16px;margin-top:3px;stroke:currentColor;fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}

.panel{margin-top:clamp(28px,5vw,40px);padding-top:clamp(28px,5vw,40px);border-top:1px solid var(--line)}
.panel h2{margin:0 0 20px;font-size:18px;font-weight:600;letter-spacing:-.01em}

.field{display:flex;flex-direction:column;gap:8px;margin:0 0 20px}
.field label,.field .label{font-size:14px;font-weight:500;color:var(--ink-2)}
.field small{font-size:13px;color:var(--ink-3);line-height:1.45}
.input{width:100%;min-height:48px;padding:0 14px;border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line-2);color:var(--ink);transition:border-color .15s,background-color .15s}
.input::placeholder{color:var(--ink-3)}
.input:hover{border-color:#ffffff3d}
.input:focus{outline:0;border-color:#ffffff80;background:var(--surface-2)}
.input[aria-invalid=true]{border-color:var(--danger)}

/* MAC: six two-character boxes */
.mac-boxes{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;align-items:center}
.mac-boxes .mac-sep{display:none}
.mac-box{min-width:0;width:100%;height:52px;padding:0;text-align:center;font-size:clamp(17px,4.6vw,20px);font-weight:500;text-transform:uppercase;border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line-2);color:var(--ink);caret-color:var(--plus);transition:border-color .15s,background-color .15s}
.mac-box::placeholder{color:var(--ink-3);font-weight:400}
.mac-box:hover{border-color:#ffffff3d}
.mac-box:focus{outline:0;border-color:#ffffff80;background:var(--surface-2)}
.mac-boxes[aria-invalid=true] .mac-box{border-color:var(--danger)}
@media (min-width:420px){.mac-boxes{gap:8px}}

.segmented{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;margin:0 0 20px;border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line)}
.segmented label{position:relative;display:flex;align-items:center;justify-content:center;min-height:40px;border-radius:var(--r-sm);font-size:15px;font-weight:500;color:var(--ink-2);cursor:pointer;transition:background-color .15s,color .15s}
.segmented input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer}
.segmented label:has(input:checked){background:var(--surface-2);color:var(--ink);box-shadow:0 0 0 1px var(--line-2)}
.segmented label:has(input:focus-visible){outline:2px solid var(--ring);outline-offset:2px}

.feedback{margin:14px 0 0;font-size:14px;color:var(--danger);line-height:1.45}
.feedback.info{color:var(--ink-2)}

/* Result / status */
.status{display:grid;grid-template-columns:12px 1fr;gap:14px;align-items:start;padding:20px 0 0}
.status .dot{width:10px;height:10px;margin-top:7px;border-radius:50%;background:var(--ink-3)}
.status.wait .dot{background:var(--ink);animation:pulse 1.6s ease-in-out infinite}
.status.done .dot{background:var(--plus)}
.status.fail .dot{background:var(--danger)}
.status h2{margin:0 0 6px;font-size:18px}
.status p{margin:0;color:var(--ink-2);font-size:15px}
.status .actions{margin-top:20px}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}
@media (prefers-reduced-motion:reduce){.status.wait .dot{animation:none}}

.row{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:52px;padding:4px 0;border-bottom:1px solid var(--line)}
.row:first-child{border-top:1px solid var(--line)}
.row .k{font-size:14px;color:var(--ink-2)}
.row .v{display:flex;align-items:center;gap:12px;font-size:15px}
.badge{display:inline-flex;align-items:center;min-height:24px;padding:0 9px;border-radius:6px;font-size:13px;font-weight:600;border:1px solid var(--line-2);color:var(--ink)}
.badge.pro{background:var(--plus);border-color:var(--plus);color:var(--plus-ink)}
.price{display:flex;align-items:baseline;gap:10px;margin:28px 0 16px}
.price strong{font-size:32px;font-weight:600;letter-spacing:-.02em}
.price span{font-size:14px;color:var(--ink-2)}
.banner{margin:0 0 20px;padding:10px 14px;border-radius:var(--r-sm);font-size:14px;color:var(--ink-2);background:var(--surface);border:1px solid var(--line)}
.fine{margin:12px 0 0;font-size:13px;color:var(--ink-3);line-height:1.45}
.restore{margin-top:28px;padding-top:20px;border-top:1px solid var(--line)}
.restore summary{display:inline-flex;align-items:center;gap:6px;min-height:32px;font-size:14px;color:var(--ink-2);cursor:pointer;border-radius:var(--r-sm)}
.restore summary:hover{color:var(--ink)}
.restore summary svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2;transition:transform .15s}
.restore[open] summary svg{transform:rotate(90deg)}
.restore form{margin-top:20px}

footer{display:flex;flex-wrap:wrap;gap:8px 24px;justify-content:space-between;max-width:var(--measure);width:100%;margin:clamp(48px,8vw,96px) auto 0;padding:24px var(--gutter) max(24px,env(safe-area-inset-bottom));border-top:1px solid var(--line);font-size:13px;color:var(--ink-3)}
footer a:hover{color:var(--ink)}
.home ~ footer,footer.wide{max-width:calc(960px + 2*var(--gutter))}
