:root{
  --bg:#0E0F11;
  --grid:#15161A;
  --surface:#16171A;
  --surface-2:#1D1F23;
  --line:#2A2C31;
  --line-2:#3A3D44;
  --text:#ECEDF0;
  --text-2:#B3B6BD;
  --text-3:#8A8E96;
  --led:#F2F3F5;
  --on-led:#0E0F11;
  --led-hover:#FFFFFF;
  --err:#F4A29B;
  --shadow:0 24px 64px rgba(0,0,0,.5);
  --flash:radial-gradient(circle at 50% 50%,#FFFFFF 0%,#F2F3F5 60%,#DADCE0 100%);
  --radius:6px;
  --radius-lg:12px;
  --ui:'Archivo',system-ui,-apple-system,'Segoe UI',sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  color-scheme:dark;
}
:root[data-palette="bone"]{
  --bg:#E3E2DE;
  --grid:#DAD9D4;
  --surface:#F1F0EC;
  --surface-2:#F8F7F4;
  --line:#D2D0CA;
  --line-2:#B9B7B0;
  --text:#151514;
  --text-2:#3F3E3B;
  --text-3:#5E5D59;
  --led:#151514;
  --on-led:#F8F7F4;
  --led-hover:#000000;
  --err:#B42318;
  --shadow:0 24px 64px rgba(20,20,18,.16);
  --flash:radial-gradient(circle at 50% 50%,#FFFFFF 0%,#F8F7F4 60%,#E3E2DE 100%);
  color-scheme:light;
}
*,*::before,*::after{box-sizing:border-box}
html,body{height:100%}
body{margin:0;overflow:hidden;background:radial-gradient(circle,var(--grid) 0 1px,transparent 1.5px) 0 0/10px 10px,var(--bg);color:var(--text);font:400 15px/1.5 var(--ui);-webkit-font-smoothing:antialiased}
button,input{font:inherit;color:inherit}
[hidden]{display:none!important}
:focus-visible{outline:2px solid var(--text);outline-offset:3px}
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}
.mono{font-family:var(--mono);font-size:14px;letter-spacing:0}

#gl{position:fixed;inset:0;width:100%;height:100%;display:block;touch-action:none;z-index:2}
.flash{position:fixed;inset:0;z-index:20;pointer-events:none;opacity:0;will-change:opacity;background:var(--flash)}

.top{position:fixed;inset:0 0 auto;z-index:6;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;padding:calc(18px + env(safe-area-inset-top,0px)) 20px 0;pointer-events:none}
.top>*{pointer-events:auto}
.wordmark{justify-self:start;font-weight:600;font-size:18px;font-stretch:118%;letter-spacing:.01em;line-height:1}
.status{justify-self:center;display:inline-flex;align-items:center;gap:10px;min-height:34px;padding:0 14px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);font-size:13px;color:var(--text-2);font-variant-numeric:tabular-nums;white-space:nowrap}
.status .dot{width:6px;height:6px;border-radius:50%;background:var(--text-2)}
.status span+span{padding-left:10px;border-left:1px solid var(--line)}
.status b{font-weight:500;color:var(--text)}
.mode{justify-self:end;font-size:13px;color:var(--text-3)}

.gate-cta{position:fixed;left:50%;bottom:calc(10% + env(safe-area-inset-bottom,0px));z-index:6;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:12px;width:min(420px,calc(100vw - 32px));text-align:center;transition:opacity .3s}
.gate-line{margin:0;max-width:36ch;font-size:14px;color:var(--text-2)}
.bottom{position:fixed;left:0;right:0;bottom:0;z-index:6;display:flex;justify-content:space-between;gap:12px;padding:0 20px calc(16px + env(safe-area-inset-bottom,0px));pointer-events:none;transition:opacity .3s}
.bottom>*{pointer-events:auto}
#app:not([data-state="idle"]) .gate-cta,#app:not([data-state="idle"]) .bottom{opacity:0;pointer-events:none}
#app:not([data-stage="gate"]) .gate-cta,#app:not([data-stage="gate"]) .bottom{display:none}

