:root{--paper: #fbfaf5;--paper-stripe: #eaf1e7;--paper-card: #ffffff;--ink: #1c2620;--ink-faint: #5b6b60;--rule: #c9d3c6;--rule-strong: #9fb0a2;--header: #16211c;--header-ink: #e9efe6;--gain: #1f6f4a;--loss: #9a2f2f;--stamp-open: #2b4c7e;--font-display: "Source Serif 4", Georgia, serif;--font-body: "IBM Plex Sans", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: "IBM Plex Mono", "SFMono-Regular", Menlo, monospace;--radius: 3px}[data-theme=dark]{--paper: #0f1410;--paper-stripe: #1a1f1a;--paper-card: #151a15;--ink: #e0e5e0;--ink-faint: #8a9589;--rule: #2a3129;--rule-strong: #3d4839;--header: #0a0f0a;--header-ink: #d1d8ce;--gain: #1f6f4a;--loss: #d15c5c;--stamp-open: #5fa8d9}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:15px;line-height:1.5;transition:background-color .3s ease,color .3s ease}a{color:inherit}.mono{font-family:var(--font-mono);white-space:nowrap}.muted{color:var(--ink-faint)}.app-shell{min-height:100%;display:flex;flex-direction:column}.boot-screen,.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);color:var(--ink-faint);background:var(--paper)}.nav{background:var(--header);color:var(--header-ink);display:flex;align-items:center;gap:2.5rem;padding:.9rem 2rem;border-bottom:3px solid var(--gain);position:relative;transition:background-color .3s ease,border-bottom-color .3s ease}.nav-mark a{color:inherit;text-decoration:none}.nav-mark{font-family:var(--font-display);font-weight:700;font-size:1.3rem;letter-spacing:.02em}.nav-hamburger{display:none;margin-left:auto;background:none;border:none;color:var(--header-ink);font-size:1.4rem;line-height:1;padding:.2rem .3rem;cursor:pointer;transition:color .3s ease}.nav-hamburger:hover{color:#e9efe6e6}.nav-links{display:flex;gap:1.75rem;flex:1}.nav-links a{text-decoration:none;color:#e9efe6b8;font-size:.92rem;letter-spacing:.01em;padding-bottom:4px;border-bottom:2px solid transparent;transition:color .2s ease,border-bottom-color .2s ease}.nav-links a.active,.nav-links a:hover{color:var(--header-ink);border-bottom-color:var(--gain)}.nav-logout-mobile{display:none}.nav-username{color:#e9efe699;font-size:.82rem;font-family:var(--font-mono)}.nav-logout{background:none;border:1px solid rgba(233,239,230,.3);color:var(--header-ink);padding:.4rem .9rem;border-radius:var(--radius);cursor:pointer;font-size:.85rem;transition:border-color .2s ease,color .2s ease}.nav-logout:hover{border-color:var(--header-ink)}.nav-links button.nav-theme-toggle{background:none;border:none;font-family:inherit;text-decoration:none;color:#e9efe6b8;font-size:.92rem;letter-spacing:.01em;padding-bottom:4px;border-bottom:2px solid transparent;cursor:pointer;white-space:nowrap;transition:color .2s ease,border-bottom-color .2s ease}.nav-links button.nav-theme-toggle:hover{color:var(--header-ink);border-bottom-color:var(--gain)}.app-main{flex:1;padding:2.5rem 2rem 4rem;max-width:1080px;width:100%;margin:0 auto}.page-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:1.75rem;gap:1rem;flex-wrap:wrap}.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:.72rem;color:var(--ink-faint);margin-bottom:.3rem}h1{font-family:var(--font-display);font-weight:600;font-size:1.9rem;margin:0}.net-total-inline{font-size:1.1rem;color:var(--ink-faint);margin-left:.5rem}h2{font-family:var(--font-display);font-weight:600;font-size:1.2rem;margin:0 0 .9rem;border-bottom:1px solid var(--rule);padding-bottom:.4rem;transition:border-bottom-color .3s ease}.section{margin-top:2.5rem}.button-row{display:flex;align-items:center;gap:.6rem}.kpi-strip{display:flex;flex-wrap:wrap;border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden;background:var(--paper-card);transition:background-color .3s ease,border-color .3s ease}.kpi{flex:1 1 180px;padding:1rem 1.25rem;background:var(--paper-card);border-right:1px solid var(--rule);border-bottom:1px solid var(--rule)}.kpi-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);margin-bottom:.35rem}.kpi-value{font-family:var(--font-mono);font-size:1.5rem;font-weight:500}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--rule);border-radius:var(--radius);transition:border-color .3s ease}.table-scroll .ledger-table{border:none;min-width:var(--table-min-width, 640px)}.ledger-table{width:100%;border-collapse:collapse;background:var(--paper-card);border:1px solid var(--rule);font-size:.9rem;table-layout:fixed;transition:background-color .3s ease,border-color .3s ease}.ledger-table th{text-align:left;font-weight:600;font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);padding:.6rem .8rem;border-bottom:2px solid var(--rule-strong);transition:border-bottom-color .3s ease}.ledger-table td{padding:.55rem .8rem;border-bottom:1px solid var(--rule);vertical-align:middle;overflow-wrap:break-word;transition:border-color .3s ease,background-color .3s ease}.ledger-table tr.stripe{background:var(--paper-stripe)}.ledger-table tbody tr:hover{background-color:var(--paper-stripe)}.symbol-link{font-weight:600;text-decoration:none;border-bottom:1px dashed var(--rule-strong);transition:border-bottom-color .2s ease}.symbol-link:hover{border-bottom-color:var(--ink)}.pl-gain{color:var(--gain)}.pl-loss{color:var(--loss)}.trade-edit-cell{background:var(--paper-stripe);padding:1rem 1.1rem!important}.trade-edit-form .form-row{margin-bottom:.75rem}.trade-edit-form label{min-width:130px}.trade-edit-hint{font-size:.8rem;margin:0 0 .75rem}.row-actions{display:flex;flex-wrap:nowrap;gap:.6rem;align-items:center;justify-content:flex-end;white-space:nowrap}.comment-detail{background:var(--paper-stripe);color:var(--ink-faint);font-size:.85rem;padding:.6rem .8rem!important;white-space:normal;border-top:none}.comment-detail-label{color:var(--ink);font-weight:600;margin-right:.3rem}.ledger-table td input,.ledger-table td select{width:100%;min-width:0;box-sizing:border-box}.empty-state{padding:1.5rem;text-align:center;color:var(--ink-faint);border:1px dashed var(--rule);border-radius:var(--radius);background:var(--paper-card);transition:background-color .3s ease,border-color .3s ease}.stamp{display:inline-block;font-family:var(--font-mono);font-size:.7rem;font-weight:600;letter-spacing:.08em;padding:.2rem .55rem;border:2px solid currentColor;border-radius:2px;transform:rotate(-2deg)}.stamp-open{color:var(--stamp-open)}.stamp-win{color:var(--gain)}.stamp-loss{color:var(--loss)}.card{background:var(--paper-card);border:1px solid var(--rule);border-radius:var(--radius);padding:1.25rem 1.4rem;transition:background-color .3s ease,border-color .3s ease}.form-card{margin-bottom:1.5rem}.form-row{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:.9rem}label{display:flex;flex-direction:column;gap:.3rem;font-size:.82rem;color:var(--ink-faint);margin-bottom:.9rem}.form-row label{margin-bottom:0}label.grow{flex:1;min-width:200px}input,select,textarea{font-family:var(--font-body);font-size:.92rem;color:var(--ink);background:var(--paper);border:1px solid var(--rule-strong);border-radius:var(--radius);padding:.5rem .65rem;transition:background-color .2s ease,border-color .2s ease,color .2s ease}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--gain);box-shadow:0 0 0 2px #1f6f4a1f}[data-theme=dark] input:focus,[data-theme=dark] select:focus,[data-theme=dark] textarea:focus{box-shadow:0 0 0 2px #5fb86a33}textarea{font-family:var(--font-body);resize:vertical}.btn{font-family:var(--font-body);font-size:.88rem;font-weight:500;padding:.55rem 1.1rem;border-radius:var(--radius);border:1px solid var(--rule-strong);background:var(--paper-card);color:var(--ink);cursor:pointer;transition:background-color .2s ease,border-color .2s ease,color .2s ease}.btn:hover{border-color:var(--ink)}.btn-primary{background:var(--gain);color:var(--header-ink);border-color:var(--gain);text-decoration:none}.btn-primary:hover{background:#0e1712}[data-theme=dark] .btn-primary:hover{background:#050805}.btn-danger{color:var(--paper-card);border-color:var(--loss);background:var(--loss)}.btn:disabled{opacity:.5;cursor:not-allowed}.link-btn{background:none;border:none;color:var(--ink-faint);text-decoration:underline;cursor:pointer;font-size:.82rem;padding:0;transition:color .2s ease}.link-btn:hover{color:var(--loss)}.link-btn:disabled{color:var(--gain);text-decoration:none;cursor:default}.tabs{display:flex;gap:.4rem;margin-top:1.25rem;margin-bottom:1.25rem}.tabs-compact{margin-bottom:1rem}.tab{background:none;border:1px solid var(--rule);border-radius:var(--radius);padding:.4rem .9rem;font-size:.82rem;color:var(--ink-faint);cursor:pointer;transition:background-color .2s ease,color .2s ease}.tab.active{background:var(--gain);border-color:var(--gain);color:var(--header-ink)}.notes-list{display:flex;flex-direction:column;gap:1rem}.note-card{background:var(--paper-card);border:1px solid var(--rule);border-left:3px solid var(--gain);border-radius:var(--radius);padding:1rem 1.25rem;transition:background-color .3s ease,border-color .3s ease}.note-head{display:flex;justify-content:space-between;margin-bottom:.4rem}.note-category{text-transform:uppercase;font-size:.68rem;letter-spacing:.08em;color:var(--gain);font-weight:600}.note-date{font-size:.75rem;color:var(--ink-faint)}.note-card h3{margin:0 0 .4rem;font-family:var(--font-display);font-size:1.05rem}.note-card p{margin:0 0 .6rem;white-space:pre-wrap}.login-card{background:var(--paper-card);border:1px solid var(--rule);border-top:4px solid var(--gain);border-radius:var(--radius);padding:2.5rem;width:320px;text-align:left;transition:background-color .3s ease,border-color .3s ease}.login-mark{font-family:var(--font-display);font-size:1.6rem;font-weight:700;margin-bottom:.3rem}.login-sub{color:var(--ink-faint);font-size:.85rem;margin:0 0 1.5rem}.login-label{font-size:.8rem}.login-card input{width:100%;margin-bottom:1rem}.login-card .btn{width:100%}@media (max-width: 720px){.nav-hamburger{display:block}.nav-logout,.nav-username{display:none}.nav-links{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;gap:0;background:var(--header);border-bottom:3px solid var(--gain);box-shadow:0 8px 16px #00000026;z-index:30;transition:background-color .3s ease}.nav-links.open{display:flex}.nav-links a,.nav-links button.nav-theme-toggle,.nav-logout-mobile{display:block;width:100%;text-align:left;padding:.85rem 1.25rem;border-bottom:1px solid rgba(233,239,230,.12);font-size:.95rem}.nav-links a.active,.nav-links a:hover,.nav-links button.nav-theme-toggle:hover{background:#ffffff0f;border-bottom:1px solid rgba(233,239,230,.12)}.nav-logout-mobile{display:block;width:100%;text-align:left;background:none;border-top:none;border-left:none;border-right:none;color:#e9efe6b8;cursor:pointer}.nav-logout-mobile:hover{color:var(--header-ink)}.app-main{padding:1.5rem 1rem 3rem}.ledger-table{font-size:.82rem}}.cal-controls{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:1.25rem}.cal-view-tabs{margin-top:0;margin-bottom:0}.cal-cat-earnings{--cal-accent: #aa3ed5}.cal-cat-economic{--cal-accent: var(--stamp-open)}.cal-cat-fed{--cal-accent: #8a6d1f}[data-theme=dark] .cal-cat-fed{--cal-accent: #b89e2b}.cal-cat-expiration{--cal-accent: var(--loss)}.cal-cat-other{--cal-accent: var(--rule-strong)}.cal-week{border:1px solid var(--rule);border-radius:var(--radius);background:var(--paper-card);overflow:hidden;transition:background-color .3s ease,border-color .3s ease}.cal-day-row{display:flex;gap:1rem;padding:.7rem 1rem;border-bottom:1px solid var(--rule);transition:background-color .3s ease,border-color .3s ease}.cal-day-row:last-child{border-bottom:none}.cal-day-row.is-weekend{background:var(--paper-stripe)}.cal-day-row.is-today{background:#fdfbe9;box-shadow:inset 3px 0 0 var(--gain)}[data-theme=dark] .cal-day-row.is-today{background:#5fb86a1a}.cal-day-label{flex:0 0 5.5rem;display:flex;flex-direction:column;line-height:1.25}.cal-day-name{font-family:var(--font-display);font-weight:600;font-size:.98rem}.cal-day-num{font-size:.78rem;color:var(--ink-faint)}.cal-day-body{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;min-width:0}.cal-day-empty{color:var(--rule-strong);font-family:var(--font-mono);font-size:.82rem}.cal-event{width:100%;text-align:left;display:flex;align-items:baseline;flex-wrap:wrap;gap:.5rem;background:var(--paper);border:1px solid var(--rule);border-left:3px solid var(--cal-accent, var(--rule-strong));border-radius:var(--radius);padding:.4rem .6rem;font-family:var(--font-body);font-size:.88rem;color:var(--ink);cursor:pointer;transition:border-color .2s ease}.cal-event:hover{border-color:var(--ink);border-left-color:var(--cal-accent, var(--rule-strong))}.cal-event-time{font-size:.78rem;color:var(--ink-faint)}.cal-event-symbol{font-weight:600;font-size:.82rem;color:var(--cal-accent, var(--ink))}.cal-event-notes{flex-basis:100%;font-size:.78rem;color:var(--ink-faint)}.cal-add{background:none;border:1px dashed var(--rule-strong);border-radius:var(--radius);color:var(--ink-faint);cursor:pointer;font-size:.85rem;line-height:1;padding:.25rem .55rem;transition:color .2s ease,border-color .2s ease}.cal-add:hover{color:var(--ink);border-color:var(--ink)}.cal-month{border:1px solid var(--rule);border-radius:var(--radius);background:var(--paper-card);overflow:hidden;transition:background-color .3s ease,border-color .3s ease}.cal-month-head{display:grid;grid-template-columns:repeat(7,1fr);background:var(--gain);color:var(--header-ink);transition:background-color .3s ease;font-weight:700}.cal-month-head-cell{padding:.45rem .5rem;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;text-align:center}.cal-month-grid{display:grid;grid-template-columns:repeat(7,1fr)}.cal-month-cell{min-height:96px;border-right:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:.35rem .35rem .5rem;display:flex;flex-direction:column;gap:.2rem;cursor:pointer;min-width:0;transition:background-color .3s ease}.cal-month-cell:nth-child(7n){border-right:none}.cal-month-cell.is-outside{background:var(--paper-stripe);color:var(--ink-faint)}.cal-month-cell.is-today{background:#fdfbe9;box-shadow:inset 0 3px #ff7d7d}[data-theme=dark] .cal-month-cell.is-today{background:#5fb86a1a}.cal-month-daynum{font-size:.76rem;color:var(--ink-faint)}.cal-chip{display:block;width:100%;text-align:left;background:var(--paper);border:none;border-left:3px solid var(--cal-accent, var(--rule-strong));border-radius:2px;padding:.15rem .3rem;font-family:var(--font-body);font-size:.72rem;color:var(--ink);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background-color .2s ease}.cal-chip:hover{background:var(--paper-stripe)}.cal-legend{display:flex;flex-wrap:wrap;gap:1rem;margin-top:1rem;font-size:.76rem;color:var(--ink-faint)}.cal-legend-item{display:inline-flex;align-items:center;gap:.35rem}.cal-swatch{width:10px;height:10px;border-radius:2px;background:var(--cal-accent, var(--rule-strong))}@media (max-width: 720px){.cal-controls{justify-content:flex-start}.cal-day-row{padding:.6rem .7rem;gap:.7rem}.cal-day-label{flex-basis:3.6rem}.cal-month-cell{min-height:68px;padding:.25rem .2rem .35rem}.cal-chip{font-size:.62rem;padding:.1rem .2rem}.cal-month-head-cell{font-size:.6rem;padding:.4rem .2rem}}.th-sort{all:unset;box-sizing:border-box;cursor:pointer;display:inline-flex;align-items:center;gap:.3rem;text-transform:inherit;letter-spacing:inherit;font-weight:inherit;font-size:inherit;color:inherit}.th-sort:hover,.th-sort.active{color:var(--ink)}.th-sort:focus-visible{outline:2px solid var(--gain);outline-offset:2px}.th-sort-arrow{display:inline-block;min-width:.7em;font-size:.6rem}.cal-event.is-feed,.cal-chip.is-feed{border-left-style:dashed}.cal-swatch.is-feed{background:none;border:1px dashed var(--ink-faint)}.cal-feed{margin-bottom:1.25rem;border:1px solid var(--rule);border-radius:var(--radius);background:var(--paper-card)}.cal-feed summary{cursor:pointer;padding:.6rem .9rem;font-size:.82rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint)}.cal-feed-body{padding:.25rem .9rem .9rem;display:flex;flex-direction:column;gap:.6rem}.cal-feed-msg{margin:0;font-size:.82rem;color:var(--ink)}.cal-feed-label{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}.cal-feed-symbols{display:flex;flex-wrap:wrap;gap:.35rem}.cal-sym{display:inline-flex;align-items:center;gap:.3rem;padding:.15rem .5rem;border:1px solid var(--rule-strong);border-radius:999px;font-family:var(--font-mono);font-size:.78rem;color:var(--ink)}.cal-sym-auto{border-style:dashed;color:var(--ink-faint)}.cal-sym button{all:unset;cursor:pointer;color:var(--ink-faint);line-height:1}.cal-sym button:hover{color:var(--loss)}.cal-feed-add{display:flex;gap:.5rem;max-width:22rem}.cal-feed-add input{flex:1;min-width:0}.cal-feed-hint{margin:0;font-size:.76rem;color:var(--ink-faint)}.sym-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(4.75rem,1fr));gap:.25rem .4rem;max-height:9rem;overflow-y:auto;padding:.5rem;border:1px solid var(--rule);border-radius:var(--radius);background:var(--paper)}.sym-list-manage{max-height:13rem;grid-template-columns:repeat(auto-fill,minmax(6rem,1fr))}.sym-item{display:flex;align-items:center;justify-content:space-between;gap:.25rem;padding:.2rem .4rem;font-family:var(--font-mono);font-size:.8rem;color:var(--ink);border-radius:2px;white-space:nowrap}.sym-item:hover{background:var(--paper-stripe)}.sym-item.is-auto{font-style:italic;color:var(--ink-faint)}.sym-item button{all:unset;cursor:pointer;padding:0 .2rem;color:var(--ink-faint);line-height:1}.sym-item button:hover{color:var(--loss)}.sym-legend{margin:.4rem 0 0;font-size:.74rem}.news-filters{display:flex;align-items:center;gap:.9rem;flex-wrap:wrap}.news-check{display:inline-flex;align-items:center;gap:.4rem;font-size:.85rem;color:var(--ink);cursor:pointer}.news-group{margin-bottom:1.4rem}.news-group-head{display:flex;align-items:baseline;gap:.6rem;margin:0 0 .5rem;font-size:1rem}.news-group-sym{font-weight:600;letter-spacing:.04em}.news-group-sym.is-auto{font-style:italic}.news-count{font-size:.75rem;color:var(--ink-faint)}.news-list{display:flex;flex-direction:column;gap:.4rem}.news-item{display:flex;flex-direction:column;gap:.2rem;background:var(--paper-card);border:1px solid var(--rule);border-radius:var(--radius);padding:.5rem .7rem;color:var(--ink);text-decoration:none;transition:border-color .2s ease}.news-item:hover{border-color:var(--ink)}.news-meta{display:flex;align-items:baseline;flex-wrap:wrap;gap:.6rem;font-size:.74rem;color:var(--ink-faint)}.news-sym{font-weight:600;color:var(--ink)}.news-headline{font-size:.92rem;line-height:1.35;overflow-wrap:anywhere}.news-more{margin-top:.4rem;background:none;border:none;padding:0;font-family:var(--font-body);font-size:.8rem;color:var(--ink-faint);cursor:pointer;text-decoration:underline}.news-more:hover{color:var(--ink)}
