@import "https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;600;700;800&family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap";:root{--bg:#09110d;--bg-2:#101915;--panel:#101814eb;--panel-strong:#0d1310f7;--paper:#f4ecdf;--paper-2:#e9dfcf;--ink:#1a1711;--ink-soft:#625b50;--ink-muted:#8e8577;--line:#ffffff1a;--line-soft:#12100b14;--accent:#c6ff74;--accent-strong:#efffc4;--accent-soft:#c6ff742e;--danger:#ff7d5c;--neutral:#7ec9ec;--radius-xl:28px;--radius-lg:22px;--radius-md:18px;--radius-sm:14px;--font-serif:"Fraunces", Georgia, serif;--font-sans:"IBM Plex Sans", "Helvetica Neue", sans-serif;--font-mono:"IBM Plex Mono", "SFMono-Regular", monospace;--shadow:0 28px 70px #00000057;--ease-out:cubic-bezier(.22, 1, .36, 1)}*{box-sizing:border-box}html,body,#root{min-height:100%}body{color:var(--paper);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background:radial-gradient(circle at 18% 14%,#c6ff7429,#0000 25%),radial-gradient(circle at 82% 4%,#78c8ff1f,#0000 20%),linear-gradient(#0c1511 0%,#050907 100%);margin:0}button,input{font:inherit}button,[role=button]{cursor:pointer;color:inherit;-webkit-tap-highlight-color:#c6ff742e;background:0 0;border:0}button:focus-visible,input:focus-visible,[role=button]:focus-visible{outline:2px solid var(--accent);outline-offset:3px}#root{position:relative}.app-scene{min-height:100vh;padding:0;position:relative;overflow:hidden}.scene-glow{filter:blur(80px);pointer-events:none;opacity:.36;border-radius:999px;position:fixed}.scene-glow-a{background:#c6ff7424;width:52vw;height:52vw;top:5vh;left:-15vw}.scene-glow-b{background:#7ec9ec1f;width:58vw;height:58vw;bottom:12vh;right:-18vw}.app-frame{background:linear-gradient(#0b120ffa 0%,#070b09fc 100%);flex-direction:column;min-height:100dvh;display:flex;position:relative}.ticker-strip{border-bottom:1px solid var(--line);background:#ffffff05;overflow:hidden}.ticker-track{gap:18px;width:max-content;padding:10px 16px;animation:26s linear infinite tickerMove;display:flex}.ticker-item{color:#f4ecdfc7;font-size:11px;font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;align-items:center;gap:8px;display:inline-flex}.ticker-item:before{content:"";background:var(--accent);border-radius:999px;width:5px;height:5px;box-shadow:0 0 12px #c6ff74b3}.app-topbar{z-index:4;padding:calc(16px + env(safe-area-inset-top)) 18px 16px;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:linear-gradient(#0a100ef5,#0a100ec7);justify-content:space-between;align-items:flex-start;gap:16px;display:flex;position:sticky;top:0}.app-kicker,.screen-eyebrow,.screen-title,.screen-action span,.signal-data-cell span,.metric-card span,.hero-stat span,.risk-card span,.detail-stat span,.form-label,.market-card-top span,.market-card-top small,.sheet-label,.sheet-title,.ticker-item{text-transform:uppercase}.app-kicker,.screen-eyebrow,.form-label,.sheet-label{color:#f4ecdf94;letter-spacing:.18em;margin:0 0 6px;font-size:11px}.app-title{font-family:var(--font-serif);margin:0;font-size:2rem;line-height:.95}.topbar-cta,.primary-button,.ghost-button,.profile-pill,.chip-button,.filter-pill,.screen-action,.bottom-nav-item,.sheet-close,.market-card,.signal-card,.board-row{transition:transform .2s var(--ease-out), background .2s var(--ease-out), color .2s var(--ease-out), border-color .2s var(--ease-out), box-shadow .2s var(--ease-out), opacity .2s var(--ease-out)}.topbar-cta,.primary-button,.ghost-button{border-radius:999px;min-height:42px;padding:0 16px;font-weight:600}.topbar-cta,.primary-button{background:linear-gradient(135deg, var(--accent), var(--accent-strong));color:var(--ink);box-shadow:0 16px 32px #c6ff7429}.primary-button-wide{width:100%}.ghost-button{border:1px solid var(--line);color:var(--paper);background:#ffffff0a}.topbar-cta:hover,.primary-button:hover,.ghost-button:hover,.screen-action:hover,.market-card:hover,.signal-card:hover,.board-row:hover,.bottom-nav-item:hover,.profile-pill:hover,.chip-button:hover,.filter-pill:hover{transform:translateY(-2px)}.primary-button:disabled{opacity:.6;cursor:progress;transform:none}.app-main{padding:18px 18px calc(94px + env(safe-area-inset-bottom));flex:1}.screen-shell{gap:16px;display:grid}.surface-card,.hero-card,.detail-stat,.metric-card,.risk-card,.empty-card{border-radius:var(--radius-xl);background:linear-gradient(180deg, #f8f0e4fa 0%, #e9dfcff5 100%), var(--paper);color:var(--ink);box-shadow:var(--shadow);position:relative;overflow:hidden}.surface-card:after,.hero-card:after,.empty-card:after{content:"";pointer-events:none;background:linear-gradient(135deg,#ffffff61,#0000 42%);position:absolute;inset:0}.surface-card{padding:20px}.surface-card-dark{background:linear-gradient(180deg, #121c16f5 0%, #0b120ff5 100%), var(--panel);color:var(--paper);box-shadow:none;border:1px solid var(--line)}.surface-card-dark:after{background:linear-gradient(135deg,#ffffff0f,#0000 40%)}.hero-card{background:radial-gradient(circle at 90% 15%,#c6ff7424,#0000 28%),linear-gradient(#f8f0e4fa,#e9dfcff5);padding:24px}.hero-title,.screen-title,.signal-card-title-row h3,.sheet-title{font-family:var(--font-serif);margin:0;line-height:.95}.hero-title{letter-spacing:-.04em;font-size:clamp(2rem,9vw,3.4rem)}.hero-title-small{font-size:clamp(1.8rem,8vw,2.8rem)}.hero-copy,.hero-copy-dark,.form-footnote,.empty-card p,.signal-card-head small,.signal-card-title-row small,.market-card-change small{color:var(--ink-soft);margin:0;line-height:1.65}.hero-copy{margin-top:14px}.hero-copy-dark{color:#f4ecdfbd}.hero-actions,.hero-metric-row,.legend-row,.filter-pill-row,.sheet-chip-row,.snap-row,.snap-row-tight,.chip-wrap{gap:10px;display:flex}.hero-actions,.hero-metric-row{margin-top:18px}.hero-metric-row{grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.hero-stat,.metric-card,.risk-card{background:#14120d0f;border-radius:20px;padding:16px}.hero-stat strong,.metric-card strong,.risk-card strong,.detail-stat strong{font-family:var(--font-serif);margin:8px 0 4px;font-size:1.7rem;display:block}.hero-stat small,.metric-card small,.risk-card small{color:var(--ink-soft);font-size:12px}.screen-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px;display:flex}.screen-title{font-size:clamp(1.8rem,7vw,2.4rem)}.screen-action{min-height:36px;color:var(--ink);white-space:nowrap;background:#12100b0f;border-radius:999px;align-items:center;gap:8px;padding:0 12px;display:inline-flex}.screen-action span{letter-spacing:.16em;font-size:11px}.stat-banner{background:#12100b0f;border-radius:999px;align-items:baseline;gap:8px;padding:10px 14px;display:inline-flex}.stat-banner strong{font-family:var(--font-serif);font-size:1.25rem}.stat-banner span{color:var(--ink-soft);font-size:12px}.snap-row{scroll-snap-type:x proximity;padding-bottom:4px;overflow-x:auto}.snap-row-tight{overflow-x:auto}.snap-row::-webkit-scrollbar{display:none}.snap-row-tight::-webkit-scrollbar{display:none}.market-card{color:inherit;text-align:left;scroll-snap-align:start;background:#ffffff5c;border-radius:24px;flex:0 0 78%;padding:18px}.market-card-top,.signal-card-head,.signal-card-title-row,.board-row,.sheet-header,.holding-row,.allocation-row,.order-row,.liquidity-row{justify-content:space-between;gap:12px;display:flex}.market-card-top{align-items:center}.market-card-top span,.market-card-top small,.sheet-label,.signal-data-cell span,.metric-card span,.hero-stat span,.risk-card span,.detail-stat span,.form-label{color:var(--ink-muted);letter-spacing:.14em;font-size:10px;display:block}.market-card-price,.board-row strong,.holding-row strong,.allocation-row strong,.signal-card-roi strong{font-family:var(--font-serif)}.market-card-price{margin-top:12px;font-size:2rem;line-height:.92;display:block}.market-card-change{justify-content:space-between;align-items:baseline;margin:16px 0 10px;display:flex}.market-card-change strong{color:#3d7d25}.sparkline{width:100%;display:block}.board-list,.signal-stack,.holding-stack,.allocation-list,.order-book,.liquidity-stack,.memo-list{gap:12px;display:grid}.board-row,.signal-card,.holding-row,.allocation-row,.order-row,.liquidity-row{align-items:center}.board-row{width:100%;color:inherit;background:#ffffff0a;border-radius:20px;padding:14px 16px}.board-value{text-align:right}.board-value small,.holding-values small,.allocation-meta small{margin-top:4px;font-size:12px;display:block}.signal-card{background:linear-gradient(180deg, #f8f0e4fa, #e9dfcff5), var(--paper);color:var(--ink);text-align:left;box-shadow:var(--shadow);border-radius:24px;padding:18px}.signal-card.is-compact{padding:16px}.signal-card-meta{flex-direction:column;gap:6px;display:flex}.signal-badge{letter-spacing:.12em;text-transform:uppercase;border-radius:999px;justify-content:center;align-items:center;width:fit-content;min-height:28px;padding:0 12px;font-size:11px;font-weight:700;display:inline-flex}.signal-badge.is-buy{color:#447f25;background:#c6ff7433}.signal-badge.is-sell{color:#aa4e34;background:#ff7d5c2e}.signal-badge.is-hold{color:#2a718f;background:#7ec9ec2e}.signal-card-roi{text-align:right}.signal-card-roi strong{font-size:1.8rem;display:block}.signal-card-roi small{color:var(--ink-muted);font-size:11px}.signal-card-title-row{align-items:flex-end;margin:16px 0 18px}.signal-card-title-row h3{font-size:2rem}.signal-data-grid,.detail-grid,.risk-grid,.metric-row{gap:10px;display:grid}.signal-data-grid,.detail-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.metric-row{grid-template-columns:repeat(3,minmax(0,1fr));margin:18px 0}.risk-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.signal-data-cell,.detail-stat{background:#12100b0f;border-radius:18px;padding:12px}.signal-data-cell strong,.detail-stat strong{font-family:var(--font-mono);margin-top:6px;font-size:.95rem;display:block}.profile-pill,.chip-button,.filter-pill{min-height:38px;color:var(--ink);white-space:nowrap;background:#12100b0d;border:1px solid #12100b1a;border-radius:999px;justify-content:center;align-items:center;padding:0 14px;font-size:13px;font-weight:600;display:inline-flex}.profile-pill.is-active,.chip-button.is-active{background:var(--ink);color:var(--paper);border-color:var(--ink)}.filter-pill{gap:8px}.empty-card{padding:24px}.empty-card h3{font-family:var(--font-serif);margin:0 0 8px;font-size:1.7rem}.heatmap-wrap{gap:14px;display:grid}.heatmap-head{grid-template-columns:repeat(12,minmax(0,1fr));gap:6px;display:grid}.heatmap-head span{text-align:center;color:var(--ink-muted);font-size:10px;font-family:var(--font-mono);letter-spacing:.12em}.heatmap-year{gap:8px;display:grid}.heatmap-year strong{color:var(--ink-soft);font-size:11px;font-family:var(--font-mono);letter-spacing:.16em}.heatmap-grid{grid-template-columns:repeat(12,minmax(0,1fr));gap:6px;display:grid}.heatmap-cell{min-height:34px;font-size:10px;font-weight:700;font-family:var(--font-mono);border-radius:12px;place-items:center;display:grid}.allocation-wrap{justify-items:center;gap:16px;display:grid}.allocation-track{fill:none;stroke:#12100b14;stroke-width:20px}.allocation-arc{fill:none;stroke-width:20px;stroke-linecap:round}.allocation-core{fill:#ffffffb3}.allocation-total{fill:var(--ink);font-size:24px;font-family:var(--font-serif)}.allocation-label{fill:var(--ink-soft);font-size:11px;font-family:var(--font-mono);letter-spacing:.14em}.allocation-main{align-items:center;gap:10px;display:flex}.allocation-dot,.legend-dot{border-radius:999px;width:10px;height:10px}.allocation-meta{text-align:right}.holding-row,.allocation-row{border-bottom:1px solid #12100b14;padding:14px 0}.holding-row:last-child,.allocation-row:last-child{border-bottom:0}.holding-bar{background:#12100b14;border-radius:999px;flex:1;align-self:center;height:10px;margin:0 14px;overflow:hidden}.holding-bar span{border-radius:inherit;background:linear-gradient(90deg, var(--accent), var(--accent-strong));height:100%;display:block}.holding-values{text-align:right}.legend-row{flex-wrap:wrap;margin-top:12px}.legend-item{color:var(--ink-soft);align-items:center;gap:8px;font-size:12px;display:inline-flex}.legend-dot-positive{background:var(--accent)}.legend-dot-neutral{background:var(--neutral)}.chart-shell{margin-top:8px}.chart-grid-line{stroke:#12100b1a;stroke-width:1px}.surface-card-dark .chart-grid-line{stroke:#ffffff14}.chart-line{stroke-dasharray:600;stroke-dashoffset:600px;animation:chartDraw 1.1s var(--ease-out) forwards}.memo-list p,.form-footnote{margin:0}.memo-list p{color:var(--ink-soft);padding-left:16px;line-height:1.6;position:relative}.memo-list p:before{content:"";background:var(--accent);border-radius:999px;width:6px;height:6px;position:absolute;top:.7em;left:0}.contact-form{gap:16px;display:grid}.form-field{gap:8px;display:grid}.form-input{color:var(--ink);transition:border-color .2s var(--ease-out), box-shadow .2s var(--ease-out), background .2s var(--ease-out);background:#ffffff70;border:1px solid #12100b1a}.form-input::placeholder{color:var(--ink-muted)}.form-input:focus-visible{border-color:#c6ff74b8;box-shadow:0 0 0 6px #c6ff7424}.form-error{color:var(--danger);margin:0;font-size:13px}.form-footnote{color:var(--ink-muted);line-height:1.6}.sheet-layer{z-index:20;position:fixed;inset:0}.sheet-scrim{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#030705b8;position:absolute;inset:0}.bottom-sheet,.detail-sheet{border-top:1px solid var(--line);max-height:calc(100vh - 42px);animation:sheetUp .38s var(--ease-out) both;background:linear-gradient(#101814fa,#080d0afc);border-radius:28px 28px 0 0;position:absolute;bottom:0;left:0;right:0;overflow-y:auto;box-shadow:0 -30px 70px #00000059}.bottom-sheet{padding:12px 20px calc(28px + env(safe-area-inset-bottom))}.detail-sheet{padding:18px 18px calc(28px + env(safe-area-inset-bottom))}.sheet-handle{background:#f4ecdf47;border-radius:999px;width:42px;height:5px;margin:0 auto 14px}.sheet-header{align-items:center;margin-bottom:18px}.sheet-title{color:var(--paper);font-size:1.9rem}.sheet-close{background:#ffffff0f;border-radius:999px;width:42px;height:42px;font-size:26px;line-height:1}.sheet-group{margin-bottom:18px}.chip-wrap{flex-wrap:wrap}.detail-body{gap:16px;display:grid}.detail-hero{background:radial-gradient(circle at 100% 0,#c6ff7429,#0000 30%),#ffffff0a;border-radius:24px;padding:20px}.detail-price{font-family:var(--font-serif);margin-top:12px;font-size:2.4rem;line-height:.92;display:block}.detail-hero small{color:#f4ecdfad;margin-top:8px;display:block}.detail-stat{color:var(--paper);background:#ffffff0d}.detail-stat span{color:#f4ecdf8f}.detail-stat strong{color:var(--paper);font-size:1rem}.order-book,.liquidity-stack{gap:10px;display:grid}.order-row,.liquidity-row{background:#ffffff0a;border-radius:18px;padding:12px 14px}.liquidity-bars{flex-direction:column;flex:1;gap:6px;display:flex}.liquidity-bar{border-radius:999px;height:8px}.liquidity-bar-past{background:#f4ecdf38}.liquidity-bar-today{background:linear-gradient(90deg, var(--accent), var(--accent-strong))}.bottom-nav{z-index:4;padding:10px 16px calc(14px + env(safe-area-inset-bottom));border-top:1px solid var(--line);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:linear-gradient(#0a100ed1,#0a100efa);grid-template-columns:repeat(4,1fr);gap:8px;display:grid;position:sticky;bottom:0}.bottom-nav-item{color:#f4ecdf9e;border-radius:18px;justify-items:center;gap:6px;padding:10px 6px;display:grid}.bottom-nav-item span{letter-spacing:.08em;text-transform:uppercase;font-size:10px}.bottom-nav-item.is-active{color:var(--paper);background:#c6ff741f}.success-card{gap:18px;display:grid}.motion-rise{opacity:0;animation:riseIn .72s var(--ease-out) forwards;transform:translateY(18px)}.motion-delay-1{animation-delay:80ms}.motion-delay-2{animation-delay:.16s}.motion-delay-3{animation-delay:.24s}.is-positive{color:var(--accent)!important}.is-negative{color:var(--danger)!important}.is-neutral{color:var(--neutral)!important}@keyframes riseIn{to{opacity:1;transform:translateY(0)}}@keyframes chartDraw{to{stroke-dashoffset:0}}@keyframes sheetUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes tickerMove{0%{transform:translate(0)}to{transform:translate(-50%)}}@media (width>=680px){.app-scene{padding:24px 0}.app-frame{border:1px solid var(--line);border-radius:34px;width:min(100%,460px);min-height:calc(100vh - 48px);margin:0 auto;overflow:hidden;box-shadow:0 40px 120px #00000075}.detail-sheet,.bottom-sheet{border-radius:28px 28px 0 0;width:min(460px,100vw - 32px);left:50%;right:auto;transform:translate(-50%)}}@media (width<=420px){.app-main,.app-topbar{padding-left:14px;padding-right:14px}.hero-metric-row,.metric-row,.signal-data-grid,.detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.risk-grid{grid-template-columns:1fr}.market-card{flex-basis:86%}.screen-header{align-items:center}.screen-action span{display:none}.screen-title{font-size:1.9rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
