:root{--blue:#3dbaf2;--deep:#1a8fc7;--cyan:#2dcaeb;--ink:#0a0a0a;--accent:#f5a623;--accent-soft:#fff4e0;--accent-ink:#8a5300;--link:#0f6f9e;--btn:#1577a8;--btn-hover:#106391;--muted:#4b5563;--line:#e3edf3;--soft:#f3fafe;--radius:20px;--head:"Montserrat", "Montserrat Fallback", system-ui, sans-serif;--body:"Inter", "Inter Fallback", system-ui, sans-serif}@font-face{font-family:Montserrat Fallback;src:local(Arial),local(Helvetica);size-adjust:113.2%;ascent-override:85.8%;descent-override:22.3%;line-gap-override:0%}@font-face{font-family:Inter Fallback;src:local(Arial),local(Helvetica);size-adjust:107.1%;ascent-override:90.4%;descent-override:22.5%;line-gap-override:0%}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{color:var(--ink);font-family:var(--body);background:#fff;margin:0;font-size:16px;line-height:1.5}h1,h2{font-family:var(--head);margin:0;line-height:1.2}p{margin:0}button{font:inherit;color:inherit}button,input,a{touch-action:manipulation;-webkit-tap-highlight-color:transparent}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}:focus-visible{outline:3px solid var(--ink);outline-offset:2px}.page{max-width:1140px;margin:0 auto;padding:16px 16px 24px;overflow-x:clip}.fine{color:var(--muted);font-size:13px}.header{text-align:center;margin-bottom:14px}.header h1{letter-spacing:-.02em;font-size:clamp(1.4rem,6vw,2.5rem);font-weight:800}.header p{max-width:560px;color:var(--muted);margin:6px auto 0;font-size:14px;line-height:1.45}.presets{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:12px;display:grid}.preset{cursor:pointer;text-align:center;background:#fff;border:2px solid #dceaf2;border-radius:16px;flex-direction:column;justify-content:center;align-items:center;gap:2px;min-height:58px;padding:8px 6px;transition:transform .15s,border-color .15s,background .15s;display:flex}button.preset:hover{border-color:var(--blue);transform:translateY(-2px)}.preset.active{border-color:var(--deep);background:#eef8fe;box-shadow:0 0 0 3px #3dbaf240}.preset-name{font-family:var(--head);font-size:15px;font-weight:700}.preset-sub{color:var(--muted);font-size:12px;line-height:1.3}.preset.mine{background:var(--accent-soft);border-color:var(--accent);min-height:44px;box-shadow:none;cursor:default;flex-direction:row;grid-column:1/-1;gap:8px}@media (width>=600px){.presets:has(.mine){grid-template-columns:repeat(4,minmax(0,1fr))}.preset.mine{flex-direction:column;grid-column:auto;gap:2px}}.main-grid{grid-template-columns:minmax(0,1fr);gap:12px;display:grid}@media (width>=1024px){.main-grid{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);grid-template-areas:"shelf results""shelf controls""shelf goal""shelf milestones";align-items:start;gap:20px 28px}.area-shelf{grid-area:shelf;position:sticky;top:16px}.area-controls{grid-area:controls}.area-results{grid-area:results}.area-goal{grid-area:goal}.area-milestones{grid-area:milestones}}.card{border:1px solid var(--line);border-radius:var(--radius);background:#fff;padding:18px;box-shadow:0 1px 2px #0000000a,0 10px 28px -16px #1a8fc747}.card h2{font-size:18px;font-weight:700}.shelf-card{border-radius:var(--radius);background:linear-gradient(#f3fbff 0%,#e4f5fd 100%);border:1px solid #d3ecf8;padding:14px}.shelf-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.badge{background:var(--accent-soft);border:1.5px solid var(--accent);color:var(--accent-ink);font-family:var(--head);border-radius:999px;align-items:center;gap:6px;padding:6px 12px;font-size:14px;font-weight:700;display:inline-flex}.badge svg{width:16px;height:16px;fill:var(--accent)}.badge.pop{animation:.45s cubic-bezier(.3,1.6,.5,1) pop}.shelf-count{font-family:var(--head);color:var(--link);font-size:14px;font-weight:700}.shelf{flex-direction:column;gap:30px;padding-top:30px;display:flex}.spines{align-items:flex-end;gap:3px;height:104px;padding:0 6px;display:flex}.spine-slot{flex:0 0 calc(10% - 2.7px);align-items:flex-end;max-width:44px;height:100%;display:flex;position:relative}.spine{width:100%;height:var(--h);background:var(--c);cursor:pointer;transform-origin:bottom;animation:drop .42s cubic-bezier(.2, .8, .3, 1.25) var(--delay) both;border:0;border-radius:4px 4px 2px 2px;padding:0;transition:transform .15s;display:block;position:relative;box-shadow:inset -4px 0 #0000001f,inset 2px 0 #ffffff47}.spine:hover{transform:translateY(-4px)}.spine:before{content:"";left:20%;right:20%;top:var(--band);background:#ffffffd9;border-radius:2px;height:12%;position:absolute}.spine.lined:after{content:"";background:#ffffff73;height:3px;position:absolute;bottom:16%;left:0;right:0;box-shadow:0 7px #ffffff73}.spine.leaving{pointer-events:none;animation:.24s ease-in forwards slideout}.ping-glow{height:var(--h);box-shadow:0 0 0 2px var(--accent), 0 0 18px 4px #f5a6238c;pointer-events:none;border-radius:4px 4px 2px 2px;animation:1.1s ease-out forwards glow;position:absolute;bottom:0;left:0;right:0}.ping-float{bottom:calc(var(--h) + 4px);font-family:var(--head);color:#b86e00;white-space:nowrap;pointer-events:none;font-size:13px;font-weight:800;animation:1.2s ease-out forwards floatup;position:absolute;left:50%}.tip{bottom:calc(var(--h) + 10px);background:var(--ink);color:#fff;z-index:5;border-radius:10px;width:max-content;max-width:210px;padding:8px 10px;font-size:13px;line-height:1.35;position:absolute;left:50%;transform:translate(-50%);box-shadow:0 8px 20px -8px #00000080}.tip.left{left:0;transform:none}.tip.right{left:auto;right:0;transform:none}.plank{background:linear-gradient(#e3d2b6,#cdb38e);border-radius:4px;height:12px;margin:0 -2px;box-shadow:0 3px #b89c74,0 10px 14px -8px #0000004d}.shelf-head-right{align-items:center;gap:8px;display:flex}.share-icon{width:44px;height:44px;color:var(--link);cursor:pointer;background:#fff;border:1.5px solid #bfe3f5;border-radius:50%;flex:none;place-items:center;display:grid}.share-icon:disabled{opacity:.5}.share-icon svg{width:20px;height:20px}.shelf-hint{color:var(--muted);text-align:center;margin-top:12px;font-size:13px}@media (width>=1024px){.shelf{padding-top:40px}.spines{height:170px}}.btn{min-height:44px;font-family:var(--head);text-align:center;cursor:pointer;border:2px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0 18px;font-size:15px;font-weight:700;line-height:1.2;text-decoration:none;transition:background .15s,transform .15s,border-color .15s;display:inline-flex}.btn svg{width:18px;height:18px}.btn:hover{transform:translateY(-1px)}.btn:disabled,.btn[aria-disabled=true]{opacity:.55;cursor:not-allowed;transform:none}.btn-primary{background:var(--btn);color:#fff;box-shadow:0 8px 18px -8px #1577a8b3}.btn-primary:hover{background:var(--btn-hover)}.btn-ghost{color:var(--link);background:#fff;border:1.5px solid #bfe3f5}.control+.control{margin-top:18px}.control-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.control-head label{font-size:15px;font-weight:600}.control-value{font-family:var(--head);color:var(--link);font-variant-numeric:tabular-nums;font-size:22px;font-weight:800}.control-row{align-items:center;gap:10px;margin-top:4px;display:flex}.step-btn{background:var(--soft);cursor:pointer;border:1.5px solid #bfe3f5;border-radius:50%;flex:0 0 44px;place-items:center;width:44px;height:44px;transition:background .15s,transform .1s;display:grid}.step-btn:hover:not(:disabled){background:#e2f4fd}.step-btn:active:not(:disabled){transform:scale(.93)}.step-btn:disabled{opacity:.4;cursor:not-allowed}.step-btn svg{fill:none;width:18px;height:18px;stroke:var(--link);stroke-width:2.4px;stroke-linecap:round}input[type=range]{appearance:none;cursor:pointer;background:0 0;flex:1;min-width:0;height:44px;margin:0}input[type=range]::-webkit-slider-runnable-track{background:linear-gradient(to right, var(--blue) var(--fill), #e3eef4 var(--fill));border-radius:99px;height:8px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:3px solid var(--deep);background:#fff;border-radius:50%;width:28px;height:28px;margin-top:-10px;box-shadow:0 2px 6px #0000002e}input[type=range]::-moz-range-track{background:#e3eef4;border-radius:99px;height:8px}input[type=range]::-moz-range-progress{background:var(--blue);border-radius:99px;height:8px}input[type=range]::-moz-range-thumb{border:3px solid var(--deep);background:#fff;border-radius:50%;width:22px;height:22px}input[type=range]:focus-visible{outline:none}input[type=range]:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 4px #0a0a0ad9}input[type=range]:focus-visible::-moz-range-thumb{box-shadow:0 0 0 4px #0a0a0ad9}.advanced-toggle{min-height:44px;color:var(--link);cursor:pointer;background:0 0;border:0;align-items:center;gap:4px;margin-top:8px;padding:0 4px;font-size:14px;font-weight:600;display:inline-flex}.advanced-toggle svg{fill:none;stroke:currentColor;stroke-width:2px;width:16px;height:16px;transition:transform .2s}.advanced-toggle[aria-expanded=true] svg{transform:rotate(180deg)}.advanced{background:var(--soft);border-radius:14px;padding:12px 14px}.advanced .fine{margin-top:6px}.area-results{position:relative}.counters{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.counter{border:1px solid var(--line);background:#fff;border-radius:18px;flex-direction:column;gap:2px;min-width:0;padding:14px 16px;display:flex;container-type:inline-size}.counter-label{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:12px;font-weight:600}.counter-value{font-family:var(--head);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:min(26px,13.5cqi);font-weight:800;line-height:1.15}.counter.hero{background:radial-gradient(120% 140% at 100% 0%, #10405c 0%, var(--ink) 60%);color:#fff;border:0;grid-column:1/-1;padding:14px 18px;box-shadow:0 16px 32px -18px #1a8fc7cc}.counter.hero .counter-label{color:#8fdcf8}.counter.hero .counter-value{font-size:min(3.8rem,17cqi)}.counters-note{text-align:center;color:var(--muted);grid-column:1/-1;font-size:13px}.toasts{z-index:20;pointer-events:none;flex-direction:column;align-items:center;gap:6px;width:max-content;max-width:92%;display:flex;position:absolute;top:-14px;left:50%;transform:translate(-50%)}.toast{border:2px solid var(--accent);color:var(--ink);font-family:var(--head);background:#fff;border-radius:999px;align-items:center;gap:8px;padding:10px 16px;font-size:14px;font-weight:700;animation:.3s cubic-bezier(.3,1.5,.5,1) toastin;display:inline-flex;box-shadow:0 12px 24px -12px #00000059}.toast svg{width:18px;height:18px;fill:var(--accent);flex:none}.track{margin:18px 12px 6px;position:relative}.track-bar{background:#eef3f6;border-radius:99px;height:8px;overflow:hidden}.track-fill{width:var(--p);background:linear-gradient(90deg, var(--blue), var(--accent));border-radius:99px;height:100%;transition:width .4s ease-out}.track-stops{margin:0;padding:0;list-style:none}.track-stops li{flex-direction:column;align-items:center;display:flex;position:absolute;top:-3px;transform:translate(-50%)}.dot{background:#fff;border:2px solid #cfdde5;border-radius:50%;width:14px;height:14px;transition:background .2s,border-color .2s,transform .2s}.lit .dot{background:var(--accent);box-shadow:0 0 0 2px var(--accent);border-color:#fff;transform:scale(1.1)}.amt{color:var(--muted);margin-top:4px;font-size:11px;font-weight:600;display:none}@media (width>=480px){.track{margin-bottom:26px}.amt{display:block}}.milestone-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:16px 0 0;padding:0;list-style:none;display:grid}.milestone-list li{color:var(--muted);background:#f5f7f9;border-radius:12px;align-items:center;gap:8px;padding:8px 10px;transition:background .25s;display:flex}.milestone-list li.lit{background:var(--accent-soft);color:var(--ink)}.ms-icon{background:#e6ebef;border-radius:50%;flex:none;place-items:center;width:26px;height:26px;display:grid}.lit .ms-icon{background:var(--accent)}.ms-icon svg{fill:none;width:16px;height:16px;stroke:var(--muted);stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.lit .ms-icon svg{stroke:var(--ink);stroke-width:2.4px}.ms-text{flex-direction:column;min-width:0;display:flex}.ms-label{font-size:13.5px;font-weight:600;line-height:1.25}.ms-amt{font-size:12px}.next-line{margin-top:14px;font-size:14.5px}.next-line strong{color:var(--link)}.goal-q{margin:6px 0 10px;font-weight:600;display:block}.money-input{height:54px;font-family:var(--head);border:2px solid #bfe3f5;border-radius:14px;align-items:center;gap:6px;max-width:360px;padding:0 16px;font-size:22px;font-weight:700;display:flex}.money-input:focus-within{border-color:var(--deep);box-shadow:0 0 0 3px #3dbaf24d}.money-input input{min-width:0;height:100%;font:inherit;color:inherit;background:0 0;border:0;outline:none;flex:1}.money-input .per{font-family:var(--body);color:var(--muted);font-size:14px;font-weight:500}.goal .fine{margin-top:6px}.goal-result{background:var(--soft);border-radius:14px;flex-direction:column;align-items:flex-start;gap:10px;margin-top:14px;padding:14px;display:flex}.goal-result strong{color:var(--link)}.footer{border-top:1px solid var(--line);color:var(--muted);margin-top:24px;padding-top:16px;font-size:13px;line-height:1.55}@keyframes drop{0%{opacity:0;transform:translateY(-46px)}60%{opacity:1;transform:translateY(3px)}to{opacity:1;transform:none}}@keyframes slideout{to{opacity:0;transform:translate(14px)rotate(10deg)}}@keyframes glow{0%{opacity:1}to{opacity:0}}@keyframes floatup{0%{opacity:0;transform:translate(-50%,6px)}20%{opacity:1}to{opacity:0;transform:translate(-50%,-28px)}}@keyframes pop{0%{transform:scale(.7)}to{transform:scale(1)}}@keyframes toastin{0%{opacity:0;transform:translateY(-8px)scale(.9)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