.link{min-height:40px;padding:0 2px;background:none;border:0;font-size:14px;font-weight:500;color:var(--text-2);text-decoration:underline;text-decoration-color:var(--line-2);text-underline-offset:5px;cursor:pointer}
.link:hover{color:var(--text);text-decoration-color:var(--text-3)}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 18px;border:1px solid var(--line-2);border-radius:var(--radius);background:transparent;font-size:15px;font-weight:500;line-height:1;white-space:nowrap;color:var(--text);cursor:pointer;transition:background-color .15s,border-color .15s,color .15s}
.btn:hover{border-color:var(--text-3)}
.btn.primary{background:var(--led);border-color:var(--led);color:var(--on-led)}
.btn.primary:hover{background:var(--led-hover);border-color:var(--led-hover)}
.btn.ghost{border-color:transparent;color:var(--text-2)}
.btn.ghost:hover{color:var(--text);border-color:var(--line)}
.btn:disabled,.btn:disabled:hover{opacity:.4;cursor:not-allowed}
.btn.small{min-height:32px;padding:0 10px;font-size:13px}
.btn.lg{min-height:52px;padding:0 28px;font-size:16px}
.btn.wide{width:100%}

.panel{position:fixed;z-index:10;left:50%;top:50%;width:min(880px,calc(100vw - 32px));max-height:calc(100% - 128px);display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow);opacity:0;transform:translate(-50%,-48%);transition:opacity .25s ease,transform .35s cubic-bezier(.2,.8,.2,1)}
.panel.show{opacity:1;transform:translate(-50%,-50%)}
.panel.sm{width:min(520px,calc(100vw - 32px));z-index:12}
.panel.md{width:min(760px,calc(100vw - 32px))}
.p-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:22px 24px 16px;border-bottom:1px solid var(--line)}
.p-title{margin:0;font-size:20px;font-weight:600;font-stretch:108%;line-height:1.2;text-wrap:balance}
.p-sub{margin:4px 0 0;font-size:14px;color:var(--text-2)}
.icon-btn{flex-shrink:0;display:grid;place-items:center;width:40px;height:40px;margin:-6px -8px 0 0;background:none;border:1px solid transparent;border-radius:var(--radius);color:var(--text-2);cursor:pointer}
.icon-btn:hover{color:var(--text);border-color:var(--line)}
.p-body{flex:1 1 auto;min-height:0;overflow:auto;padding:20px 24px 24px;display:flex;flex-direction:column;gap:20px}
.p-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 24px;border-top:1px solid var(--line)}
.note{margin:0;font-size:13px;line-height:1.5;color:var(--text-3)}
.lead{margin:0;font-size:15px;line-height:1.55;color:var(--text);max-width:62ch}
.lead strong{font-weight:600}
.label{font-size:13px;font-weight:500;color:var(--text-3)}
.msg{margin:0;font-size:14px;line-height:1.5;color:var(--text-2)}
.msg:empty{display:none}
.msg.err{color:var(--err)}

.pay-grid{display:grid;grid-template-columns:minmax(0,1fr) 164px;gap:24px;align-items:start}
.pay-main{display:flex;flex-direction:column;gap:16px;min-width:0}
.memo-box{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:4px 12px;padding:14px 12px 14px 16px;border:1px solid var(--line-2);border-radius:var(--radius);background:var(--surface-2)}
.memo-box .label{grid-column:1/-1}
.memo{font-family:var(--mono);font-size:24px;font-weight:500;letter-spacing:.04em;line-height:1.2}
.fields{margin:0;display:flex;flex-direction:column;gap:8px}
.field{display:grid;grid-template-columns:72px minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 10px 10px 16px;border:1px solid var(--line);border-radius:var(--radius)}
.field dt{font-size:13px;font-weight:500;color:var(--text-3)}
.field dd{margin:0;min-width:0;overflow-wrap:anywhere;font-family:var(--mono);font-size:14px}
.field dd.addr{font-size:12px;line-height:1.5}
.qr{margin:0;display:flex;flex-direction:column;gap:8px}
.qr canvas{display:block;width:164px;height:164px;max-width:100%;padding:10px;border-radius:var(--radius);background:#FFFFFF;image-rendering:pixelated}
.qr figcaption{font-size:12.5px;line-height:1.45;color:var(--text-3)}
.pay-actions{display:flex;flex-direction:column;gap:12px;padding-top:4px}
.pay-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px 16px}
.hint{margin:0;font-size:14px;line-height:1.5;color:var(--text-2)}
.hint a{color:var(--text);text-underline-offset:4px}
.inline-form{display:flex;gap:8px}
.inline-form input{flex:1 1 auto;min-width:0;min-height:44px;padding:0 14px;border:1px solid var(--line-2);border-radius:var(--radius);background:var(--surface-2);font-family:var(--mono);font-size:14px}
.inline-form input::placeholder{font-family:var(--ui);color:var(--text-3)}
.inline-form input:focus{outline:none;border-color:var(--text-3)}
.inline-form input:focus-visible{outline:2px solid var(--text);outline-offset:1px}

