:root{color:#213129;font-synthesis:none;text-rendering:optimizelegibility;--ink:#213129;--muted:#717a72;--forest:#356b4d;--forest-dark:#254d38;--cream:#fbfcf8;--line:#dfe4da;--gold:#d4a34b;background:#f2f4ed;font-family:Inter,Segoe UI,system-ui,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{min-width:320px;min-height:100vh;margin:0}button,a{font:inherit}button{cursor:pointer}a{color:inherit}.app-shell{min-height:100vh;position:relative}.session-controls{z-index:55;color:#536158;border:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fbfcf8f0;border-radius:12px;align-items:center;gap:9px;padding:6px 8px 6px 6px;font-size:10px;font-weight:750;display:flex;position:fixed;top:12px;right:12px;box-shadow:0 8px 24px #3143391a}.session-controls .text-button{padding:5px 7px}.session-controls button:disabled{cursor:wait;opacity:.6}.tab-bar{z-index:50;padding:5px;padding-bottom:max(5px, env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#19392beb;border:1px solid #ffffff26;border-bottom:0;border-radius:16px 16px 0 0;grid-template-columns:repeat(3,minmax(130px,1fr));gap:5px;display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%);box-shadow:0 -8px 30px #142d2133}.tab-link{color:#b9cbbf;border-radius:11px;justify-content:center;align-items:center;gap:9px;padding:11px 18px;font-size:12px;font-weight:750;text-decoration:none;transition:color .2s,background .2s,transform .2s;display:flex}.tab-link:hover,.tab-link:focus-visible{color:#fff;background:#ffffff14;outline:none}.tab-link.active{color:#19392b;background:#e4efc6;box-shadow:0 5px 14px #091f1438}.tab-link:active{transform:translateY(1px)}.tab-icon{place-items:center;width:23px;height:23px;font-size:15px;font-weight:800;display:grid}.level-track{background:#ffffff1f;border-radius:99px;height:5px;margin:11px 0 9px;overflow:hidden}.level-track span{border-radius:inherit;background:#cbe186;height:100%;display:block}.avatar{color:#304c3d;background:#dce7cd;border-radius:50%;place-items:center;width:36px;height:36px;font-size:11px;font-weight:800;display:grid}.dashboard-page{width:min(1320px,100%);min-width:0;margin:0 auto;padding:72px clamp(24px,5vw,72px)}.topbar{justify-content:space-between;align-items:center;gap:28px;display:flex}.page-heading{align-items:center;gap:15px;display:flex}.page-mark{color:#18392b;background:#dbe8bb;border-radius:12px 12px 12px 3px;flex:none;place-items:center;width:42px;height:42px;font-family:Georgia,serif;font-size:25px;font-weight:800;display:grid;box-shadow:0 8px 18px #2e533d1f}.eyebrow{color:#8a8e85;letter-spacing:.13em;text-transform:uppercase;margin:0 0 6px;font-size:10px;font-weight:800}.topbar h1{letter-spacing:-.045em;margin:0;font-size:clamp(27px,3vw,38px);font-weight:750;line-height:1.14}.topbar .page-heading p:last-child{color:var(--muted);margin:7px 0 0;font-size:14px}.topbar-actions{align-items:center;gap:12px;display:flex}.dashboard-profile{border-left:1px solid var(--line);align-items:center;gap:9px;padding-left:12px;display:flex}.dashboard-profile>span:last-child,.dashboard-profile strong,.dashboard-profile small{display:block}.dashboard-profile strong{font-size:11px}.dashboard-profile small{color:var(--muted);margin-top:2px;font-size:9px}.sandbox-pill,.confidence,.trend,.plan-status{white-space:nowrap;border-radius:99px;align-items:center;gap:7px;font-size:11px;font-weight:750;display:inline-flex}.sandbox-pill{color:#667069;background:#e7eae3;padding:8px 11px}.sandbox-pill span{background:#5f9873;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 3px #5f987321}.sandbox-pill.live{color:#2d6947;background:#e3f1e7}.sandbox-pill.fixture{color:#805d1d;background:#f8edcf}.sandbox-pill.fixture span{background:#d0a044;box-shadow:0 0 0 3px #d0a04429}.text-button:focus-visible{outline-offset:2px;outline:3px solid #417b5a40}.primary-button,.secondary-button{border-radius:10px;min-height:42px;padding:10px 15px;font-size:11px;font-weight:800;transition:background .2s,border-color .2s,transform .2s}.primary-button{color:#fff;background:var(--forest);border:1px solid var(--forest);box-shadow:0 8px 18px #356b4d2e}.primary-button:hover,.primary-button:focus-visible{background:var(--forest-dark);border-color:var(--forest-dark);outline:none}.secondary-button{color:var(--forest-dark);background:#f8faf5;border:1px solid #cfd8cf}.secondary-button:hover,.secondary-button:focus-visible{background:#eef3ea;border-color:#9eb4a2;outline:none}.primary-button:active,.secondary-button:active{transform:translateY(1px)}.primary-button:disabled,.secondary-button:disabled{cursor:wait;opacity:.6}.error-banner{color:#7b302e;background:#faece9;border:1px solid #edcfca;border-radius:9px;margin:16px 0;padding:11px 13px;font-size:11px;line-height:1.45}.auth-page,.status-page{background:radial-gradient(circle at 0 0,#e6eed5,#0000 42%),#f2f4ed;place-items:center;min-height:100vh;padding:24px;display:grid}.auth-card,.status-card{border:1px solid var(--line);background:#ffffffeb;border-radius:18px;width:min(480px,100%);padding:clamp(28px,5vw,48px);box-shadow:0 24px 70px #2341301f}.auth-mark{margin-bottom:28px}.auth-card h1,.status-card h1{letter-spacing:-.045em;margin:0;font-size:clamp(27px,4vw,40px);line-height:1.08}.auth-card>p:not(.eyebrow,.error-banner),.status-card>p:not(.eyebrow){color:var(--muted);font-size:13px;line-height:1.65}.auth-card .primary-button,.status-card .primary-button{width:100%;margin-top:8px}.auth-login-form{gap:15px;margin-top:22px;display:grid}.auth-login-form label{color:#59645d;gap:7px;font-size:10px;font-weight:750;display:grid}.auth-login-form input,.auth-login-form select{width:100%;min-height:44px;color:var(--ink);font:inherit;background:#f8faf4;border:1px solid #d6ddd3;border-radius:10px;padding:10px 12px}.auth-login-form input:focus,.auth-login-form select:focus{border-color:#71967d;outline:3px solid #417b5a29}.auth-login-form input:disabled,.auth-login-form select:disabled{cursor:wait;opacity:.62}.demo-credential-note{color:var(--muted);margin:-2px 0 0;font-size:11px}.demo-credential-note code{color:var(--forest-dark);font-family:inherit;font-weight:800}.goal-form label,.lab-event-card label{color:#59645d;gap:6px;font-size:10px;font-weight:750;display:grid}.goal-form input,.amount-input input{width:100%;min-height:41px;color:var(--ink);font:inherit;background:#f6f8f3;border:1px solid #d6ddd3;border-radius:9px;padding:9px 11px}.stat-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:30px;display:grid}.stat-card,.panel{border:1px solid var(--line);background:#ffffffe0;box-shadow:0 8px 24px #3143390b}.stat-card{border-radius:13px;padding:19px 20px 20px;position:relative;overflow:hidden}.stat-card:before{content:"";background:var(--accent);width:3px;position:absolute;inset:0 auto 0 0}.accent-blue{--accent:#729ba5;--tint:#e7f0f1}.accent-green{--accent:#5f9873;--tint:#e8f1e7}.accent-gold{--accent:#d1a247;--tint:#f5eddb}.stat-header{justify-content:space-between;align-items:center;display:flex}.stat-icon{width:29px;height:29px;color:var(--accent);background:var(--tint);border-radius:8px;place-items:center;font-size:13px;font-weight:800;display:grid}.trend{color:#87651f;background:#f8f0dd;padding:5px 8px}.trend.positive{color:#3f7957;background:#e8f2e9}.stat-card>p{color:var(--muted);margin:18px 0 6px;font-size:11px;font-weight:650}.stat-card h2{letter-spacing:-.03em;margin:0;font-size:24px;font-weight:750}.stat-card small{color:#92978f;margin-top:5px;font-size:10px;display:block}.content-grid{grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr);gap:16px;margin-top:16px;display:grid}.panel{border-radius:13px;padding:22px}.panel-heading{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.panel-heading h2,.town-invite h2{letter-spacing:-.025em;margin:0;font-size:18px;font-weight:750}.text-button{color:var(--forest);background:0 0;border:0;padding:5px 0;font-size:11px;font-weight:750}.goal-summary{grid-template-columns:104px 1fr;align-items:center;gap:23px;margin-top:20px;display:grid}.progress-ring{aspect-ratio:1;background:conic-gradient(var(--forest) var(--progress), #e7ebe3 0);border-radius:50%;place-items:center;width:96px;display:grid}.progress-ring:before{content:"";aspect-ratio:1;background:#fff;border-radius:50%;grid-area:1/1;width:76px}.progress-ring>span{z-index:1;text-align:center;grid-area:1/1}.progress-ring strong,.progress-ring small{display:block}.progress-ring strong{font-size:18px}.progress-ring small{color:var(--muted);font-size:9px}.goal-numbers>p{color:var(--muted);margin:0 0 12px;font-size:12px}.goal-numbers>p strong{color:var(--ink);font-size:20px}.progress-track,.spend-track{background:#e8ebe5;border-radius:99px;height:7px;overflow:hidden}.progress-track span,.spend-track span{background:var(--forest);border-radius:inherit;height:100%;display:block}.goal-meta{gap:42px;margin-top:15px;display:flex}.goal-meta span,.goal-meta small,.goal-meta strong{display:block}.goal-meta small{color:var(--muted);font-size:9px}.goal-meta strong{margin-top:3px;font-size:11px}.insight-callout{background:#f0f4e9;border-radius:10px;gap:12px;margin-top:20px;padding:13px 15px;display:flex}.spark{color:#619064;font-size:18px}.insight-callout strong{font-size:11px}.insight-callout p{color:#6c766c;margin:3px 0 0;font-size:10px;line-height:1.4}.confidence{color:#427657;background:#e8f1e8;padding:6px 9px}.plan-total{justify-content:space-between;align-items:end;margin-top:21px;display:flex}.plan-total small,.plan-total strong{display:block}.plan-total small{color:var(--muted);font-size:10px}.plan-total strong{margin-top:3px;font-size:25px}.plan-status{color:#3f7957;background:#e8f2e9;padding:5px 8px}.spend-track{height:6px;margin:11px 0 17px}.spend-track span{background:#76a784}.plan-breakdown{gap:9px;display:grid}.plan-breakdown span{color:#767b73;grid-template-columns:10px 1fr auto;align-items:center;font-size:10px;display:grid}.plan-breakdown strong{color:#3f4742}.dot{border-radius:2px;width:7px;height:7px;display:inline-block}.dot-income{background:#789dac}.dot-bills{background:#d1ad70}.dot-goal{background:#67a27c}.dot-buffer{background:#b4aaa0}.explanation{color:#8a8d87;border-top:1px solid #eceee9;margin:15px 0 0;padding-top:12px;font-size:9px;font-style:italic}.lower-grid{grid-template-columns:minmax(0,1.1fr) minmax(330px,.9fr)}.chart-key{color:#81857e;gap:13px;font-size:9px;display:flex}.chart-key span{align-items:center;gap:5px;display:flex}.dot-saved{background:var(--forest);border-radius:50%}.dot-target{background:#aaa;border-radius:50%}.chart-wrap{height:185px;margin-top:14px}.savings-page{max-width:1180px}.money-history-panel{margin-top:32px;padding:clamp(22px,3vw,32px)}.money-history-heading{align-items:center}.money-history-heading h2,.goals-heading h2{letter-spacing:-.035em;margin:0;font-size:clamp(20px,2vw,27px)}.balance-change{text-align:right}.balance-change strong,.balance-change span{display:block}.balance-change strong{color:var(--forest);font-size:19px}.balance-change span{color:var(--muted);margin-top:3px;font-size:10px}.money-chart{height:clamp(250px,35vw,370px);margin-top:20px}.savings-goals-section{margin-top:32px}.goals-heading{justify-content:space-between;align-items:end;gap:20px;display:flex}.goals-heading>span{color:#667069;white-space:nowrap;background:#e7eae3;border-radius:99px;padding:7px 10px;font-size:10px;font-weight:750}.goal-card-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:16px;display:grid}.savings-goal-card{border:1px solid var(--line);background:#ffffffe6;border-radius:13px;padding:22px;box-shadow:0 8px 24px #3143390b}.goal-card-icon{width:34px;height:34px;color:var(--forest);background:#e8f1e7;border-radius:10px;place-items:center;font-size:19px;display:grid}.savings-goal-card h3{letter-spacing:-.02em;margin:18px 0 7px;font-size:17px}.savings-goal-card p{color:var(--muted);margin:0 0 16px;font-size:11px}.savings-goal-card p strong{color:var(--ink);font-size:20px}.savings-goal-card .progress-track{height:6px}.app-shell:has(.bank-page){background:#61c832 url(/patches_bg.png) 50%/cover no-repeat fixed;min-height:100vh}.bank-page{--bank-forest:#175c32;--bank-forest-dark:#243d27;--bank-brown:#58432f;--bank-cream:#f2e7b5;--bank-line:#9d7e43;color:#352f24;width:min(1080px,100% - 32px);min-height:100vh;padding:72px 24px 48px;font-family:Courier New,ui-monospace,monospace}.bank-topbar{color:#fff8d8;background:var(--bank-forest);border:4px solid var(--bank-forest-dark);padding:18px;box-shadow:6px 6px #3d311b57}.bank-topbar .page-heading{min-width:0}.bank-topbar .eyebrow{color:#d9ddaa;margin-bottom:7px}.bank-topbar h1{color:#fff8d8;letter-spacing:.055em;text-transform:uppercase;text-shadow:3px 3px #2d3b24;font-size:clamp(27px,4vw,38px);line-height:1}.bank-topbar .page-heading p:last-child{color:#d9ddaa;margin-top:8px;font-size:10px;font-weight:700}.bank-page .route-arrow{color:#fff4bf;background:#755b38;border:3px solid #e0bd66;border-radius:0;width:42px;height:42px;transition:color .1s linear,background .1s linear,transform .1s steps(2,end);box-shadow:3px 3px #263a25}.bank-page .route-arrow:hover{color:#fff;background:#8b6b3d;transform:translate(1px,1px);box-shadow:2px 2px #263a25}.bank-page .route-arrow:focus-visible{outline-offset:3px;outline:3px solid #fff0a4}.bank-page .sandbox-pill{color:#fff3c0;background:var(--bank-brown);text-transform:uppercase;border:2px solid #392e22;border-radius:0;padding:8px 10px;box-shadow:2px 2px #263a25}.bank-page .sandbox-pill span{box-shadow:none;background:#e6c766;border-radius:0}.bank-page .secondary-button{color:#352f24;text-transform:uppercase;background:#e6c766;border:3px solid #6f5427;border-radius:0;min-height:38px;transition:background .1s linear,transform .1s steps(2,end);box-shadow:3px 3px #263a25}.bank-page .secondary-button:hover,.bank-page .secondary-button:focus-visible{color:#352f24;outline-offset:2px;background:#f0d37a;border-color:#6f5427;outline:3px solid #fff0a4}.bank-page .secondary-button:active{transform:translate(2px,2px);box-shadow:1px 1px #263a25}.bank-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:18px}.bank-summary-grid .stat-card{background:var(--bank-cream);border:3px solid var(--bank-line);border-radius:0;padding:18px 20px;box-shadow:5px 5px #5e482247}.bank-summary-grid .stat-card:before{display:none}.bank-summary-grid .stat-card>p{color:#685b3d;letter-spacing:.08em;text-transform:uppercase;margin:0 0 8px;font-size:10px}.bank-summary-grid .stat-card h2{letter-spacing:0;font-size:clamp(23px,4vw,32px)}.bank-summary-grid .stat-card small{color:#776a49}.bank-goals-section{background:var(--bank-cream);border:3px solid var(--bank-line);margin-top:18px;padding:clamp(18px,3vw,26px);box-shadow:6px 6px #5e482247}.bank-section-heading{justify-content:space-between;align-items:end;gap:18px;display:flex}.bank-section-heading .eyebrow{color:#6b7d4d}.bank-section-heading h2{letter-spacing:.01em;text-transform:uppercase;margin:0;font-size:clamp(19px,3vw,26px)}.bank-section-heading>span{color:#fff3c0;background:var(--bank-brown);text-transform:uppercase;border:2px solid #392e22;padding:6px 8px;font-size:8px;font-weight:800;box-shadow:2px 2px #3d311b47}.bank-goal-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:15px;display:grid}.bank-goal-card{background:#eadca6;border:2px solid #b49a58;padding:14px;box-shadow:3px 3px #5e48223d}.bank-goal-title{align-items:center;gap:9px;display:flex}.bank-goal-title>span{color:#fff3c0;background:var(--bank-forest);border:2px solid var(--bank-forest-dark);place-items:center;width:30px;height:30px;font-size:13px;font-weight:900;display:grid;box-shadow:2px 2px #3d311b40}.bank-goal-title h3{text-transform:uppercase;margin:0;font-size:14px}.bank-goal-card p{color:#6d5d38;margin:14px 0 8px;font-size:10px}.bank-goal-card p strong{color:#352f24;font-size:18px}.bank-goal-progress{background:#c4af6d;border:2px solid #80652e;height:14px;padding:2px;overflow:hidden}.bank-goal-progress>span{background:var(--bank-forest);height:100%;display:block}.bank-goal-card small{color:#6d5d38;margin-top:7px;font-size:8px;font-weight:700;display:block}.bank-page .money-history-panel{background:var(--bank-cream);border:3px solid var(--bank-line);border-radius:0;margin-top:18px;padding:clamp(18px,3vw,26px);box-shadow:6px 6px #5e482247}.bank-page .money-history-heading h2{letter-spacing:.01em;text-transform:uppercase;font-size:clamp(19px,3vw,26px)}.bank-page .money-history-heading .eyebrow{color:#6b7d4d}.bank-page .balance-change strong{color:var(--bank-forest)}.bank-page .balance-change span{color:#776a49}.bank-page .money-chart{background:#eadca6;border:2px solid #b49a58;height:clamp(240px,34vw,340px);padding:12px 10px 4px 0}.bank-page .empty-state{color:#675938;border:2px solid var(--bank-line);background:#eadca6;border-radius:0}.bank-page .bank-transactions-panel{background:var(--bank-cream);border:3px solid var(--bank-line);border-radius:0;margin-top:18px;padding:clamp(18px,3vw,26px);box-shadow:6px 6px #5e482247}.bank-page .bank-transactions-panel .eyebrow{color:#6b7d4d}.bank-page .bank-transactions-panel h2{letter-spacing:.01em;text-transform:uppercase;margin:0;font-size:clamp(19px,3vw,26px)}.bank-page .record-count{color:#fff3c0;background:var(--bank-brown);text-transform:uppercase;border:2px solid #392e22;border-radius:0;padding:6px 8px;box-shadow:2px 2px #3d311b47}.bank-page .transaction-list{margin-top:13px}.bank-page .transaction-row{border-bottom:2px dashed #c4af6d;padding:12px 4px}.bank-page .transaction-row>span:nth-child(2) strong,.bank-page .transaction-row>strong{font-size:11px}.bank-page .transaction-row small{color:#776a49}.bank-page .transaction-direction{color:#fff3c0;background:#755b38;border:2px solid #4e3b29;border-radius:0;box-shadow:2px 2px #3d311b3d}.bank-page .transaction-direction.inflow{color:#fff3c0;background:var(--bank-forest)}.bank-page .positive-amount{color:var(--bank-forest)}.bank-page footer{color:#685b3d;letter-spacing:.04em;text-transform:uppercase;justify-content:center;margin-top:22px;font-size:9px;font-weight:800}.bank-session-controls{color:#fff3c0;background:var(--forest-dark);-webkit-backdrop-filter:none;backdrop-filter:none;border:3px solid #152b1b;border-radius:0;font-family:Courier New,ui-monospace,monospace;box-shadow:4px 4px #4632194d}.bank-session-controls .avatar{color:#352f24;background:#e6c766;border:2px solid #6f5427;border-radius:0}.bank-session-controls .text-button{color:#fff3c0;text-transform:uppercase}.bank-session-controls .text-button:hover{color:#e6c766}.town-session-controls{color:#fff3c0;-webkit-backdrop-filter:none;backdrop-filter:none;background:#243d27;border:3px solid #152b1b;border-radius:0;grid-template-columns:36px minmax(0,1fr) auto;width:min(350px,100vw - 24px);font-family:Courier New,ui-monospace,monospace;display:grid;left:12px;right:auto;box-shadow:4px 4px #4632194d}.town-session-controls .avatar{color:#352f24;background:#e6c766;border:2px solid #6f5427;border-radius:0}.town-session-controls .text-button{color:#fff3c0;text-transform:uppercase}.town-session-controls .text-button:hover{color:#e6c766}.dashboard-error{margin-top:20px}.fallback-warning{color:#74551f;background:#fbf1d8;border:1px solid #ead59e;border-radius:0;margin:18px 0 0;padding:12px 14px;font-size:11px;line-height:1.5}.import-strip{background:var(--line);border:1px solid var(--line);border-radius:12px;grid-template-columns:1fr .8fr .9fr 1.6fr;gap:1px;margin-top:18px;display:grid;overflow:hidden}.import-strip>span{background:#fffc;min-width:0;padding:13px 15px}.import-strip small,.import-strip strong{display:block}.import-strip small{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-size:8px;font-weight:750}.import-strip strong{text-overflow:ellipsis;white-space:nowrap;margin-top:5px;font-size:10px;overflow:hidden}.planner-panel{margin-top:16px}.goal-form{grid-template-columns:1.3fr 1fr 1fr 1fr auto;align-items:end;gap:12px;margin-top:18px;display:grid}.goal-form label small{color:var(--muted);font-size:9px;line-height:1.3}.plan-result{margin-top:18px}.goal-title-row,.plan-actions{justify-content:space-between;align-items:center;gap:14px;display:flex}.goal-title-row strong,.goal-title-row small{display:block}.goal-title-row strong{font-size:17px}.goal-title-row small{color:var(--muted);margin-top:4px;font-size:10px}.plan-status.accepted{color:#315f45;background:#dceee2}.plan-metrics{grid-template-columns:repeat(3,1fr);gap:10px;margin-top:16px;display:grid}.plan-metrics span{background:#f4f6f1;border-radius:9px;padding:13px}.plan-metrics small,.plan-metrics strong{display:block}.plan-metrics small{color:var(--muted);font-size:9px}.plan-metrics strong{margin-top:5px;font-size:16px}.plan-explanation{color:#566159;margin:15px 0 0;font-size:11px;line-height:1.55}.evidence-list{color:var(--muted);margin:10px 0 0;padding-left:18px;font-size:10px;line-height:1.6}.plan-actions{justify-content:flex-end;margin-top:16px}.accepted-note{color:#3f7655;margin:14px 0 0;font-size:10px;font-weight:700}.lab-page{max-width:1180px}.lab-event-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:30px;display:grid}.lab-event-card{border:1px solid var(--line);background:#ffffffe0;border-radius:13px;padding:22px;box-shadow:0 8px 24px #3143390b}.lab-event-card h2,.technical-panel h2{margin:0;font-size:18px}.lab-event-card>p:not(.eyebrow,.event-success,.error-banner){min-height:34px;color:var(--muted);font-size:11px;line-height:1.5}.lab-event-card label{margin:18px 0 12px}.lab-event-card .primary-button{width:100%}.amount-input{display:block;position:relative}.amount-input>span{z-index:1;color:var(--muted);position:absolute;top:12px;left:11px}.amount-input input{padding-left:25px}.event-success{color:#397252;margin:12px 0 0;font-size:10px;font-weight:700}.event-result{border-top:1px solid var(--line);margin-top:13px;padding-top:12px}.event-balances{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:10px;display:grid}.event-balances span{background:#f4f6f1;border-radius:7px;padding:8px}.event-balances small,.event-balances strong{display:block}.event-balances small{color:var(--muted);font-size:8px}.event-balances strong{margin-top:3px;font-size:10px}.imported-event{color:#566159;margin:9px 0 0;font-size:9px}.technical-panel{margin-top:16px}.technical-panel>p:not(.eyebrow){color:var(--muted);font-size:11px;line-height:1.6}.resource-chips{flex-wrap:wrap;gap:8px;margin-top:15px;display:flex}.resource-chips code{color:#315f45;background:#e8f1e8;border-radius:7px;padding:7px 9px;font-size:10px}.dashboard-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:16px;display:grid}.account-list,.category-list,.transaction-list{margin:17px 0 0;padding:0;list-style:none}.account-list{gap:8px;display:grid}.account-list li{background:#f4f6f1;border-radius:9px;justify-content:space-between;align-items:center;gap:18px;padding:13px 14px;display:flex}.account-list li>span,.account-list strong,.account-list small{display:block}.account-list li>strong{font-size:13px}.account-list small{color:var(--muted);margin-top:3px;font-size:9px}.category-list{gap:12px;display:grid}.category-list li>span:first-child{justify-content:space-between;gap:12px;font-size:10px;display:flex}.category-list small{color:var(--muted)}.category-list .spend-track{margin:7px 0 0;display:block}.transactions-panel{margin-top:16px}.record-count{color:#667069;background:#eef1eb;border-radius:99px;padding:6px 9px;font-size:9px;font-weight:750}.transaction-list{display:grid}.transaction-row{border-bottom:1px solid #ebeee8;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:11px;padding:12px 2px;display:grid}.transaction-row:last-child{border-bottom:0}.transaction-row>span:nth-child(2),.transaction-row>span:nth-child(2) strong,.transaction-row small{display:block}.transaction-row>span:nth-child(2) strong,.transaction-row>strong{font-size:11px}.transaction-row small{color:var(--muted);margin-top:3px;font-size:9px}.transaction-direction{color:#8b5f39;background:#f5e9dc;border-radius:9px;place-items:center;width:31px;height:31px;font-weight:800;display:grid}.transaction-direction.inflow{color:#397252;background:#e6f1e8}.positive-amount{color:#397252}.empty-state{color:var(--muted);text-align:center;background:#f4f6f1;border-radius:9px;margin:22px 0 0;padding:28px 14px;font-size:11px}.town-invite{background:#e7eee2;grid-template-columns:1.25fr 1fr;min-height:260px;padding:0;display:grid;position:relative;overflow:hidden}.town-invite-copy{z-index:2;padding:24px 0 24px 24px}.town-invite-copy>p:not(.eyebrow){color:#68756b;max-width:250px;margin:8px 0 16px;font-size:10px;line-height:1.5}.streak{align-items:center;gap:9px;margin-bottom:17px;display:flex}.streak>span:first-child{color:#956f1f;background:#f5e7c5;border-radius:9px;place-items:center;width:33px;height:33px;display:grid}.streak strong,.streak small{display:block}.streak strong{font-size:11px}.streak small{color:#7c827b;margin-top:2px;font-size:9px}.town-tab-hint{color:#35694d;background:#ffffff8c;border:1px solid #35694d26;border-radius:9px;align-items:center;gap:8px;padding:9px 12px;font-size:9px;font-weight:750;display:inline-flex}.town-invite-art{background:linear-gradient(145deg,#c9e1db 0 45%,#97ba7e 46%);position:relative;overflow:hidden}.town-invite-art:before{content:"";background:#a7ce86;border:2px solid #ffffff59;width:170px;height:90px;position:absolute;bottom:15px;left:50%;transform:translate(-50%)rotate(30deg)skew(-5deg);box-shadow:0 8px #83a86d}.town-invite-art span{z-index:1;background:#3f7547;border-radius:50% 50% 45% 45%;width:28px;height:45px;position:absolute;box-shadow:0 13px 0 -10px #6c5538}.town-invite-art span:first-child{bottom:48px;left:18%}.town-invite-art span:nth-child(2){bottom:74px;right:14%;transform:scale(.8)}.town-invite-art span:nth-child(3){bottom:28px;right:43%;transform:scale(.65)}footer{color:#92968f;justify-content:space-between;gap:24px;margin-top:18px;padding:0 3px;font-size:9px;display:flex}.route-loading{min-height:100vh;color:var(--muted);place-items:center;display:grid}.town-page{--town-sidebar-width:min(410px, calc(100vw - 48px));min-width:0;height:100vh;image-rendering:pixelated;background:#55c73f;position:relative;overflow:hidden}.town-canvas{inset:0 var(--town-sidebar-width) 0 0;height:100%;transition:right .18s ease-out;display:block;position:absolute}.town-page:not(.sidebar-open) .town-canvas{right:0}.town-canvas canvas{cursor:grab;width:100%;height:100%;display:block}.town-canvas canvas:active{cursor:grabbing}.town-sidebar{--pixel-forest:#175c32;--pixel-forest-dark:#243d27;--pixel-brown:#58432f;--pixel-cream:#f2e7b5;--pixel-tan:#decf96;--pixel-line:#9d7e43;z-index:20;width:var(--town-sidebar-width);color:#352f24;background:var(--pixel-cream);border-left:5px solid var(--pixel-forest-dark);min-height:0;image-rendering:pixelated;flex-direction:column;font-family:Courier New,ui-monospace,monospace;transition:transform .18s ease-out;display:flex;position:absolute;top:0;bottom:0;right:0;overflow:hidden;transform:translate(calc(100% + 8px));box-shadow:-6px 0 #162d1a47}.town-sidebar.open{transform:translate(0)}.sidebar-toggle{z-index:30;color:#fff2bf;cursor:pointer;background:#175c32;border:3px solid #243d27;border-right:0;border-radius:0;place-items:center;width:42px;height:64px;padding:0;transition:right .18s ease-out;display:grid;position:absolute;top:50%;right:0;transform:translateY(-50%);box-shadow:-3px 3px #243d274d}.sidebar-toggle.open{right:var(--town-sidebar-width)}.sidebar-toggle span{font-family:Courier New,ui-monospace,monospace;font-size:27px;font-weight:900;line-height:1}.sidebar-toggle:focus-visible{outline-offset:3px;outline:3px solid #fff0a4}.town-sidebar-header{color:#fff8d8;background:var(--pixel-forest);border-bottom:4px solid var(--pixel-forest-dark);flex:none;align-items:center;gap:13px;min-height:84px;padding:16px 16px 14px;display:flex;box-shadow:inset 0 -2px #ffffff14}.town-sidebar-header>div{flex:1;min-width:0}.town-sidebar-header h1{letter-spacing:.045em;text-transform:uppercase;text-shadow:2px 2px #2d3b24;margin:0;font-size:25px;line-height:1}.town-sidebar-header p:last-child{color:#d9ddaa;letter-spacing:.03em;margin:8px 0 0;font-size:10px;font-weight:700}.town-sidebar .route-arrow{color:#fff4bf;background:#755b38;border:3px solid #e0bd66;border-radius:0;flex:none;place-items:center;width:40px;height:40px;padding:0;text-decoration:none;transition:color .1s linear,background .1s linear,transform .1s steps(2,end);display:grid;box-shadow:3px 3px #263a25}.town-sidebar .route-arrow span{font-size:20px;line-height:1;display:block}.town-sidebar .route-arrow:hover{color:#fff;background:#8b6b3d;transform:translate(1px,1px);box-shadow:2px 2px #263a25}.town-sidebar .route-arrow:focus-visible{outline-offset:3px;outline:3px solid #fff0a4}.town-resources{color:#fff0b4;background:var(--pixel-brown);border-bottom:4px solid #392e22;flex:none;grid-template-columns:repeat(3,1fr);margin:0;display:grid}.town-resources>span{border-right:2px solid #392e22;grid-template-rows:auto auto;grid-template-columns:24px auto;column-gap:7px;min-width:0;padding:9px 10px;display:grid}.town-resources>span:last-child{border-right:0}.town-resources i{grid-row:1/3;align-self:center}.pixel-resource-icon{width:24px;height:24px;image-rendering:pixelated;display:block;position:relative}.pixel-resource-icon:before,.pixel-resource-icon:after{content:"";display:block;position:absolute}.resource-coin:before{clip-path:polygon(25% 0,75% 0,75% 12.5%,100% 12.5%,100% 87.5%,75% 87.5%,75% 100%,25% 100%,25% 87.5%,0 87.5%,0 12.5%,25% 12.5%);background:#d99b32;border:3px solid #5d3a1d;inset:3px 4px;box-shadow:inset 3px 0 #ffe17a,inset -3px 0 #a96425}.resource-coin:after{background:#fff0a0;width:3px;height:8px;top:7px;left:9px}.resource-xp:before{clip-path:polygon(37.5% 0,62.5% 0,62.5% 25%,100% 25%,100% 62.5%,75% 62.5%,75% 100%,25% 100%,25% 62.5%,0 62.5%,0 25%,37.5% 25%);background:#78a957;border:3px solid #314c2f;inset:3px}.resource-xp:after{background:#dcf09b;width:4px;height:7px;top:7px;left:10px}.resource-streak:before{clip-path:polygon(50% 0,75% 0,75% 25%,100% 25%,100% 75%,75% 75%,75% 100%,25% 100%,25% 87.5%,0 87.5%,0 50%,25% 50%,25% 25%,50% 25%);background:#cf6332;border:3px solid #5b3023;inset:2px 4px}.resource-streak:after{clip-path:polygon(50% 0,100% 50%,100% 100%,0 100%,0 50%);background:#f4c653;width:6px;height:8px;bottom:5px;right:8px}.town-resources strong{color:#fff6d2;font-size:12px}.town-resources small{color:#cdbf94;text-transform:uppercase;font-size:8px}.town-catalog-body{background-color:var(--pixel-cream);scrollbar-color:var(--pixel-line) #e8daaa;scrollbar-width:thin;background-image:linear-gradient(#705b310b 1px,#0000 1px),linear-gradient(90deg,#705b3109 1px,#0000 1px);background-size:4px 4px;flex:auto;min-height:0;padding:14px 14px 18px;overflow-y:auto}.catalog-heading{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;display:flex}.catalog-heading h2{letter-spacing:.01em;text-transform:uppercase;margin:0;font-size:19px}.catalog-heading>span{color:#77653e;text-transform:uppercase;font-size:9px;font-weight:800}.coin-balance{color:#705718;background:#f5ead2;border-radius:99px;align-items:center;gap:5px;padding:6px 9px;font-size:10px;font-weight:800;display:inline-flex}.coin-balance i{font-style:normal}.preview-pill{color:#536158;letter-spacing:.06em;text-transform:uppercase;background:#e7eae3;border-radius:99px;padding:6px 9px;font-size:9px;font-weight:800}.catalog-intro{color:#665a3d;margin:5px 0 12px;font-size:12px;font-weight:700;line-height:1.6}.building-facing-picker{border:2px solid var(--pixel-line);background:#dfd19d;grid-template-columns:auto 1fr 1fr;align-items:center;gap:5px;margin:0 0 12px;padding:7px;display:grid;box-shadow:2px 2px #5e48223d}.building-facing-picker span{color:#594a2c;text-transform:uppercase;padding:0 5px;font-size:8px;font-weight:800}.building-facing-picker button,.building-facing-controls button{color:#665b3f;text-transform:uppercase;background:#f7edc6;border:2px solid #927b46;border-radius:0;min-height:30px;padding:5px 7px;font-size:8px;font-weight:800}.building-facing-picker button.active,.building-facing-controls button.active{color:#fff2bf;background:var(--pixel-forest);border-color:var(--pixel-forest-dark);box-shadow:2px 2px #263a25}.building-facing-picker button:focus-visible,.building-facing-controls button:focus-visible{outline-offset:2px;outline:3px solid #d7a940}.catalog-filters{grid-template-columns:repeat(3,1fr);gap:4px;margin-bottom:15px;display:grid}.catalog-filters button{color:#665b3f;border:2px solid var(--pixel-line);text-transform:uppercase;background:#dfd19d;border-radius:0;min-height:36px;padding:7px 8px;font-size:12px;font-weight:800;box-shadow:2px 2px #5e48223d}.catalog-filters button:hover{color:#31462d;background:#eadca7}.catalog-filters button.active{color:#fff2bf;background:var(--pixel-forest);border-color:var(--pixel-forest-dark);box-shadow:2px 2px #263a25}.catalog-filters button:focus-visible{outline-offset:2px;outline:3px solid #d7a940}.catalog-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;display:grid}.catalog-card{color:#352f24;border:2px solid var(--pixel-line);text-align:center;background:#f7edc6;border-radius:0;flex-direction:column;min-width:0;min-height:235px;padding:7px;transition:border-color .1s linear,box-shadow .1s linear,transform .1s steps(2,end);display:flex;position:relative;box-shadow:3px 3px #5e48224d}.catalog-card[draggable=true]{cursor:grab;-webkit-user-select:none;user-select:none}.catalog-card[draggable=true]:hover{border-color:#2d6b3b;transform:translate(-1px,-1px);box-shadow:4px 4px #315f36}.catalog-card[draggable=true]:active{cursor:grabbing}.catalog-art{background:#d6dda0;border:1px solid #b19a5c;border-radius:0;flex:auto;place-items:center;min-height:0;display:grid;overflow:hidden}.catalog-art img{object-fit:contain;width:112%;height:112%;image-rendering:pixelated;filter:drop-shadow(4px 4px #41392133);transform:translate(6%)}.catalog-art.facing-right img{transform:translate(-6%)scaleX(-1)}.catalog-art.food-art span{width:64px;height:64px;image-rendering:pixelated;filter:drop-shadow(4px 4px #41392133);background-repeat:no-repeat;background-size:512px 512px}.catalog-card-copy{min-width:0;padding-top:6px}.level-pill{color:#55734c;letter-spacing:.08em;text-transform:uppercase;font-size:11px;font-weight:800}.catalog-card h3{text-overflow:ellipsis;white-space:nowrap;margin:2px 0 3px;font-size:11px;overflow:hidden}.catalog-card p{color:#725321;margin:0;font-size:10px;font-weight:800}.catalog-card p i{font-style:normal}.catalog-status{color:#fff2c0;background:var(--pixel-forest-dark);border:3px solid #152b1b;border-radius:0;margin-top:16px;padding:12px;box-shadow:4px 4px #4632194d}.catalog-status-heading{text-transform:uppercase;justify-content:space-between;gap:12px;font-size:9px;display:flex}.catalog-status-heading strong{color:#e6c766}.catalog-status .level-track{margin:10px 0 8px}.catalog-status p{color:#9fb3a6;margin:0;font-size:8px;line-height:1.4}.town-level-card{color:#fff3c0;background:#183d27;border-bottom:4px solid #102b1c;border-radius:0;flex:none;margin:0;padding:10px 12px}.town-level-card>div:first-child{justify-content:space-between;gap:12px;font-size:10px;display:flex}.town-level-card>div:first-child span{color:#b9cabd}.town-level-card .level-track{background:#102b1c;border:2px solid #0a2115;border-radius:0;height:10px;margin:8px 0 0;padding:2px}.town-level-card .level-track span{background:#286b3e}.town-action-error{margin-top:0}.catalog-filters{flex-wrap:wrap}.catalog-filters button{text-transform:capitalize}.catalog-card.locked{filter:saturate(.55);background:#f4f5f1}.catalog-card.locked .catalog-art{opacity:.65}.catalog-card>button:not(:disabled){color:#fff;background:var(--forest);cursor:pointer}.catalog-card>button:not(:disabled):hover,.catalog-card>button:not(:disabled):focus-visible{background:var(--forest-dark);outline:2px solid #356b4d38}.building-actions{border:1px solid var(--line);background:#fff;border-radius:13px;grid-template-columns:76px 1fr;gap:13px;padding:15px;display:grid}.building-actions h2{margin:0 0 6px;font-size:17px}.building-actions p:not(.eyebrow){color:var(--muted);margin:0;font-size:9px;line-height:1.5}.building-actions>button{min-height:36px}.building-facing-controls{grid-column:1/-1;grid-template-columns:1fr 1fr;gap:6px;display:grid}.building-facing-controls button:disabled{cursor:default;opacity:1}.character-details{color:#fff4cb;background:var(--pixel-forest);border:3px solid var(--pixel-forest-dark);grid-template-columns:64px 1fr;gap:12px;padding:15px;display:grid;box-shadow:4px 4px #46321952}.character-details h2{color:#fff8dc;text-transform:uppercase;text-shadow:2px 2px #283522;margin:1px 0 0;font-size:20px}.character-details .eyebrow{color:#cfdaa4}.character-portrait{color:#3f5531;background:#e4cf83;border:3px solid #9a783b;place-items:center;width:58px;height:58px;font-size:29px;display:grid;box-shadow:inset -4px -4px #583f1d33}.happiness-summary{grid-column:1/-1}.happiness-summary>div:first-child{color:#f7e7a7;text-transform:uppercase;justify-content:space-between;margin-bottom:6px;font-size:9px;display:flex}.happiness-track{background:#182b1d;border:2px solid #0f2015;height:15px;padding:2px}.happiness-track span{background:#e6c553;height:100%;transition:width .25s linear;display:block}.happiness-summary p{color:#c9d4a7;margin:7px 0 0;font-size:8px}.character-details>button{border-radius:0;grid-column:1/-1;min-height:36px}.sell-button{color:#8a3732;background:#faece9;border:1px solid #edcfca;border-radius:9px;font-size:10px;font-weight:800}.sell-button:hover,.sell-button:focus-visible{background:#f4dcd8;outline:none}.reward-explanation{color:#4a554e;background:#eef2e9;border-radius:11px;margin-top:14px;padding:13px}.reward-explanation div{justify-content:space-between;gap:12px;font-size:9px;display:flex}.reward-explanation strong{color:#35694d}.reward-explanation p{color:#68736b;margin:7px 0 0;font-size:8px;line-height:1.5}.demo-week-controls{background:#f8f1df;border:1px solid #eadbb6;border-radius:12px;margin-top:14px;padding:14px}.demo-week-note{color:#806f4c;margin:0 0 10px;font-size:8px;line-height:1.5}.demo-week-controls>div{grid-template-columns:1fr 1fr;gap:7px;display:grid}.demo-week-controls button{min-height:34px;padding:7px 9px;font-size:9px}.demo-week-controls>.text-button{color:#80622d;width:100%;margin-top:6px}.placement-banner{z-index:18;color:#fff3c0;background:#463525;border:3px solid #152b1b;border-radius:0;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:10px;min-width:250px;padding:8px;font-family:Courier New,ui-monospace,monospace;font-size:10px;display:grid;position:absolute;top:18px;left:50%;transform:translate(-50%);box-shadow:4px 4px #4632194d}.placement-banner strong{font-size:14px;font-weight:900}.placement-banner.invalid strong{color:#df3535}.pixel-placement-icon{color:#17341f;background:#e6c766;border:3px solid #152b1b;place-items:center;width:26px;height:26px;font-size:9px;font-weight:900;display:grid;box-shadow:2px 2px #2b2118}.placement-banner.invalid .pixel-placement-icon{color:#fff0cc;background:#b94435}.placement-banner button{color:#fff0cc;text-transform:uppercase;background:#9e382f;border:2px solid #681818;border-radius:0;min-height:34px;padding:6px 9px;font-size:9px;font-weight:900;box-shadow:2px 2px #2b2118}.placement-copy{gap:3px;display:grid}.placement-copy>span{font-size:9px;line-height:1.4}.placement-banner.road-placement{grid-template-columns:30px minmax(150px,1fr) auto auto auto;width:min(760px,100% - 32px)}.road-shape-options{gap:4px;display:flex}.placement-banner .road-shape-options button{color:#fff3c0;background:#5a452e;border-color:#a48b54}.placement-banner .road-shape-options button[aria-pressed=true]{background:#175c32;border-color:#fff3c0}.placement-banner .road-confirm-button{color:#fff3c0;background:#175c32;border-color:#152b1b}.placement-banner .road-confirm-button:disabled{opacity:.5;cursor:default}.town-modal-backdrop{z-index:80;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#152c2094;place-items:center;padding:24px;display:grid;position:absolute;inset:0}.town-celebration{text-align:center;background:#fbfcf8;border:1px solid #fffc;border-radius:19px;width:min(430px,100%);padding:34px;box-shadow:0 28px 80px #0d261952}.celebration-mark{color:#7d5b19;background:#f3e5bc;border-radius:16px;place-items:center;width:54px;height:54px;margin:0 auto 18px;font-size:25px;display:grid}.town-celebration h2{letter-spacing:-.04em;margin:5px 0 16px;font-size:27px}.town-celebration>p:not(.eyebrow){color:var(--muted);font-size:11px;line-height:1.6}.celebration-rewards{justify-content:center;gap:9px;display:flex}.celebration-rewards strong{color:#35694d;background:#e6f0dc;border-radius:9px;padding:9px 12px;font-size:11px}.celebration-finance{grid-template-columns:repeat(3,1fr);gap:7px;margin:15px 0;display:grid}.celebration-finance span{background:#f1ead7;border-radius:8px;padding:10px 7px}.celebration-finance small,.celebration-finance strong{display:block}.celebration-finance small{color:#7b7057;min-height:24px;font-size:8px;line-height:1.4}.celebration-finance strong{color:#2f5f42;margin-top:5px;font-size:13px}.town-celebration .primary-button{margin-top:10px}.feeding-encouragement .celebration-mark{color:#8a3732;background:#f5ded4}@media (width<=1050px){.content-grid,.lower-grid,.dashboard-detail-grid{grid-template-columns:1fr}.goal-form{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=720px){.tab-bar{grid-template-columns:repeat(3,1fr);width:calc(100% - 24px)}.tab-link{padding:10px}.dashboard-page{padding:82px 16px 100px}.topbar{flex-direction:column;align-items:flex-start}.topbar-actions{justify-content:space-between;width:100%}.dashboard-profile{margin-left:auto}.stat-grid{grid-template-columns:1fr}.money-history-panel{margin-top:24px;padding:18px 14px}.money-chart{height:260px;margin-left:-8px}.bank-goal-grid,.goal-card-grid,.import-strip,.lab-event-grid,.plan-metrics,.goal-form,.goal-summary{grid-template-columns:1fr}.goal-meta{gap:20px}.town-invite{grid-template-columns:1fr 1fr}footer{flex-direction:column;gap:2px}.town-page{--town-sidebar-width:min(380px, calc(100vw - 42px))}}@media (width<=480px){.session-controls>span:not(.avatar),.sandbox-pill{display:none}.dashboard-profile{border-left:0;padding-left:0}.dashboard-profile>span:last-child{display:none}.page-heading{align-items:flex-start}.page-mark{width:36px;height:36px;font-size:21px}.town-invite{grid-template-columns:1fr}.town-invite-art{min-height:150px}.chart-key{display:none}.town-resources{grid-template-columns:1fr}.catalog-grid{gap:8px}.catalog-card{padding:8px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}.app-shell:has(.town-launcher){padding-bottom:calc(112px + env(safe-area-inset-bottom))}.town-launcher{z-index:60;right:max(24px, env(safe-area-inset-right));bottom:calc(24px + env(safe-area-inset-bottom));position:fixed}.town-launch-button{color:#fff7d4;background:#175c32;border:3px solid #e6c766;align-items:center;gap:10px;min-height:60px;padding:10px 16px;font-family:Courier New,ui-monospace,monospace;text-decoration:none;transition:background .15s,transform .15s;display:flex;box-shadow:5px 5px #243d27,0 8px 24px #142d1a3d}.town-launch-icon{box-sizing:content-box;color:#e6c766;background:#24452b;border:1px solid #77905a;flex-shrink:0;width:28px;height:28px;padding:5px}.town-launch-button small,.town-launch-button strong{display:block}.town-launch-button small{color:#d9ddaa;margin-bottom:5px;font-size:10px}.town-launch-button strong{letter-spacing:.025em;font-size:16px}.town-launch-arrow{margin-left:8px;font-size:21px}.town-launch-button:hover{background:#207541;transform:translateY(-2px)}.town-launch-button:focus-visible{outline-offset:5px;outline:3px solid #175c32}.town-launch-button:active{transform:translate(2px,2px);box-shadow:2px 2px #243d27}@media (width<=600px){.town-launcher{left:16px;right:16px;bottom:calc(16px + env(safe-area-inset-bottom))}.town-launch-button{min-height:56px;padding:8px 12px}.town-launch-arrow{margin-left:auto}}.transaction-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;display:flex}.bank-page .transaction-toggle{min-height:44px;padding:8px 12px;font-size:11px}.bank-page .transaction-list-expanded{scrollbar-color:#9d7e43 #eadca6;max-height:480px;overflow-y:auto}.transaction-count-note{color:#776a49;margin:13px 0 0;font-size:10px}.bank-refresh-controls{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;display:flex}.last-refreshed{color:#d9ddaa;font-size:10px;line-height:1.5}.bank-page .bank-refresh-button{flex-shrink:0;justify-content:center;align-items:center;width:36px;min-height:36px;padding:0;display:inline-flex}.bank-refresh-button>span{font-size:23px;line-height:1}.bank-refresh-button:disabled{cursor:wait;opacity:.6}@media (width<=600px){.bank-refresh-controls{justify-content:flex-start}}.bank-summary-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.finance-summary-button{text-align:left;color:inherit;font:inherit}.bank-summary-grid .finance-summary-button:hover{background:#f9edba;border-color:#175c32}.finance-summary-button:focus-visible,.transaction-filters button:focus-visible{outline-offset:4px;outline:3px solid #175c32}.finance-summary-button small{justify-content:space-between;gap:8px;display:flex}.transaction-filters{flex-wrap:wrap;gap:8px;margin-top:18px;display:flex}.transaction-filters button{color:#58432f;background:#eadca6;border:2px solid #9d7e43;min-height:40px;padding:8px 15px;font-size:11px;font-weight:700}.transaction-filters button[aria-pressed=true]{color:#fff8d8;background:#175c32;border-color:#243d27}#transactions-heading{scroll-margin-top:80px}@media (width<=600px){.bank-summary-grid{grid-template-columns:1fr}}.bank-page .spending-pie-panel{background:#f2e7b5;border:3px solid #9d7e43;border-radius:0;margin-top:22px;box-shadow:5px 5px #5e482247}.spending-pie-panel h2{font-size:23px}.spending-pie-hint{color:#776a49;font-size:11px;line-height:1.6}.spending-pie-layout{grid-template-columns:minmax(220px,.9fr) minmax(0,1.1fr);align-items:center;gap:24px;display:grid}.spending-pie-chart{min-width:0;height:280px}.spending-category-list{gap:8px;display:grid}.spending-category-list button{text-align:left;color:#352f24;background:#f9efca;border:2px solid #c4af6d;grid-template-columns:13px minmax(0,1fr) auto 12px;align-items:center;gap:10px;min-height:50px;padding:10px 12px;font-size:12px;display:grid}.spending-category-list button:hover,.spending-category-list button[aria-pressed=true]{background:#e2e8bf;border-color:#175c32}.spending-category-list button:focus-visible{outline-offset:3px;outline:3px solid #175c32}.spending-category-list small{color:#776a49;margin-top:4px;font-size:10px;display:block}.category-color{border-radius:3px;width:13px;height:13px}@media (width<=600px){.spending-pie-layout{grid-template-columns:1fr;gap:8px}.spending-pie-chart{height:240px}}.spending-pie-chart{background:radial-gradient(#fffbe7d9,#fffbe700 70%);border-radius:18px;height:300px}.spending-pie-slice{cursor:pointer;transition:transform .12s ease-out}.spending-pie-slice:hover,.spending-pie-slice.selected{transform:translate(var(--slice-x), var(--slice-y))}.spending-category-list button{border-radius:8px;transition:transform .15s,background .15s,box-shadow .15s}.spending-category-list button:hover,.spending-category-list button[aria-pressed=true]{transform:translate(3px);box-shadow:0 3px 8px #3143391a}.pie-selection-actions{border-top:2px solid #c4af6d;justify-content:flex-end;margin-top:18px;padding-top:16px;display:flex}@media (prefers-reduced-motion:reduce){.spending-pie-slice{transition:none}}.spending-pie-chart{background:0 0;height:300px;position:relative}.donut-center{text-align:center;pointer-events:none;width:120px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.donut-center small,.donut-center strong,.donut-center span{display:block}.donut-center small{color:#776a49;text-overflow:ellipsis;white-space:nowrap;font-size:10px;overflow:hidden}.donut-center strong{color:#244c35;letter-spacing:-.04em;margin:7px 0;font-size:25px}.donut-center span{color:#8a7e5b;font-size:9px}.spending-category-list button{background:0 0;border:1px solid #0000;border-bottom-color:#e0d4ab;border-radius:0;transition:background .12s}.spending-category-list button:hover,.spending-category-list button[aria-pressed=true]{box-shadow:none;background:#e8edcf;transform:none}.category-color{border-radius:0}@media (width<=600px){.spending-pie-chart{height:260px}.donut-center strong{font-size:22px}}.catalog-card.unaffordable .catalog-art{opacity:.65;filter:saturate(.6)}.catalog-card .affordability-note{color:#8a4936;background:#f1dfc4;margin-top:6px;padding:5px 3px;font-size:12px;font-weight:700;line-height:1.4;display:block}.affordability-note span{color:#7d6745;margin-top:2px;font-size:11px;font-weight:700;display:block}.town-sound-control{z-index:30;left:16px;bottom:max(16px, env(safe-area-inset-bottom));position:absolute}.pixel-sound-button{color:#f4e6ab;cursor:pointer;width:48px;height:48px;image-rendering:pixelated;background:#275237;border:3px solid #b49a58;border-radius:0;place-items:center;padding:7px;display:grid;box-shadow:3px 3px #243d27,inset 2px 2px #ffffff1f}.pixel-sound-button:hover{background:#356442}.pixel-sound-button:active{transform:translate(2px,2px);box-shadow:1px 1px #243d27}.pixel-sound-button:focus-visible{outline-offset:4px;outline:3px solid #fff0a4}.pixel-sound-button.muted{background:#3d4433}.sound-red-slash{fill:#f16b58}.town-sound-error{color:#fff0c6;background:#3f332b;border:2px solid #b49a58;width:190px;padding:9px;font:10px/1.5 monospace;position:absolute;bottom:58px;left:0}@media (width<=600px){.town-sound-control{left:12px;bottom:max(12px, env(safe-area-inset-bottom))}}.town-sidebar-header>div{min-width:0}.town-name h1{overflow-wrap:anywhere}.town-rename-button{color:#fff3c0;background:0 0;border:0;margin-top:8px;padding:4px 0;font-size:11px;font-weight:800;text-decoration:underline}.town-name-form{gap:8px;display:grid}.town-name-form label{color:#fff3c0;font-size:12px;font-weight:800}.town-name-form input{color:#352f24;width:100%;min-width:0;font:inherit;background:#f7edc6;border:2px solid #9d7e43;border-radius:0;padding:8px;font-size:15px}.town-name-form>div{flex-wrap:wrap;gap:8px;display:flex}.town-name-form button{color:#352f24;background:#e6c766;border:2px solid #6f5427;padding:6px 8px;font-size:11px;font-weight:800}.town-name-form button:disabled{opacity:.5;cursor:default}.town-name-form [role=alert]{color:#fff3c0}.catalog-card>button{flex-shrink:0;min-height:36px;font-size:24px;font-weight:900;line-height:1}.catalog-card .catalog-art{flex:none;height:clamp(100px,12vw,150px)}.sync-details{color:#675938;margin-top:16px;font-family:inherit;font-size:11px}.sync-details summary{cursor:pointer;width:fit-content;padding:8px 0;font-weight:700}.sync-details summary:focus-visible{outline-offset:3px;outline:2px solid #175c32}.sync-details .import-strip{margin-top:6px}.plan-header-actions{align-items:center;gap:14px;display:flex}.plan-info-button{color:#356b4d;background:#eef2e9;border:1px solid #c9d3c2;border-radius:50%;flex-shrink:0;place-items:center;width:32px;height:32px;padding:0;font-family:Georgia,serif;font-size:18px;font-weight:700;display:grid}.plan-info-button:hover,.plan-info-button[aria-expanded=true]{color:#fff3c0;background:#356b4d}.plan-info-button:focus-visible{outline-offset:3px;outline:2px solid #175c32}.simple-plan-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.simple-plan-metrics>span{padding:18px}.simple-plan-metrics strong{font-size:25px}.plan-info-details{background:#f5f6ef;border:1px solid #dfe4d6;border-radius:8px;margin-top:18px;padding:18px}.plan-info-details h3{margin:0 0 14px;font-size:13px}.plan-info-breakdown{gap:8px;margin:0;font-size:11px;display:grid}.plan-info-breakdown>div{justify-content:space-between;gap:18px;display:flex}.plan-info-breakdown dt{color:#717a72}.plan-info-breakdown dd{text-align:right;margin:0;font-weight:650}.plan-info-details>button{margin-top:14px}@media (width<=480px){.simple-plan-metrics>span{padding:12px}.simple-plan-metrics strong{font-size:22px}.plan-header-actions{gap:8px}}.goal-form.goal-entry-form{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:22px 24px;max-width:720px;margin-top:24px;font-family:Inter,Segoe UI,system-ui,sans-serif}.goal-form-intro{color:#68746a;grid-column:1/-1;margin:0 0 2px;font-size:13px;font-weight:400;line-height:1.6}.goal-entry-field{gap:8px;min-width:0;display:grid}.goal-name-field{grid-column:1/-1}.goal-entry-form .goal-entry-field label{color:#425347;font-size:12px;font-weight:600;display:block}.goal-entry-form .goal-entry-field input{color:#273d2e;width:100%;min-height:46px;box-shadow:none;background:#fff;border:1px solid #cbd5c9;border-radius:5px;padding:11px 13px;font-family:inherit;font-size:14px;font-weight:400;line-height:1.4;display:block}.goal-entry-field input:focus{outline-offset:1px;border-color:#59846a;outline:2px solid #dce9de}.goal-entry-field input::placeholder{color:#97a095}.goal-currency-field{position:relative}.goal-currency-field>span{color:#798776;pointer-events:none;font-size:14px;position:absolute;top:50%;left:13px;transform:translateY(-50%)}.goal-entry-form .goal-currency-field input{font-variant-numeric:tabular-nums;padding-left:30px}.goal-entry-field>small{color:#7f8a7c;margin-top:-2px;font-size:11px;line-height:1.5}.goal-entry-footer{border-top:1px solid #e0e6dc;grid-column:1/-1;justify-content:flex-end;align-items:center;gap:20px;padding-top:18px;display:flex}.goal-entry-footer .primary-button{min-height:42px;box-shadow:none;border-radius:5px;padding:10px 22px;font-family:inherit;font-size:13px;font-weight:600}.goal-entry-footer .text-button{font-family:inherit;font-size:12px}@media (width<=540px){.goal-form.goal-entry-form{grid-template-columns:1fr;gap:18px}.goal-entry-footer .primary-button{flex:1}.goal-date-field{grid-column:1/-1}}.goal-entry-form .emphasized-date{background:#f0f5eb;border:1px solid #b9cbb0;border-left:4px solid #487653;border-radius:6px;grid-column:1/-1;gap:16px;padding:20px}.goal-date-heading{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:6px 16px;display:flex}.goal-entry-form .goal-date-heading label{color:#315c3c;font-size:17px;font-weight:650}.goal-date-heading>span{color:#7a8972;font-size:11px}.goal-date-options{flex-wrap:wrap;gap:8px;display:flex}.goal-date-options button{color:#607556;background:#fff;border:1px solid #c9d6c0;border-radius:5px;min-height:38px;padding:8px 16px;font:12px Inter,Segoe UI,system-ui,sans-serif}.goal-date-options button:hover{background:#e6eddf;border-color:#638559}.goal-date-options button[aria-pressed=true]{color:#fff;background:#487653;border-color:#487653}.goal-date-options button:focus-visible{outline-offset:3px;outline:2px solid #487653}.goal-date-selection{grid-template-columns:minmax(180px,1fr) 1fr;align-items:center;gap:22px;display:grid}.goal-entry-form .goal-date-selection input{cursor:pointer;border-color:#adbea4;min-height:48px;font-size:15px}.goal-date-preview{color:#7a8972;margin:0;font-size:11px;line-height:1.6}.goal-date-preview strong,.goal-date-preview span{display:block}.goal-date-preview strong{color:#3a6544;font-size:21px;font-weight:600}@media (width<=540px){.goal-date-selection{grid-template-columns:1fr;gap:12px}.goal-date-options{grid-template-columns:repeat(4,1fr);gap:5px;display:grid}.goal-date-options button{padding:8px 5px;font-size:11px}.goal-entry-form .emphasized-date{padding:16px}}.goal-journey{border-top:1px solid #bba466;margin-top:20px;padding-top:16px}.goal-journey-time{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.goal-journey-time>span:first-child>strong{color:#315e3e;font-size:14px}.bank-goal-card .goal-journey-time small{color:#7c714e;margin-top:4px;font-size:10px;font-weight:400}.goal-days-left{color:#6a613f;background:#e0d399;padding:5px 8px;font-size:10px}.goal-milestones{grid-template-columns:repeat(4,1fr);gap:6px;margin:20px 0 16px;padding:0;list-style:none;display:grid}.goal-milestones li{text-align:center;justify-items:center;display:grid;position:relative}.goal-milestones li:before{content:"";background:#c4b27d;width:100%;height:2px;position:absolute;top:11px;left:55%}.goal-milestones li:last-child:before{display:none}.goal-milestones li>span{z-index:1;color:#f2e7b5;background:#eadca6;border:2px solid #ae9c66;place-items:center;width:24px;height:24px;font-size:12px;display:grid;position:relative}.goal-milestones li.reached>span{background:#487653;border-color:#315e3e}.goal-milestones li.next>span{border-color:#487653;box-shadow:0 0 0 3px #d7dba7}.goal-milestones li>strong{color:#635c3e;margin-top:8px;font-size:11px}.bank-goal-card .goal-milestones small{color:#8a7c52;margin-top:3px;font-size:8px;font-weight:400}.goal-milestones li.reached small{color:#315e3e}.bank-goal-card .goal-next-step{color:#5e6447;margin:0;font-size:11px;line-height:1.6}.bank-goal-card .goal-next-step strong{color:#315e3e;font-size:14px}.bank-goal-card .goal-weekly-step{color:#81744f;margin:7px 0 0;font-size:10px;line-height:1.6}.bank-goal-card .goal-weekly-step strong{color:#4d6846;font-size:11px}.goal-journey-time{flex-wrap:wrap}.goal-xp{color:#654914;background:#fff3ce;border:1px solid #c5a45e;gap:3px;padding:6px 10px;display:grid}.goal-xp strong{font-size:13px}.goal-xp small{font-size:11px}.bank-page .planner-panel,.bank-page .sync-details{color:#352f24;background:var(--bank-cream);border:3px solid var(--bank-line);border-radius:0;margin-top:18px;padding:clamp(18px,3vw,26px);box-shadow:6px 6px #5e482247}.bank-page .panel,.bank-page .stat-card,.bank-page .bank-goal-card,.bank-page .goal-xp,.bank-page .goal-days-left,.bank-page .goal-milestones li>span{border-radius:0}.bank-page .planner-panel .eyebrow{color:#6b7d4d}.bank-page .planner-panel h2{letter-spacing:.01em;text-transform:uppercase;font-size:clamp(19px,3vw,26px)}.bank-page .sync-details summary{text-transform:uppercase;width:auto;padding:0;font-size:13px;line-height:1.5}.bank-page .sync-details[open] summary{margin-bottom:16px}.bank-page .sync-details .import-strip{background:var(--bank-line);border:2px solid var(--bank-line);border-radius:0;margin-top:0}.bank-page .sync-details .import-strip>span{background:#eadca6}.bank-page .sync-details .import-strip small{color:#675938}.bank-page .spending-pie-panel{background:var(--bank-cream);border:3px solid var(--bank-line);border-radius:0;box-shadow:6px 6px #5e482247}.bank-page .spending-category-list button,.bank-page .spending-pie-chart,.bank-page .category-color,.bank-page .plan-info-button,.bank-page .plan-status,.bank-page .sandbox-pill,.bank-page .secondary-button,.bank-page .primary-button{border-radius:0}.bank-page .spending-category-list button:hover,.bank-page .spending-category-list button[aria-pressed=true]{border-color:var(--bank-line);background:#dce2b5}.bank-page .plan-metrics>span,.bank-page .plan-info-details{color:#352f24;background:#eadca6;border:2px solid #b49a58;border-radius:0}.bank-page .plan-metrics small,.bank-page .plan-info-breakdown dt{color:#675938}.bank-page .plan-metrics strong{color:var(--bank-forest)}.bank-page .plan-info-button{color:var(--bank-forest);border:2px solid var(--bank-line);background:#eadca6}.bank-page .plan-info-button:hover,.bank-page .plan-info-button[aria-expanded=true]{color:#fff3c0;background:var(--bank-forest)}.bank-page .goal-entry-form .goal-entry-field input,.bank-page .goal-date-options button{background:#fff6d8;border:2px solid #b49a58;border-radius:0}.bank-page .goal-entry-form .emphasized-date{border:2px solid #9baf72;border-left:4px solid var(--bank-forest);background:#dce2b5;border-radius:0}.bank-page .goal-date-options button:hover{border-color:var(--bank-forest);background:#eadca6}.bank-page .goal-date-options button[aria-pressed=true]{color:#fff3c0;background:var(--bank-forest);border-color:var(--bank-forest-dark)}.bank-page .goal-entry-footer .primary-button{background:var(--bank-forest);color:#fff3c0;border:2px solid var(--bank-forest-dark);border-radius:0;box-shadow:3px 3px #3d311b40}
