:root{
  --navy:#0f2742;
  --navy-2:#163a60;
  --gold:#d5a542;
  --gold-2:#b78624;
  --cream:#f7f2e8;
  --paper:#fffdf8;
  --ink:#1d2732;
  --muted:#6b7680;
  --line:#e3ddd1;
  --success:#29704b;
  --success-bg:#e9f5ee;
  --warn:#a26813;
  --warn-bg:#fff5df;
  --danger:#9a3737;
  --danger-bg:#fff0f0;
  --shadow:0 14px 34px rgba(15,39,66,.09);
  --radius:18px;
}
*{box-sizing:border-box}
html{background:var(--cream)}
body{margin:0;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:linear-gradient(180deg,#f6f1e7 0,#fbfaf7 28%,#f5f2eb 100%);min-height:100vh}
button,input,select{font:inherit}
button{cursor:pointer}
.hidden{display:none!important}
.muted{color:var(--muted)}
.fine-print{font-size:.82rem;color:var(--muted);line-height:1.45}
.eyebrow{margin:0 0 .35rem;color:var(--gold-2);font-weight:800;letter-spacing:.11em;font-size:.73rem}
h1,h2,h3,p{margin-top:0}h1{font-size:clamp(1.75rem,3vw,2.55rem);line-height:1.05;margin-bottom:.7rem;letter-spacing:-.025em}h2{font-size:1.22rem;margin-bottom:.55rem}
.lock-screen{position:fixed;inset:0;z-index:999;background:radial-gradient(circle at 50% 20%,#1e4a75 0,#0f2742 42%,#081827 100%);display:grid;place-items:center;padding:24px}
.lock-card{width:min(440px,100%);background:rgba(255,253,248,.98);border:1px solid rgba(213,165,66,.35);border-radius:26px;padding:30px;box-shadow:0 28px 80px rgba(0,0,0,.34)}
.lock-card h1{text-align:center;margin:.7rem 0 .45rem}.lock-card>.muted{text-align:center;margin-bottom:1.3rem}.lock-card label{display:block;margin:14px 0 0;font-weight:700;color:#394756;font-size:.9rem}.lock-card input{margin-top:7px}
.brand-mark{width:42px;height:42px;border-radius:12px;display:block;overflow:hidden;background:transparent;box-shadow:0 3px 12px rgba(0,0,0,.18);flex:0 0 auto}.brand-mark.large{width:72px;height:72px;border-radius:18px;margin:0 auto}.brand-mark img{width:100%;height:100%;display:block;object-fit:cover;border-radius:inherit}
.app-shell{min-height:100vh}.topbar{height:72px;position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;padding:0 24px;background:rgba(15,39,66,.96);backdrop-filter:blur(16px);color:white;border-bottom:1px solid rgba(255,255,255,.07)}
.brand{display:flex;align-items:center;gap:11px}.brand-title{font-weight:800;letter-spacing:.01em}.brand-subtitle{font-size:.76rem;color:rgba(255,255,255,.68);margin-top:2px}.top-actions{display:flex;align-items:center;gap:10px}.secure-pill{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.14);border-radius:999px;padding:8px 11px;font-size:.75rem}.icon-btn{border:0;background:rgba(255,255,255,.1);color:#fff;width:38px;height:38px;border-radius:11px}
.layout{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:calc(100vh - 72px)}.sidebar{background:#102e4d;padding:20px 14px;display:flex;flex-direction:column;gap:7px;border-right:1px solid rgba(255,255,255,.04)}.nav-btn{display:flex;align-items:center;gap:11px;color:rgba(255,255,255,.72);background:transparent;border:0;border-radius:12px;padding:12px 13px;text-align:left;font-weight:700}.nav-btn span{width:22px;text-align:center;font-size:1.1rem}.nav-btn.active,.nav-btn:hover{background:rgba(213,165,66,.16);color:white}.nav-btn.active{box-shadow:inset 3px 0 0 var(--gold)}
.content{padding:30px clamp(18px,3vw,42px) 70px;max-width:1500px;width:100%;margin:0 auto}.page{display:none}.page.active{display:block}.page-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:24px}.page-heading>div{max-width:780px}
.btn{border:1px solid transparent;border-radius:12px;padding:10px 14px;font-weight:800;transition:.15s ease;display:inline-flex;align-items:center;justify-content:center;gap:7px}.btn:hover{transform:translateY(-1px)}.btn.primary{background:var(--navy);color:#fff}.btn.secondary{background:#fff;color:var(--navy);border-color:#cad3db}.btn.danger{background:var(--danger-bg);color:var(--danger);border-color:#e7bcbc}.btn.text{background:transparent;border-color:transparent}.btn.full{width:100%;margin-top:12px}.danger-text{color:var(--danger)!important}.file-btn{position:relative;overflow:hidden}
.notice{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border-radius:14px;border:1px solid #e0c986;background:#fff8e7;line-height:1.45}.notice strong{white-space:nowrap}.notice span{color:#5e6670}.privacy-notice{flex-direction:column}.action-notice{justify-content:space-between;align-items:center;margin-bottom:20px}.warning{background:var(--warn-bg);border-color:#ead098}.disclaimer{background:#f7f4ec;border-color:#ded8cd}.compact-top{margin-top:20px}
.hero-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.hero-card,.panel,.metric-card{background:rgba(255,253,248,.94);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.hero-card{padding:20px;min-height:144px}.card-kicker{font-size:.74rem;color:var(--muted);font-weight:800;text-transform:uppercase;letter-spacing:.08em}.big-value{font-size:clamp(1.5rem,2.5vw,2.15rem);font-weight:900;color:var(--navy);letter-spacing:-.035em;margin:12px 0 5px}.big-value.small{font-size:1.55rem}.status-row{display:flex;align-items:center;gap:9px;font-size:1.38rem;font-weight:900;color:var(--navy);margin:12px 0 8px}.status-dot{width:12px;height:12px;border-radius:50%;background:#a9b0b7;box-shadow:0 0 0 5px rgba(169,176,183,.14)}.status-dot.good{background:var(--success);box-shadow:0 0 0 5px rgba(41,112,75,.13)}.status-dot.warn{background:#c58b25;box-shadow:0 0 0 5px rgba(197,139,37,.14)}
.section-grid{display:grid;gap:18px}.section-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.section-grid.three{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:18px}.panel{padding:21px}.panel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:15px}.metric-card{padding:18px}.metric-card span{display:block;color:var(--muted);font-size:.82rem;font-weight:700}.metric-card strong{display:block;color:var(--navy);font-size:1.45rem;margin:7px 0 3px}.metric-card small{color:var(--muted)}
.check-stack{display:flex;flex-direction:column;gap:10px}.check-item{display:grid;grid-template-columns:32px 1fr auto;gap:10px;align-items:center;padding:11px 0;border-bottom:1px solid #ece6db}.check-item:last-child{border-bottom:0}.check-icon{width:30px;height:30px;display:grid;place-items:center;border-radius:50%;font-size:.9rem;background:#eef1f3}.check-icon.good{background:var(--success-bg);color:var(--success)}.check-icon.warn{background:var(--warn-bg);color:var(--warn)}.check-label{font-weight:800;font-size:.92rem}.check-detail{color:var(--muted);font-size:.8rem;margin-top:2px}.check-state{font-size:.76rem;font-weight:800;padding:5px 8px;border-radius:999px;background:#f0f2f4;color:#6a747d}.check-state.good{background:var(--success-bg);color:var(--success)}.check-state.warn{background:var(--warn-bg);color:var(--warn)}
.next-action{border-left:4px solid var(--gold);padding:8px 0 8px 16px}.next-action .when{font-size:.78rem;color:var(--gold-2);font-weight:900;text-transform:uppercase;letter-spacing:.07em}.next-action h3{margin:.45rem 0;font-size:1.24rem}.next-action p{color:var(--muted);margin-bottom:0;line-height:1.5}
.tabs{display:flex;gap:8px;margin-bottom:18px;overflow:auto;padding-bottom:2px}.tab{white-space:nowrap;border:1px solid #d7dfe5;background:#fff;color:#50606e;border-radius:999px;padding:8px 13px;font-weight:800}.tab.active{background:var(--navy);color:#fff;border-color:var(--navy)}.plan-tab{display:none}.plan-tab.active{display:block}.form-grid{display:grid;gap:16px}.form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.form-panel label{display:block;font-size:.82rem;font-weight:800;color:#4b5965;margin-top:13px}input,select{width:100%;border:1px solid #cfd8df;background:#fff;border-radius:10px;padding:11px 12px;color:var(--ink);outline:none}input:focus,select:focus{border-color:#7e9ab5;box-shadow:0 0 0 3px rgba(22,58,96,.09)}.form-message{min-height:20px;color:var(--success);font-size:.86rem;font-weight:700;margin:10px 0 0}
.table-wrap{overflow:auto;border:1px solid #e2ddd3;border-radius:12px}table{width:100%;border-collapse:collapse;min-width:600px}th{background:#f0e0bb;color:#413824;text-align:left;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;padding:10px 12px}td{padding:11px 12px;border-top:1px solid #eee8dc;font-size:.88rem}.glide-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.glide-item{padding:14px;border:1px solid #e7dfd1;border-radius:12px;background:#fbf8f0}.glide-item strong{display:block;color:var(--navy);margin:3px 0}.glide-item span{font-size:.78rem;color:var(--muted)}
.projection-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.projection-card{padding:22px;border:1px solid var(--line);border-radius:var(--radius);background:#fffdf8;box-shadow:var(--shadow)}.projection-card.base{border:2px solid var(--gold);position:relative}.projection-card.base:after{content:"BASE CASE";position:absolute;right:14px;top:14px;font-size:.68rem;font-weight:900;letter-spacing:.08em;background:#f4e5bf;color:#7b5917;border-radius:999px;padding:5px 8px}.projection-card .rate{font-size:.8rem;color:var(--muted);font-weight:800}.projection-card .amount{font-size:2rem;color:var(--navy);font-weight:900;margin:10px 0 5px}.projection-split{display:flex;justify-content:space-between;border-top:1px solid #eee6d7;margin-top:12px;padding-top:12px;color:var(--muted);font-size:.82rem}.projection-split strong{display:block;color:#344352;margin-top:2px}.bar-chart{display:flex;flex-direction:column;gap:15px}.bar-row{display:grid;grid-template-columns:80px 1fr 120px;align-items:center;gap:12px}.bar-label{font-weight:900;color:var(--navy)}.bar-track{height:15px;background:#ebe7de;border-radius:999px;overflow:hidden}.bar-fill{height:100%;background:linear-gradient(90deg,#d8b25e,#ad791c);border-radius:999px}.bar-value{text-align:right;font-weight:800;color:#4b5965}
.review-progress-row{display:grid;grid-template-columns:150px 1fr;align-items:center;gap:20px;margin-bottom:18px}.progress-track{height:14px;background:#e9e6df;border-radius:999px;overflow:hidden}.progress-fill{height:100%;width:0;background:linear-gradient(90deg,#d5a542,#2f7751);transition:width .2s ease}.annual-checklist{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 18px}.review-item{display:flex;align-items:flex-start;gap:10px;padding:11px;border:1px solid #e7e1d6;border-radius:12px;background:#fff}.review-item input{width:19px;height:19px;margin-top:2px;accent-color:var(--success)}.review-item label{line-height:1.4;font-size:.88rem}.review-item.done{background:#f3faf6;border-color:#cfe4d6}.review-item.done label{text-decoration:line-through;color:#687a70}
.timeline{position:relative;padding-left:20px}.timeline:before{content:"";position:absolute;left:6px;top:8px;bottom:8px;width:2px;background:#e2cc98}.timeline-item{position:relative;padding:0 0 18px 18px}.timeline-item:before{content:"";position:absolute;width:12px;height:12px;border-radius:50%;background:var(--gold);left:-19px;top:4px;border:3px solid #fff;box-shadow:0 0 0 1px #d5a542}.timeline-when{font-size:.76rem;font-weight:900;color:var(--gold-2);text-transform:uppercase;letter-spacing:.06em}.timeline-action{margin-top:3px;font-weight:700;line-height:1.4}.button-grid{display:flex;flex-wrap:wrap;gap:10px}
.bottom-nav{display:none}
@media(max-width:1050px){.hero-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.glide-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:820px){.topbar{padding:0 14px}.secure-pill{display:none}.layout{display:block}.sidebar{display:none}.content{padding:22px 14px 92px}.page-heading{flex-direction:column}.page-heading .btn{align-self:flex-start}.section-grid.two,.section-grid.three,.form-grid.two,.form-grid.three,.projection-grid{grid-template-columns:1fr}.annual-checklist{grid-template-columns:1fr}.bottom-nav{position:fixed;display:grid;grid-template-columns:repeat(5,1fr);left:0;right:0;bottom:0;z-index:40;background:rgba(15,39,66,.97);padding:7px 6px max(7px,env(safe-area-inset-bottom));border-top:1px solid rgba(255,255,255,.08)}.bottom-btn{border:0;background:transparent;color:rgba(255,255,255,.65);display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 2px}.bottom-btn span{font-size:1.15rem}.bottom-btn small{font-size:.66rem;font-weight:700}.bottom-btn.active{color:#f2cc72}.review-progress-row{grid-template-columns:1fr}.bar-row{grid-template-columns:55px 1fr 92px}.action-notice{align-items:flex-start;flex-direction:column}.brand-subtitle{display:none}}
@media(max-width:540px){.hero-grid{grid-template-columns:1fr}.glide-list{grid-template-columns:1fr}.topbar{height:64px}.layout{min-height:calc(100vh - 64px)}.content{padding-top:18px}.panel,.hero-card{border-radius:15px}.lock-card{padding:24px 19px}.notice{flex-direction:column}.notice strong{white-space:normal}.projection-card .amount{font-size:1.7rem}.button-grid{display:grid;grid-template-columns:1fr}.button-grid .btn{width:100%}}


/* Retirement Compass v0.2.0 secure sync */
.sync-status-row{display:flex;align-items:flex-start;gap:12px;padding:14px;border:1px solid #e6dfd2;border-radius:14px;background:#fbf8f1}.sync-dot{width:12px;height:12px;border-radius:50%;background:#a9b0b7;box-shadow:0 0 0 5px rgba(169,176,183,.14);margin-top:5px;flex:0 0 auto}.sync-dot.good{background:var(--success);box-shadow:0 0 0 5px rgba(41,112,75,.13)}.sync-dot.warn{background:#c58b25;box-shadow:0 0 0 5px rgba(197,139,37,.14)}.sync-dot.bad{background:var(--danger);box-shadow:0 0 0 5px rgba(154,55,55,.13)}.sync-status-row p{margin:.25rem 0 0;line-height:1.45}.sync-badge{font-size:.72rem;font-weight:900;border-radius:999px;padding:6px 9px;background:#eff2f4;color:#66727d;white-space:nowrap}.sync-badge.good{background:var(--success-bg);color:var(--success)}.sync-badge.warn{background:var(--warn-bg);color:var(--warn)}.sync-badge.bad{background:var(--danger-bg);color:var(--danger)}


/* Retirement Compass v0.5.0 — progress tracking, score, action center */
html,body{touch-action:pan-x pan-y}
.heading-actions{justify-content:flex-end}.score-card{background:linear-gradient(145deg,#fffdf8,#fbf3df)}.score-hero-row{display:flex;align-items:center;gap:13px;margin:10px 0 11px}.score-number{font-size:2.35rem;line-height:1;font-weight:950;color:var(--navy);letter-spacing:-.05em;min-width:62px}.score-hero-row strong{display:block;color:var(--navy);font-size:1rem}.score-hero-row small{display:block;color:var(--muted);margin-top:3px}.score-track{height:8px;background:#e7e2d8;border-radius:999px;overflow:hidden}.score-fill{height:100%;width:0;background:linear-gradient(90deg,#b78724,#2f7751);border-radius:999px;transition:width .25s ease}
.delta-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.delta-item{padding:12px;border:1px solid #e8e1d5;border-radius:12px;background:#fbfaf6}.delta-label{font-size:.75rem;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.delta-value{font-size:1.15rem;font-weight:900;color:var(--navy);margin-top:5px}.delta-change{font-size:.78rem;font-weight:800;margin-top:3px}.delta-change.good{color:var(--success)}.delta-change.warn{color:var(--warn)}.delta-change.neutral{color:var(--muted)}
.action-list{display:flex;flex-direction:column;gap:10px}.action-item{display:grid;grid-template-columns:auto 1fr auto;gap:11px;align-items:start;padding:12px;border:1px solid #e7e1d6;border-radius:13px;background:#fff}.action-priority{width:9px;height:9px;border-radius:50%;margin-top:6px;background:#9ca7b0;box-shadow:0 0 0 4px rgba(156,167,176,.12)}.action-priority.high{background:var(--danger);box-shadow:0 0 0 4px rgba(154,55,55,.10)}.action-priority.medium{background:#c58b25;box-shadow:0 0 0 4px rgba(197,139,37,.12)}.action-priority.low{background:var(--success);box-shadow:0 0 0 4px rgba(41,112,75,.10)}.action-title{font-weight:900;color:var(--navy);font-size:.9rem}.action-detail{font-size:.8rem;color:var(--muted);line-height:1.42;margin-top:2px}.action-when{font-size:.72rem;font-weight:800;color:var(--gold-2);margin-top:4px}.action-item .btn{padding:7px 9px;font-size:.76rem}
.score-badge{font-size:1.15rem;font-weight:950;color:var(--navy);background:#f4e5bf;border-radius:999px;padding:8px 12px;white-space:nowrap}.score-breakdown{display:flex;flex-direction:column;gap:12px;margin-top:16px}.score-component{display:grid;grid-template-columns:145px 1fr 62px;gap:10px;align-items:center}.score-component-name{font-size:.82rem;font-weight:850;color:#3e4d59}.score-component-track{height:9px;border-radius:999px;background:#ebe7de;overflow:hidden}.score-component-fill{height:100%;background:linear-gradient(90deg,#d5a542,#2f7751);border-radius:999px}.score-component-points{text-align:right;font-size:.8rem;font-weight:900;color:var(--navy)}.score-component-detail{grid-column:2 / 4;font-size:.73rem;color:var(--muted);margin-top:-6px}
.history-table td:last-child,.history-table th:last-child{text-align:right}.history-delete{border:0;background:transparent;color:var(--danger);font-weight:850;padding:5px 7px}.history-note{display:block;color:var(--muted);font-size:.72rem;margin-top:3px;max-width:210px;white-space:normal}.positive{color:var(--success)!important}.negative{color:var(--danger)!important}
.modal-backdrop{position:fixed;inset:0;z-index:1200;background:rgba(5,18,31,.72);backdrop-filter:blur(6px);display:flex;align-items:flex-start;justify-content:center;padding:clamp(18px,5vh,52px) 14px;overflow:auto}.modal-card{width:min(760px,100%);background:var(--paper);border:1px solid rgba(213,165,66,.45);border-radius:24px;padding:24px;box-shadow:0 30px 90px rgba(0,0,0,.35)}.modal-header{display:flex;justify-content:space-between;align-items:flex-start;gap:15px}.modal-header h2{margin-bottom:0}.modal-close{background:#eef1f3!important;color:var(--navy)!important;font-size:1.5rem;line-height:1}.snapshot-form h3{margin:22px 0 5px;color:var(--navy);font-size:1rem}.snapshot-form label{display:block;font-size:.82rem;font-weight:800;color:#4b5965}.snapshot-form input{margin-top:7px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}.modal-open{overflow:hidden}
@media(max-width:1050px){.hero-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:820px){input,select,textarea{font-size:16px!important}.score-component{grid-template-columns:120px 1fr 54px}.delta-grid{grid-template-columns:1fr 1fr}.action-item{grid-template-columns:auto 1fr}.action-item .btn{grid-column:2;justify-self:start}.modal-card{padding:20px 16px}.heading-actions{width:100%;justify-content:flex-start}}
@media(max-width:540px){.delta-grid{grid-template-columns:1fr}.score-component{grid-template-columns:105px 1fr 50px}.modal-actions{display:grid;grid-template-columns:1fr 1fr}.modal-actions .btn{width:100%}}
