@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@300;400;500&family=JetBrains+Mono:wght@400;600&family=Noto+Sans+KR:wght@400;500;600;700&display=swap');

:root{
  --void:#08090c; --bg:#0b0d12; --surface:#11141b; --surface2:#171b24;
  --line:rgba(235,220,176,.12); --line2:rgba(255,255,255,.08);
  --linen:#ebe4d4; --muted:#8f8a80; --dim:#5f5a54;
  --brass:#d6b96f; --green:#68d391; --amber:#e5b454; --red:#ff5d5d;
  --green-bg:rgba(104,211,145,.10); --amber-bg:rgba(229,180,84,.10); --red-bg:rgba(255,93,93,.10);
  --font:'JetBrains Mono',monospace; --kr:'Noto Sans KR',sans-serif; --display:'Cormorant Garamond',serif;
}
*{box-sizing:border-box} html,body{margin:0;min-height:100%;background:var(--void);color:var(--linen);font-family:var(--kr);-webkit-font-smoothing:antialiased} body{overflow-x:hidden}.hidden{display:none!important}
button,textarea,input{font:inherit} button{cursor:pointer} textarea{width:100%;border:1px solid var(--line2);background:var(--surface2);color:var(--linen);border-radius:12px;padding:12px;resize:none;outline:none} textarea:focus{border-color:rgba(214,185,111,.45)}
.opening{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;background:radial-gradient(circle at center,#141017 0,#08090c 64%);overflow:hidden;transition:opacity .55s ease,visibility .55s ease}.opening.is-hidden{opacity:0;visibility:hidden;pointer-events:none}.opening-grid{position:absolute;inset:0;background-image:linear-gradient(to right,rgba(214,185,111,.08) 1px,transparent 1px),linear-gradient(to bottom,rgba(214,185,111,.08) 1px,transparent 1px);background-size:32px 32px;mask-image:radial-gradient(circle,#000 0,transparent 72%)}.opening-lines{position:absolute;inset:-20%;background:conic-gradient(from 130deg,transparent,rgba(214,185,111,.25),transparent,rgba(148,23,48,.25),transparent);filter:blur(24px);animation:aurora 6s ease-in-out infinite alternate;mix-blend-mode:screen}.opening-mark{text-align:center;position:relative;z-index:1}.opening-kicker,.opening-sub,.opening-enter{display:block;font-family:var(--font);letter-spacing:.22em;text-transform:uppercase}.opening-kicker{font-size:13px;color:rgba(235,228,212,.72);margin-bottom:18px}.opening-mark strong{display:block;font:300 76px/1 var(--display);letter-spacing:.14em;color:#f6f1df;text-shadow:0 0 44px rgba(214,185,111,.22)}.opening-rule{display:block;width:76px;height:1px;margin:22px auto;background:linear-gradient(to right,transparent,var(--brass),transparent)}.opening-sub{font-size:11px;color:rgba(235,228,212,.62)}.opening-enter{position:absolute;bottom:64px;left:50%;transform:translateX(-50%);border:0;background:transparent;color:#f0cf78;font-size:12px;font-weight:600;text-shadow:0 0 14px rgba(214,185,111,.55);animation:pulse 2.2s ease-in-out infinite}.opening-skip{position:absolute;right:18px;bottom:18px;border:1px solid rgba(214,185,111,.32);background:rgba(0,0,0,.32);color:rgba(246,241,223,.72);border-radius:999px;padding:8px 12px;font-family:var(--font);font-size:10px;letter-spacing:.18em}@keyframes aurora{to{transform:rotate(16deg) scale(1.05);opacity:.85}}@keyframes pulse{0%,100%{opacity:.45}50%{opacity:1}}
.app-shell{max-width:460px;margin:0 auto;min-height:100dvh;background:linear-gradient(180deg,#0b0d12,#090a0e);padding-bottom:82px}.topbar{position:sticky;top:0;z-index:20;display:flex;justify-content:space-between;gap:12px;padding:14px 16px 10px;background:rgba(8,9,12,.86);backdrop-filter:blur(16px);border-bottom:1px solid var(--line2)}.brand{font:500 24px/1 var(--display);letter-spacing:.14em}.date-row{margin-top:6px;display:flex;flex-wrap:wrap;gap:7px;align-items:center;color:var(--muted);font:10px var(--font)}.reset-chip{border:1px solid var(--line);background:rgba(214,185,111,.06);border-radius:7px;padding:4px 7px;color:#b8a878}.topbar-right{text-align:right;font:10px var(--font);color:var(--muted)}.clock{display:block;color:var(--linen);font-size:12px;margin-top:4px}.conn.ok{color:var(--green)}.conn.bad{color:var(--red)}
.dashboard{padding:12px 14px;display:flex;flex-direction:column;gap:12px}.status-card,.card{border:1px solid var(--line2);background:linear-gradient(180deg,rgba(255,255,255,.035),rgba(255,255,255,.018));border-radius:18px;padding:16px;box-shadow:0 16px 40px rgba(0,0,0,.22)}.status-card{padding:22px 18px}.status-card.ready{border-color:rgba(104,211,145,.48);background:var(--green-bg)}.status-card.caution{border-color:rgba(229,180,84,.5);background:var(--amber-bg)}.status-card.stop{border-color:rgba(255,93,93,.58);background:var(--red-bg)}.eyebrow{display:block;font:10px var(--font);letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:7px}.status-word{font:300 58px/.9 var(--display);letter-spacing:.08em}.ready .status-word{color:var(--green)}.caution .status-word{color:var(--amber)}.stop .status-word{color:var(--red)}.status-card p,.close-card p{margin:8px 0 0;color:var(--muted);font-size:13px}.cta-zone{display:flex;flex-direction:column;gap:10px}.btn{width:100%;border:1px solid var(--line2);border-radius:14px;padding:13px 14px;background:var(--surface2);color:var(--linen);font-weight:700}.btn.primary{background:linear-gradient(135deg,rgba(214,185,111,.22),rgba(214,185,111,.08));border-color:rgba(214,185,111,.34)}.btn.danger{background:linear-gradient(135deg,rgba(255,93,93,.32),rgba(255,93,93,.10));border-color:rgba(255,93,93,.48);color:#ffdede}.btn.secondary{background:transparent}.btn:disabled{opacity:.45;cursor:not-allowed}.ghost{border:1px solid var(--line2);background:transparent;color:var(--muted);border-radius:10px;padding:8px 10px;font-size:12px}.card-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.card h2{margin:0;font-size:17px}.pill{font:11px var(--font);border:1px solid var(--line);border-radius:999px;padding:5px 9px;color:#c9b46d;background:rgba(214,185,111,.07)}.journal-list{display:flex;flex-direction:column;gap:8px;margin-top:12px}.journal-item{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;border:1px solid var(--line2);background:rgba(255,255,255,.025);border-radius:12px;padding:10px}.journal-main{font-size:13px}.journal-review{grid-column:1/-1;color:var(--muted);font-size:12px}.tag{font:10px var(--font);border-radius:6px;padding:3px 6px}.tag.win{color:var(--green);background:var(--green-bg)}.tag.loss,.tag.rule{color:var(--red);background:var(--red-bg)}.tag.be{color:var(--amber);background:var(--amber-bg)}.empty{color:var(--dim);font-size:13px;padding:12px 0}.close-card{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center}.close-card .btn{width:auto;white-space:nowrap}.account-summary,.weekly-summary{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:12px 0}.metric{border:1px solid var(--line2);border-radius:12px;padding:10px;background:rgba(255,255,255,.024)}.metric span{display:block;font:10px var(--font);color:var(--muted);text-transform:uppercase}.metric strong{display:block;margin-top:4px;font:600 15px var(--font)}.account-list{display:flex;flex-direction:column;gap:8px}.account-row{border:1px solid var(--line2);border-radius:12px;padding:11px;background:rgba(255,255,255,.02)}.account-row-top{display:flex;justify-content:space-between;gap:10px}.account-name{font-weight:700}.account-meta{color:var(--muted);font:10px var(--font)}.account-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px;font:11px var(--font)}.pos{color:var(--green)}.neg{color:var(--red)}.warn{color:var(--amber)}
.locked-screen{min-height:calc(100dvh - 82px);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:28px}.lock-orb{width:78px;height:78px;border:1px solid rgba(255,93,93,.45);background:var(--red-bg);border-radius:999px;display:grid;place-items:center;color:var(--red);font-size:32px}.locked-screen h1{font-size:21px;margin:20px 0 8px}.locked-screen p{color:var(--muted);margin:0 0 22px}.bottom-nav{position:fixed;left:50%;bottom:0;transform:translateX(-50%);z-index:30;width:min(460px,100%);display:grid;grid-template-columns:repeat(4,1fr);background:rgba(8,9,12,.92);border-top:1px solid var(--line2);backdrop-filter:blur(16px);padding:8px 8px max(8px,env(safe-area-inset-bottom))}.bottom-nav button{border:0;background:transparent;color:var(--dim);font:10px var(--font);letter-spacing:.12em;padding:10px 4px}.bottom-nav button.active{color:var(--brass)}
.sheet{width:min(430px,calc(100vw - 24px));border:1px solid var(--line);border-radius:22px;background:var(--bg);color:var(--linen);padding:0}.sheet::backdrop{background:rgba(0,0,0,.72);backdrop-filter:blur(4px)}.sheet-inner{padding:16px;display:flex;flex-direction:column;gap:13px}.sheet header{display:flex;justify-content:space-between;align-items:center}.sheet h2{margin:0}.x{border:0;background:transparent;color:var(--muted);font-size:24px}.sheet label{display:flex;flex-direction:column;gap:7px;color:var(--muted);font-size:13px}.sheet input[type="checkbox"]{margin-right:8px}.segmented{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.segmented button{border:1px solid var(--line2);background:var(--surface);color:var(--muted);border-radius:12px;padding:11px}.segmented button.active{border-color:rgba(214,185,111,.45);color:var(--linen);background:rgba(214,185,111,.12)}.closeout-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.closeout-summary div{border:1px solid var(--line2);border-radius:12px;padding:10px;text-align:center}.closeout-summary span{display:block;font:10px var(--font);color:var(--muted)}.closeout-summary strong{font:600 20px var(--font)}.validation{font-size:12px;color:var(--amber);min-height:18px}.validation.error{color:var(--red)}.validation.ok{color:var(--green)}.audit{font:11px var(--font);color:var(--muted);min-height:16px}.weekly-card p,.archive-card p{margin:4px 0 0;color:var(--muted);font-size:12px}.weekly-review{border:1px solid var(--line2);border-radius:12px;background:rgba(255,255,255,.02);padding:10px;display:flex;flex-direction:column;gap:7px}.review-line{font-size:12px;color:var(--muted);line-height:1.45}.review-line b{color:var(--linen)}.archive-status{margin-top:12px;border:1px solid var(--line2);border-radius:12px;background:rgba(255,255,255,.02);padding:10px;color:var(--muted);font-size:12px;line-height:1.45;word-break:break-all}.archive-status.ok{color:var(--green);border-color:rgba(104,211,145,.28)}.archive-status.error{color:var(--red);border-color:rgba(255,93,93,.3)}.archive-status span{color:var(--muted);font-family:var(--font);font-size:10px}
@media (min-width:760px){.app-shell{border-left:1px solid var(--line2);border-right:1px solid var(--line2)}}
@media (prefers-reduced-motion:reduce){.opening{display:none}.opening-lines,.opening-enter{animation:none}}
