/* ============ keyframes ============ */
@keyframes boot{0%{clip-path:inset(0 0 100% 0);opacity:.3}100%{clip-path:inset(0 0 0 0);opacity:1}}
@keyframes screen-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes flicker{0%{opacity:0}20%{opacity:.6}30%{opacity:.1}50%{opacity:1}65%{opacity:.5}100%{opacity:1}}
@keyframes ring-draw{to{stroke-dashoffset:var(--o)}}
@keyframes pulse{0%{transform:scale(.6);opacity:.9}100%{transform:scale(1.9);opacity:0}}
@keyframes hotflash{0%,100%{box-shadow:0 0 0 0 rgba(var(--kf-hot,224,112,95),.0)}50%{box-shadow:0 0 0 3px rgba(var(--kf-hot,224,112,95),.35),0 0 16px rgba(var(--kf-hot,224,112,95),.5)}}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
@keyframes toast-in{from{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%,0)}}
@keyframes pal-in{from{opacity:0;transform:translateY(-8px) scale(.98)}to{opacity:1;transform:none}}
@keyframes fade-in{from{opacity:0}to{opacity:1}}
@keyframes bar-grow{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes rise{from{transform:scaleY(0)}to{transform:scaleY(1)}}
@keyframes ring-ping{0%{box-shadow:0 0 0 0 rgba(var(--kf-hot,224,112,95),.5)}100%{box-shadow:0 0 0 12px rgba(var(--kf-hot,224,112,95),0)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes spin-r{to{transform:rotate(-360deg)}}
@keyframes land{0%{opacity:0;transform:translateY(-10px) scale(.98)}60%{opacity:1;transform:translateY(2px) scale(1.01)}100%{opacity:1;transform:none}}
@keyframes sweep{0%{transform:translateX(-120%)}100%{transform:translateX(220%)}}
@keyframes pop{0%{transform:scale(1)}40%{transform:scale(1.35)}100%{transform:scale(1)}}
@keyframes corepulse{0%,100%{opacity:.8}50%{opacity:1}}

/* ============ shell ============ */
.app{display:grid;grid-template-columns:232px minmax(0,1fr);min-height:100vh}
.rail{position:sticky;top:0;height:100vh;background:linear-gradient(180deg,rgba(6,14,22,.92),rgba(4,8,13,.92));border-right:1px solid var(--line1);display:flex;flex-direction:column;padding:16px 12px 14px;backdrop-filter:blur(10px)}
.brand{display:flex;align-items:center;gap:10px;padding:4px 8px 20px}
.brand .mark{width:30px;height:30px;flex:none;background:linear-gradient(135deg,rgba(212,180,131,.25),rgba(33,199,217,.05));border:1px solid var(--line3);display:grid;place-items:center;box-shadow:var(--glow);clip-path:polygon(0 0,calc(100% - 7px) 0,100% 7px,100% 100%,7px 100%,0 calc(100% - 7px))}
.brand .mark svg{width:16px;height:16px;stroke:var(--accent)}
.brand .wm{font-family:var(--serif);font-weight:700;font-size:17px;letter-spacing:-.01em;line-height:1;color:var(--text1)}
.brand .wm small{display:block;font-family:var(--mono);font-size:9px;color:var(--text3);font-weight:400;letter-spacing:.16em;margin-top:4px;text-transform:uppercase}
.navlbl{font-family:var(--mono);font-size:9px;color:var(--text3);text-transform:uppercase;letter-spacing:.18em;padding:14px 10px 6px}
.nav{display:flex;flex-direction:column;gap:2px}
.nav a{display:flex;align-items:center;gap:10px;height:36px;padding:0 10px;color:var(--text2);font-weight:500;position:relative;transition:background var(--t1) var(--ease),color var(--t1) var(--ease);clip-path:polygon(0 0,calc(100% - 6px) 0,100% 6px,100% 100%,0 100%)}
.nav a:hover{background:var(--accent-soft);color:var(--text1)}
.nav a.on{background:linear-gradient(90deg,rgba(212,180,131,.18),rgba(212,180,131,.04));color:var(--text1);text-shadow:0 0 12px rgba(212,180,131,.5)}
.nav a.on::before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:2px;background:var(--accent);box-shadow:var(--glow)}
.nav a svg{width:18px;height:18px;flex:none;opacity:.8}
.nav a.on svg{opacity:1;color:var(--accent);filter:drop-shadow(0 0 6px rgba(212,180,131,.7))}
.nav .badge{margin-left:auto}
.rail .foot{margin-top:auto;display:grid;gap:10px;padding:0 4px}
.rail .me{display:flex;align-items:center;gap:10px;padding:8px;transition:background var(--t1)}
.rail .me .n{font-size:13px;font-weight:500;line-height:1.2}
.rail .me .n small{display:block;color:var(--text3);font-size:11px;font-weight:400}
.notice{font-family:var(--mono);font-size:9.5px;color:var(--text3);padding:0 8px;line-height:1.5;letter-spacing:.08em;text-transform:uppercase}
.main{min-width:0}
.top{position:sticky;top:0;z-index:20;height:56px;display:flex;align-items:center;gap:12px;padding:0 var(--gutter);border-bottom:1px solid var(--line1);background:var(--glass);backdrop-filter:blur(18px) saturate(1.2);-webkit-backdrop-filter:blur(18px) saturate(1.2)}
.find{flex:1;max-width:480px;display:flex;align-items:center;gap:10px;height:36px;padding:0 12px;background:rgba(212,180,131,.05);border:1px solid var(--line2);color:var(--text3);cursor:text;transition:border-color var(--t1),box-shadow var(--t1);clip-path:polygon(0 0,calc(100% - 8px) 0,100% 8px,100% 100%,8px 100%,0 calc(100% - 8px))}
.find:hover{border-color:var(--line3);box-shadow:var(--glow)}
.find svg{width:16px;height:16px;flex:none;color:var(--accent)}
.find span.ph{height:auto;margin:0;border:0;background:none;border-radius:0;opacity:1;color:var(--text2);flex:1;font-size:14px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
kbd{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 5px;border-radius:var(--r1);background:rgba(212,180,131,.08);border:1px solid var(--line2);color:var(--text2);font:500 10px/1 var(--mono)}
.pill{display:inline-flex;align-items:center;gap:7px;height:30px;padding:0 11px;border:1px solid var(--line2);background:rgba(212,180,131,.05);font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--text2);white-space:nowrap;clip-path:polygon(0 0,calc(100% - 7px) 0,100% 7px,100% 100%,7px 100%,0 calc(100% - 7px))}
.pill.fake{color:var(--amber);border-color:rgba(230,180,90,.4);background:rgba(230,180,90,.08)}
.dot{width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--accent);display:inline-block}
.pdot{position:relative;width:8px;height:8px;border-radius:50%;background:var(--hot);box-shadow:0 0 8px var(--hot);display:inline-block;flex:none}
.pdot::after{content:"";position:absolute;inset:0;border-radius:50%;border:1.5px solid var(--hot);animation:pulse 1.6s ease-out infinite}
.avatar{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:50%;font-family:var(--mono);font-size:11px;font-weight:600;color:#16130D;flex:none;letter-spacing:.02em;box-shadow:0 0 0 1px rgba(212,180,131,.3),0 0 12px -2px rgba(212,180,131,.5)}
.avatar.sm{width:24px;height:24px;font-size:9px}
.avatar.lg{width:44px;height:44px;font-size:14px}
.thumb{width:56px;height:44px;flex:none;display:grid;place-items:center;position:relative;overflow:hidden;border:1px solid var(--line2);clip-path:polygon(0 0,calc(100% - 7px) 0,100% 7px,100% 100%,7px 100%,0 calc(100% - 7px))}
.thumb svg{width:24px;height:24px;color:var(--accent);filter:drop-shadow(0 0 6px rgba(212,180,131,.6))}
.thumb.lg{width:88px;height:68px}.thumb.lg svg{width:34px;height:34px}

/* ============ page + headline ============ */
.page{padding:24px var(--gutter) 120px;max-width:1720px;margin-inline:auto}
.screen{animation:boot .5s var(--ease) both}
.sysline{font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);margin-bottom:10px;display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.sysline span{color:var(--text3)}
.sysline::before{content:"";width:22px;height:1px;background:var(--accent);box-shadow:var(--glow)}
.head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:22px}
.head > div:first-child{min-width:0;flex:1}
.head-act{flex:none;display:flex;gap:8px;align-items:center}
.headline{font-family:var(--serif);font-size:var(--fs-h);line-height:1.2;letter-spacing:-.015em;font-weight:500;color:var(--text2);margin:0;max-width:900px;text-wrap:balance}
.headline b{font-weight:700;color:var(--text1);text-shadow:0 0 18px rgba(212,180,131,.35)}
.headline i{font-style:normal;color:var(--accent)}
.lede{color:var(--text2);margin:8px 0 0;font-size:14px;max-width:720px}
.lede a{color:var(--accent)}
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line1);margin:0 0 20px;overflow-x:auto;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tabs a{display:inline-flex;align-items:center;gap:7px;height:38px;padding:0 12px;color:var(--text2);border-bottom:2px solid transparent;white-space:nowrap;font-family:var(--sans);font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;margin-bottom:-1px;cursor:pointer;transition:color var(--t1)}
.tabs a:hover{color:var(--text1)}
.tabs a.on{color:var(--accent);border-color:var(--accent);text-shadow:0 0 12px rgba(212,180,131,.5)}
.tabs .cnt{font-family:var(--mono);font-size:10px;color:var(--text2);background:rgba(212,180,131,.08);border:1px solid var(--line2);border-radius:var(--r1);padding:1px 6px}
.sec{font-family:var(--sans);font-size:11px;font-weight:600;color:var(--accent);text-transform:uppercase;letter-spacing:.16em;margin:28px 0 10px;display:flex;align-items:center;justify-content:space-between;opacity:.9}
.sec:first-child{margin-top:0}
.sec > span:first-child::before{content:"// ";opacity:.6}
.muted{color:var(--text2)} .faint{color:var(--text3)} .small{font-size:13px} .tiny{font-size:12px} .xs{font-size:11px}
.row{display:flex;align-items:center;gap:10px}
.between{justify-content:space-between} .wrap{flex-wrap:wrap} .end{justify-content:flex-end}
.grid{display:grid;gap:16px}
.g2{grid-template-columns:minmax(0,1fr) 320px;align-items:start}
.g2e{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
.hair{height:1px;background:var(--line1);margin:14px 0}
.gridlines{position:fixed;inset:0;pointer-events:none;z-index:99;background-image:linear-gradient(rgba(212,180,131,.1) 1px,transparent 1px),linear-gradient(90deg,rgba(212,180,131,.1) 1px,transparent 1px);background-size:8px 8px;display:none}
.gridlines.on{display:block}


/* Sign-in screen: no app chrome before you are signed in */
body.signin .app{grid-template-columns:minmax(0,1fr)}
body.signin .rail,body.signin .bottombar,body.signin .top .find,body.signin #morebtn,body.signin #czbtn,body.signin #txpill{display:none!important}
@media (max-width:420px){.backtop .bt{display:none}.backtop.on{padding:0 8px}}

/* in-app links keep a hand cursor while nopeek.js parks their href */
a[data-peek]{cursor:pointer}

/* sign-in: PIN placeholders read normally (dots keep the wide spacing) and the card stays centered */
body.signin #pin::placeholder,body.signin #pin2::placeholder{letter-spacing:normal;font-size:16px}
body.signin .app{overflow-x:hidden}