.stepper{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
.stepper li{position:relative;display:flex;flex-direction:column;gap:2px;padding:22px 12px 0 0}
.stepper li::before{content:"";position:absolute;top:5px;left:0;right:0;height:1px;background:var(--line-2)}
.stepper li:last-child::before{display:none}
.stepper li.done::before{background:var(--text-2)}
.step-dot{position:absolute;top:0;left:0;width:11px;height:11px;border-radius:50%;border:1px solid var(--line-2);background:var(--surface)}
.stepper li.done .step-dot{background:var(--text);border-color:var(--text)}
.stepper li.cur .step-dot{border:3px solid var(--text)}
.stepper li.err .step-dot{border:3px solid var(--err)}
.step-t{font-size:14px;font-weight:500;color:var(--text-3)}
.stepper li.done .step-t,.stepper li.cur .step-t{color:var(--text)}
.stepper li.err .step-t{color:var(--err)}
.step-s{font-size:13px;line-height:1.4;color:var(--text-3)}

.confirmed{display:flex;flex-direction:column;gap:14px;padding-top:18px;border-top:1px solid var(--line)}
.confirmed-title{margin:0;font-size:17px;font-weight:600;font-stretch:106%}
.facts{margin:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 24px}
.facts div{display:flex;flex-direction:column;gap:2px;min-width:0}
.facts dt{font-size:13px;color:var(--text-3)}
.facts dd{margin:0;font-family:var(--mono);font-size:14px;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.facts dd.text{font-family:var(--ui);font-size:15px;font-weight:500}
.compo{display:flex;flex-direction:column;gap:8px}
.compo-bar{display:flex;gap:3px;height:12px}
.compo-bar i{display:block;min-width:6px;border:1px solid var(--text-2);border-radius:2px}
.compo-bar i.shielded{background:var(--text);border-color:var(--text)}
.compo-bar i.mixed{background:linear-gradient(90deg,var(--text-2) 50%,transparent 50%)}
.compo-bar i.transparent{border-style:dashed}
#pbody.is-found .pay-grid,#pbody.is-found .pay-actions{display:none}

.how{margin:0;padding:0 0 0 20px;display:flex;flex-direction:column;gap:12px;color:var(--text-2)}
.how li{padding-left:4px;line-height:1.55}
.how li::marker{color:var(--text-3);font-variant-numeric:tabular-nums}
.how strong{font-weight:600;color:var(--text)}

.card{position:fixed;z-index:8;width:320px;display:flex;flex-direction:column;gap:14px;padding:18px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow);opacity:0;transform:translateY(6px);transition:opacity .25s,transform .35s cubic-bezier(.2,.8,.2,1)}
.card.show{opacity:1;transform:none}
.find-card,.build-card{left:20px;top:calc(76px + env(safe-area-inset-top,0px));max-height:calc(100% - 96px);overflow:auto}
.inspector{right:20px;top:calc(76px + env(safe-area-inset-top,0px));width:292px}
.card-title{margin:0;font-size:19px;font-weight:600;font-stretch:108%;line-height:1.2}
.card-text{margin:0;font-size:14px;line-height:1.5;color:var(--text-2)}
.card-kicker{margin:0;font-size:13px;color:var(--text-3);font-variant-numeric:tabular-nums}
.yours{display:grid;grid-template-columns:104px minmax(0,1fr);gap:14px;align-items:center;padding:12px;border:1px solid var(--line-2);border-radius:var(--radius);background:var(--surface-2)}
.yours canvas{display:block;width:104px;height:104px}
.kv{margin:0;display:grid;gap:6px}
.kv div{display:flex;justify-content:space-between;align-items:baseline;gap:12px;min-width:0}
.kv dt{flex-shrink:0;font-size:13px;color:var(--text-3)}
.kv dd{margin:0;min-width:0;font-size:14px;font-weight:500;text-align:right;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.kv dd.mono{font-weight:400}
.kv dd.muted{color:var(--text-3);font-weight:400}
.kv dd.mono.muted{font-family:var(--ui)}
.pools{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}
.chip{display:inline-flex;align-items:center;gap:8px;min-height:32px;padding:0 10px;border:1px solid var(--line-2);border-radius:var(--radius);font-size:13px;font-weight:500;color:var(--text-2)}
.scans{margin:0;font-size:14px;font-weight:500;color:var(--text)}
.scanbar{height:3px;border-radius:2px;background:var(--line-2);overflow:hidden}
.scanbar i{display:block;height:100%;width:0;background:var(--text)}
.chip .count{font-family:var(--mono);font-size:12px;color:var(--text-3)}
.glyph{display:inline-block;width:12px;height:12px;border-radius:2px;border:1.5px solid var(--text)}
.glyph.solid{background:var(--text)}
.glyph.half{background:linear-gradient(90deg,var(--text) 50%,transparent 50%)}
.glyph.hollow{border-style:dashed;border-color:var(--text-2)}
.stack{display:flex;flex-direction:column;gap:8px}
.tag{align-self:flex-start;padding:3px 8px;border:1px solid var(--line-2);border-radius:var(--radius);font-size:12.5px;font-weight:500;color:var(--text-2)}

.keynet{--c:80px;display:grid;grid-template-columns:repeat(3,var(--c));grid-template-rows:repeat(4,var(--c));gap:4px}
.keynet.small{--c:62px}
.kcell{display:flex;flex-direction:column;justify-content:space-between;padding:8px;border:1px solid var(--line-2);border-radius:4px;background:var(--surface-2)}
.kcell .kf{font-size:12px;color:var(--text-3)}
.kcell .kd{font-size:15px;font-weight:600;font-stretch:106%;line-height:1.1}
.keynet.small .kcell{padding:5px 6px}
.keynet.small .kf{font-size:10.5px}
.keynet.small .kd{font-size:11.5px;font-stretch:100%}
.kcell.anchor{align-items:center;justify-content:center;gap:2px;border-color:var(--text)}
.kcell.anchor canvas{display:block;width:70%;height:auto;aspect-ratio:1}
.kcell.set{border-color:var(--text-3);background:var(--surface)}
.face-row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px}
.face-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-height:40px;padding:0 2px;border:1px solid var(--line-2);border-radius:4px;background:transparent;font-size:12.5px;font-weight:500;color:var(--text-2);cursor:pointer}
.face-btn .fk{display:none;font-size:11px;font-weight:400;color:var(--text-3)}
.face-btn:hover{border-color:var(--text-3);color:var(--text)}
.face-btn:disabled{opacity:.4;cursor:default}
.face-btn.filled{border-color:var(--text-3);background:var(--surface-2);color:var(--text)}
.progress{display:flex;justify-content:space-between;font-size:13px;color:var(--text-3)}
.progress span:last-child{color:var(--text);font-variant-numeric:tabular-nums}
.bar{height:4px;border-radius:2px;background:var(--line)}
.bar i{display:block;width:0;height:100%;border-radius:2px;background:var(--text);transition:width .25s}

