:root{--ink:#0b0d12;--ink-raised:#141822;--ink-line:#232936;--text:#e6e9f0;--text-dim:#8c93a5;--violet:#7c5cff;--teal:#2fd4c6;--amber:#ffb340;--danger:#ff6b6b;--radius:12px;--gap:20px}*{box-sizing:border-box}[hidden]{display:none!important}body{background:var(--ink);color:var(--text);-webkit-text-size-adjust:100%;margin:0;font-family:-apple-system,BlinkMacSystemFont,Hiragino Sans,Noto Sans JP,sans-serif;font-size:15px;line-height:1.7}.shell{max-width:900px;margin:0 auto;padding:clamp(16px,4vw,40px) clamp(14px,4vw,28px) 64px}.masthead{margin-bottom:28px}.wordmark{letter-spacing:.02em;border-bottom:3px solid #0000;border-image:linear-gradient(90deg, var(--violet), var(--teal), var(--amber)) 1;margin:0;padding-bottom:6px;font-size:clamp(28px,7vw,40px);font-weight:600;display:inline-block}.tagline{color:var(--text-dim);margin:10px 0 0}.card{background:var(--ink-raised);border:1px solid var(--ink-line);border-radius:var(--radius);margin-bottom:var(--gap);padding:clamp(16px,4vw,26px)}.card-title{color:var(--text-dim);margin:26px 0 12px;font-size:15px;font-weight:600}.card-title:first-child{margin-top:0}.hint{color:var(--text-dim);margin:10px 0 0;font-size:13px}.label{color:var(--text-dim);margin-bottom:6px;font-size:13px;display:block}.role-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}@media (max-width:560px){.role-grid{grid-template-columns:1fr}}.role{text-align:left;border:1px solid var(--ink-line);border-radius:var(--radius);color:var(--text);font:inherit;cursor:pointer;background:0 0;padding:16px;transition:border-color .15s,background .15s;display:block}.role:hover{border-color:var(--text-dim)}.role[aria-checked=true]{border-color:var(--teal);background:#2fd4c614}.role-name{margin-bottom:4px;font-size:17px;font-weight:600;display:block}.role-note{color:var(--text-dim);font-size:13px;line-height:1.6;display:block}.tabs{gap:4px;margin-bottom:12px;display:flex}.tab{border:1px solid var(--ink-line);color:var(--text-dim);font:inherit;cursor:pointer;background:0 0;border-radius:999px;padding:7px 14px;font-size:13px}.tab.is-active{color:var(--ink);background:var(--teal);border-color:var(--teal)}textarea,.pin-input,input[type=file]{background:var(--ink);border:1px solid var(--ink-line);width:100%;color:var(--text);font:inherit;resize:vertical;border-radius:8px;padding:11px 13px}textarea:focus-visible,.pin-input:focus-visible,.role:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--teal);outline-offset:2px}.estimate{background:var(--ink);color:var(--text-dim);border-radius:8px;margin:12px 0 0;padding:10px 12px;font-size:13px}.pin-display{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.pin-value{letter-spacing:.18em;color:var(--amber);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:clamp(32px,9vw,44px)}.pin-input{letter-spacing:.18em;text-align:center;max-width:260px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:30px}.actions{margin-top:24px}.primary,.ghost{font:inherit;cursor:pointer;border:1px solid #0000;border-radius:8px;padding:11px 22px;font-weight:600}.primary{background:var(--teal);color:var(--ink)}.primary:disabled{background:var(--ink-line);color:var(--text-dim);cursor:not-allowed}.ghost{border-color:var(--ink-line);color:var(--text-dim);background:0 0}.ghost:hover:not(:disabled){color:var(--text);border-color:var(--text-dim)}.ghost.danger:hover{color:var(--danger);border-color:var(--danger)}.diag-actions{flex-wrap:wrap;gap:10px;margin-top:14px;display:flex}.diag-result{background:var(--ink);border:1px solid var(--ink-line);border-radius:8px;margin:14px 0 0;padding:11px 14px;font-size:13px}.diag-result.is-ok{border-color:var(--teal)}.diag-result.is-warn{border-color:var(--amber)}.diag-support{color:var(--text-dim);margin:12px 0 0;font-size:12px}.diag-support div{border-bottom:1px solid var(--ink-line);gap:8px;padding:3px 0;display:flex}.diag-support dt{flex:0 0 42%}.diag-support dd{margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}body.is-session{overflow:hidden}body.is-session .shell{max-width:none;height:100dvh;padding:0}body.is-session .masthead,body.is-session .threat{display:none}body.is-session #session{height:100dvh;padding:10px;padding-bottom:max(10px, env(safe-area-inset-bottom));border:0;border-radius:0;grid-template-rows:auto minmax(0,1fr) auto;gap:10px;margin:0;display:grid}.status-strip{flex-wrap:wrap;align-items:center;gap:8px;margin:0;display:flex}.state-chip{background:var(--ink);border:1px solid var(--teal);color:var(--teal);letter-spacing:.03em;white-space:nowrap;border-radius:999px;padding:5px 13px;font-size:14px;font-weight:600}.peer-pill{border:1px solid var(--ink-line);background:var(--ink);white-space:nowrap;color:var(--text-dim);border-radius:999px;padding:5px 11px;font-size:12px}.peer-pill.is-locked{border-color:var(--teal);color:var(--teal)}.note{min-width:0;color:var(--text-dim);flex:100%;order:9;font-size:12px;line-height:1.5}.note:empty{display:none}.controls{flex:none;gap:6px;margin-left:auto;display:flex}.icon-button{border:1px solid var(--ink-line);color:var(--text);cursor:pointer;background:0 0;border-radius:8px;padding:6px 10px;font-size:15px;line-height:1}.icon-button[aria-pressed=true]{opacity:.45}.icon-button.is-danger:hover{color:var(--danger);border-color:var(--danger)}.channel{grid-template-columns:1fr 1fr;gap:10px;min-height:0;display:grid;position:relative}@media (orientation:portrait){.channel{grid-template-rows:auto minmax(0,1fr);grid-template-columns:1fr}.face-tx .face-box{aspect-ratio:1;max-height:46dvh}.channel.is-receiving{grid-template-rows:.45fr 1fr}.channel.is-receiving .face-tx .face-box{aspect-ratio:auto;max-height:none}}.channel.is-transmitting{grid-template-rows:1fr;grid-template-columns:1fr}.channel.is-transmitting .face-tx .face-box{aspect-ratio:auto;max-height:none}.channel.is-transmitting .face-rx{z-index:4;width:26%;max-width:140px;position:absolute;top:8px;right:8px}.channel.is-transmitting .face-rx .face-box{aspect-ratio:4/3}.channel.is-transmitting .face-rx figcaption{display:none}.face{grid-template-rows:minmax(0,1fr) auto;gap:5px;min-height:0;margin:0;display:grid}.face-box{min-height:0;position:relative}.face-box>*{width:100%;height:100%;position:absolute;inset:0}.face figcaption{color:var(--text-dim);text-align:center;font-size:11px}.face-tx canvas{object-fit:contain;background:0 0;display:block}.rx-mount{background:#000;border-radius:8px;overflow:hidden}.rx-mount video{object-fit:contain;width:100%;height:100%}.rx-mount.is-mirrored video{transform:scaleX(-1)}.flip-banner{z-index:5;border-radius:var(--radius);border:1px solid var(--amber);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#1f1608f2;margin:0;padding:12px 14px;position:absolute;bottom:6px;left:6px;right:6px}.flip-title{color:var(--amber);margin:0 0 4px;font-size:17px;font-weight:600}.flip-note{color:var(--text);margin:0 0 10px;font-size:12px;line-height:1.5}.readouts{gap:7px;display:grid}.progress{background:var(--ink);border-radius:999px;height:5px;overflow:hidden}.progress-fill{background:var(--teal);width:0;height:100%;transition:width .25s}.aim-hint{color:var(--text-dim);margin:0;font-size:12px;line-height:1.5}.aim-hint.is-locked{color:var(--teal)}.readout-row{color:var(--text-dim);flex-wrap:wrap;align-items:center;gap:14px;font-size:11px;display:flex}.readout b{color:var(--text);margin-right:3px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:15px;font-weight:600}.readout.is-primary b{font-size:17px}.readout:not(.is-primary){opacity:.72}.sas{align-items:center;gap:8px;margin-left:auto;display:flex}.sas-label{font-size:11px}.sas-symbols{letter-spacing:.1em;font-size:22px}.result-file{word-break:break-all;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}#result .primary,#result .ghost{margin-top:14px;margin-right:10px}.failure-message{color:var(--danger)}.threat{border:1px solid var(--ink-line);border-radius:var(--radius);padding:14px 18px}.threat summary{cursor:pointer;color:var(--text-dim);font-weight:600}.threat-body{padding-top:8px;font-size:14px}.threat-body ul{padding-left:1.2em}.threat-body li{margin-bottom:6px}.threat-note{color:var(--text-dim);border-top:1px solid var(--ink-line);padding-top:12px}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