.tray{position:fixed;z-index:8;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));display:flex;gap:8px;max-width:calc(100vw - 32px);padding:10px;overflow-x:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow);opacity:0;transform:translate(-50%,8px);transition:opacity .25s,transform .35s cubic-bezier(.2,.8,.2,1)}
.tray.show{opacity:1;transform:translate(-50%,0)}
.tile{flex:0 0 auto;width:136px;min-height:72px;display:flex;flex-direction:column;justify-content:space-between;align-items:flex-start;gap:8px;padding:10px 12px;border:1px solid var(--line-2);border-radius:var(--radius);background:var(--surface-2);text-align:left;cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none}
.tile .tk{font-size:13px;font-weight:500;color:var(--text-3);pointer-events:none}
.tile .tv{font-family:var(--mono);font-size:14px;color:var(--text);pointer-events:none}
.tile:hover{border-color:var(--text-3)}
.tile.armed{border-color:var(--text);box-shadow:inset 0 0 0 1px var(--text)}
.tile.placed{opacity:.55;cursor:pointer}
.tile.lifted{opacity:.2}
.drag-ghost{position:fixed;z-index:40;margin:0;pointer-events:none;transform:translate(-50%,-50%);border-color:var(--text);box-shadow:var(--shadow)}

.found-grid{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:32px;align-items:start}
.found-info{display:flex;flex-direction:column;gap:18px;min-width:0}
.big-stat{display:flex;flex-direction:column;gap:2px}
.big{font-size:44px;font-weight:600;font-stretch:112%;line-height:1;font-variant-numeric:tabular-nums}
.found-key{display:flex;flex-direction:column;gap:10px}

.res{display:grid;grid-template-columns:auto minmax(0,1fr);gap:28px;align-items:start}
.seed{margin:0;display:flex;flex-direction:column;gap:10px}
.seed canvas{display:block;width:208px;height:208px;max-width:100%;border-radius:var(--radius);background:var(--surface-2);border:1px solid var(--line)}
.seed figcaption{display:flex;flex-direction:column;gap:2px}
.res-side{display:flex;flex-direction:column;gap:18px;min-width:0}
.wallet{display:flex;flex-direction:column;gap:8px}
.wallet label{font-size:14px;font-weight:500}
.done-box{display:flex;flex-direction:column;gap:12px;padding-top:16px;border-top:1px solid var(--line)}
.done-title{margin:0;font-size:22px;font-weight:600;font-stretch:108%}

.notice{position:fixed;z-index:15;left:50%;top:calc(72px + env(safe-area-inset-top,0px));transform:translateX(-50%);max-width:calc(100vw - 32px);padding:10px 16px;border:1px solid var(--line-2);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);font-size:14px;color:var(--text)}
.toast{position:fixed;z-index:30;left:50%;bottom:calc(84px + env(safe-area-inset-bottom,0px));transform:translate(-50%,8px);max-width:calc(100vw - 32px);padding:10px 16px;border:1px solid var(--line-2);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);font-size:14px;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s}
.toast.on{opacity:1;transform:translate(-50%,0)}

@media (max-width:680px){
  .top{grid-template-columns:1fr auto;padding-inline:16px}
  .status{grid-column:1/-1;grid-row:2;justify-self:center;font-size:12.5px}
  .gate-cta{bottom:calc(76px + env(safe-area-inset-bottom,0px))}
  .bottom{padding-inline:16px}
  .panel{top:calc(96px + env(safe-area-inset-top,0px));bottom:calc(12px + env(safe-area-inset-bottom,0px));max-height:none;transform:translate(-50%,10px)}
  .panel.show{transform:translate(-50%,0)}
  .panel.sm{bottom:auto;max-height:calc(100% - 180px)}
  .p-head,.p-body,.p-foot{padding-inline:16px}
  .pay-grid{grid-template-columns:1fr}
  .qr{flex-direction:row;align-items:center;gap:14px}
  .qr canvas{width:120px;height:120px;flex-shrink:0}
  .memo{font-size:20px}
  .field{grid-template-columns:minmax(0,1fr) auto;padding:10px 8px 10px 12px}
  .field dt{grid-column:1/-1}
  .stepper{grid-template-columns:1fr;gap:12px}
  .stepper li{padding:0 0 0 24px}
  .stepper li::before{top:16px;bottom:-12px;left:5px;right:auto;width:1px;height:auto}
  .step-dot{top:3px}
  .facts{grid-template-columns:repeat(2,minmax(0,1fr))}
  .p-foot .note{display:none}
  .card{left:12px;right:12px;width:auto;top:calc(96px + env(safe-area-inset-top,0px));padding:12px;gap:10px}
  .card-title{font-size:17px}
  .find-card .card-text,.find-card .hint,.build-card .card-text{display:none}
  .yours{grid-template-columns:72px minmax(0,1fr);padding:8px;gap:10px}
  .yours canvas{width:72px;height:72px}
  .chip{min-height:32px;padding:0 8px;font-size:12.5px}
  .inspector{top:auto;bottom:calc(12px + env(safe-area-inset-bottom,0px))}
  .build-card{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:8px 12px}
  .build-card .card-title{grid-column:1/-1}
  .build-card .build-controls{display:flex;flex-direction:column;gap:8px;min-width:0}
  #keySmall{display:none}
  .build-card{grid-template-columns:1fr}
  .face-row{grid-template-columns:repeat(3,minmax(0,1fr))}
  .face-btn{min-height:44px}
  .face-btn .fk{display:block}
  .tray{left:12px;right:12px;max-width:none;transform:translateY(8px)}
  .tray.show{transform:none}
  .tile{width:112px;min-height:60px;padding:8px 10px}
  .notice{top:auto;bottom:calc(112px + env(safe-area-inset-bottom,0px))}
  .found-grid,.res{grid-template-columns:1fr}
  .keynet{--c:62px}
  .big{font-size:36px}
  .seed canvas{width:160px;height:160px}
}
@media (prefers-reduced-motion:reduce){
  .panel,.card,.tray,.toast{transition:opacity .15s}
}
