
:root{
  --bg:#f5f5f7; --panel:#ffffff; --ink:#1d1d1f; --muted:#6e6e73; --line:rgba(0,0,0,.09);
  --accent:#0071e3; --accent-2:#8e44ec; --accent-soft:rgba(0,113,227,.09); --good:#248a3d; --bad:#d70015; --chip:#f5f5f7;
  --nav:rgba(245,245,247,.72); --shadow:0 2px 6px rgba(0,0,0,.03),0 12px 32px rgba(0,0,0,.05); --seg-on:#ffffff;
  --font:-apple-system,BlinkMacSystemFont,"SF Pro Display","Inter","Segoe UI Variable Display","Segoe UI",system-ui,sans-serif;
  --mono:"SF Mono",ui-monospace,"Cascadia Mono",Consolas,monospace;
  --ease:cubic-bezier(.2,.8,.2,1);
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  color-scheme:dark;--bg:#000000;--panel:#161617;--ink:#f5f5f7;--muted:#98989d;--line:rgba(255,255,255,.1);
  --accent:#2997ff;--accent-2:#bf5af2;--accent-soft:rgba(41,151,255,.16);--good:#30d158;--bad:#ff453a;--chip:#232325;
  --nav:rgba(22,22,23,.72);--shadow:0 0 0 1px rgba(255,255,255,.06);--seg-on:#3a3a3c;}}
:root[data-theme="dark"]{color-scheme:dark;--bg:#000000;--panel:#161617;--ink:#f5f5f7;--muted:#98989d;--line:rgba(255,255,255,.1);
  --accent:#2997ff;--accent-2:#bf5af2;--accent-soft:rgba(41,151,255,.16);--good:#30d158;--bad:#ff453a;--chip:#232325;
  --nav:rgba(22,22,23,.72);--shadow:0 0 0 1px rgba(255,255,255,.06);--seg-on:#3a3a3c;}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth;scroll-padding-top:64px}
body{background:var(--bg);color:var(--ink);font-family:var(--font);font-size:15px;line-height:1.47;letter-spacing:-.011em;-webkit-font-smoothing:antialiased;margin:0;padding-inline:0;padding-block:0 64px}
a{color:var(--accent);text-decoration:none} a:hover{text-decoration:underline}
:focus-visible{outline:none;box-shadow:0 0 0 4px var(--accent-soft),0 0 0 1.5px var(--accent);border-radius:10px}

/* nav */
.nav{position:sticky;top:0;z-index:20;background:var(--nav);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid var(--line);padding-top:env(safe-area-inset-top,0px)}
.nav-in{max-width:1180px;margin:0 auto;height:48px;display:flex;align-items:center;gap:28px;padding-inline:22px;overflow-x:auto;scrollbar-width:none}
.nav-in::-webkit-scrollbar{display:none}
.brand{font-weight:600;font-size:15px;letter-spacing:-.02em;white-space:nowrap;display:flex;align-items:center;gap:8px}
.brand i{width:18px;height:18px;border-radius:6px;background:linear-gradient(135deg,var(--accent),var(--accent-2));display:inline-block}
.nav a{color:var(--ink);opacity:.8;font-size:12.5px;white-space:nowrap;transition:opacity .2s}
.nav a:hover{opacity:1;text-decoration:none}
.nav .sp{flex:1}

.wrap{max-width:1180px;margin:0 auto;display:grid;gap:28px;padding-inline:22px}
@media (max-width:600px){.wrap{padding-inline:16px}.nav-in{padding-inline:16px;gap:20px}}

/* hero */
.hero{text-align:center;padding-block:72px 28px;display:grid;gap:14px;justify-items:center}
.hero .eyebrow,.eyebrow{font-size:17px;font-weight:600;color:var(--accent);margin:0;letter-spacing:-.01em}
.hero h1{font-size:clamp(40px,7vw,80px);line-height:1.04;font-weight:700;letter-spacing:-.035em;margin:0;text-wrap:balance;max-width:14ch}
.hero h1 span{background:linear-gradient(90deg,var(--accent),var(--accent-2));-webkit-background-clip:text;background-clip:text;color:transparent}
.hero p{font-size:clamp(17px,2vw,21px);color:var(--muted);margin:0;max-width:40ch;line-height:1.38;text-wrap:balance}
.hero .stats{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:10px}
.hero .stats span{font-size:13px;color:var(--muted);background:var(--panel);border-radius:980px;padding:7px 14px;box-shadow:var(--shadow)}
.hero .stats b{color:var(--ink);font-weight:600}

.grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);gap:24px;align-items:start}
@media (max-width:960px){.grid{grid-template-columns:1fr}}
.panel{background:var(--panel);border-radius:28px;padding:32px;display:grid;gap:26px;min-width:0;box-shadow:var(--shadow)}
@media (max-width:600px){.panel{padding:22px;border-radius:22px}}
section.panel>h2.sec-t:first-child{font-size:clamp(26px,3.4vw,34px);font-weight:700;letter-spacing:-.03em;text-transform:none;color:var(--ink);line-height:1.1}
.sec-t{font-weight:600;font-size:13px;letter-spacing:-.005em;color:var(--muted);margin:0;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
h2.sec-t{font-size:19px;color:var(--ink);letter-spacing:-.02em}
.grp{display:grid;gap:12px}
.row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px}
.date3{display:grid;gap:7px;font-size:13px;font-weight:500;color:var(--muted)}
.d3{display:grid;grid-template-columns:.8fr 1.3fr 1fr;gap:8px}
.sr{position:absolute!important;width:1px;height:1px;opacity:0;pointer-events:none}
.pick{position:relative}
.d3 .pick input{cursor:pointer;caret-color:transparent;padding-right:30px;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 18px) 52%,calc(100% - 13px) 52%;background-size:5px 5px;background-repeat:no-repeat}
.d3 .pick input:not([readonly]){cursor:text;caret-color:var(--accent);background-image:none;border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft);background-color:var(--panel)}
.plist{position:absolute;z-index:30;top:calc(100% + 6px);left:0;right:0;max-height:240px;overflow:auto;background:var(--panel);border-radius:14px;padding:6px;box-shadow:0 12px 40px rgba(0,0,0,.18),0 0 0 1px var(--line);display:grid;gap:2px;animation:pop .18s var(--ease)}
.plist button{font:inherit;font-size:14px;text-align:left;border:none;background:none;color:var(--ink);padding:8px 10px;border-radius:9px;cursor:pointer}
.plist button:hover,.plist button.on{background:var(--accent-soft);color:var(--accent)}
label.f{display:grid;gap:7px;font-size:13px;font-weight:500;color:var(--muted)}
input[type=text],input[type=number],select,textarea{font:inherit;font-size:15px;color:var(--ink);background:var(--chip);border:1.5px solid transparent;border-radius:12px;padding:11px 14px;width:100%;transition:border-color .2s var(--ease),box-shadow .2s var(--ease),background .2s}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft);background:var(--panel)}
select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 18px) 52%,calc(100% - 13px) 52%;background-size:5px 5px;background-repeat:no-repeat;padding-right:34px}
textarea{font-family:var(--mono);font-size:12.5px;min-height:170px;resize:vertical;line-height:1.5}

/* badge tiles */
.badges{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:10px}
.bc{position:relative;display:grid;justify-items:center;align-content:start;gap:6px;padding:14px 8px 12px;border-radius:18px;border:2px solid transparent;background:var(--chip);cursor:pointer;font:inherit;color:var(--ink);text-align:center;
  transition:transform .25s var(--ease),background .25s var(--ease),border-color .25s var(--ease),box-shadow .25s var(--ease);will-change:transform}
.bc:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(0,0,0,.08)}
.bc:active{transform:scale(.96)}
.bc[aria-pressed="true"]{border-color:var(--accent);background:var(--accent-soft)}
.bc[aria-pressed="true"]::after{content:"";position:absolute;top:8px;right:8px;width:16px;height:16px;border-radius:50%;background:var(--accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4.5 8.2l2.2 2.2 4.8-4.8' stroke='white' stroke-width='1.8' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/100% no-repeat;animation:pop .3s var(--ease)}
.tile{position:relative;display:grid}
.bc:disabled{opacity:.35;cursor:not-allowed;transform:none;box-shadow:none}
.edit{position:absolute;right:6px;bottom:6px;width:24px;height:24px;border-radius:50%;border:none;background:var(--panel);color:var(--muted);display:grid;place-items:center;cursor:pointer;opacity:0;box-shadow:0 1px 4px rgba(0,0,0,.15);transition:opacity .2s,transform .2s var(--ease),color .2s;padding:0}
.edit svg{width:12px;height:12px}
.tile:hover .edit,.edit:focus-visible{opacity:1}
.edit:hover{color:var(--accent);transform:scale(1.1)}
@media (hover:none){.edit{opacity:.85}}
.bc.neg[aria-pressed="true"]{border-color:var(--bad);background:color-mix(in srgb,var(--bad) 9%,transparent)}
.bc.neg[aria-pressed="true"]::after{background-color:var(--bad)}
@keyframes pop{from{transform:scale(.3)}to{transform:scale(1)}}
.ic{width:38px;height:38px;display:grid;place-items:center}
.ic img,.ic svg{width:100%;height:100%;object-fit:contain;display:block}
.ic img{filter:drop-shadow(0 1px 1px rgba(0,0,0,.12))}
.bc .ic{transition:transform .35s var(--ease)}
.bc:hover .ic{transform:scale(1.08)}
.bc b{font-size:12.5px;font-weight:600;line-height:1.2;letter-spacing:-.01em}
.bc small{font-size:11.5px;color:var(--muted);font-variant-numeric:tabular-nums}

/* segmented control */
.seg{display:flex;flex-wrap:wrap;gap:4px;background:var(--chip);border-radius:14px;padding:4px}
.seg label{flex:1 1 auto}
.seg input{position:absolute;opacity:0;pointer-events:none}
.seg span{display:block;text-align:center;padding:9px 12px;border-radius:10px;font-size:13.5px;font-weight:500;cursor:pointer;color:var(--muted);transition:background .25s var(--ease),color .25s,box-shadow .25s}
.seg span:hover{color:var(--ink)}
.seg input:checked+span{background:var(--seg-on);color:var(--ink);font-weight:600;box-shadow:0 1px 3px rgba(0,0,0,.1),0 3px 10px rgba(0,0,0,.06)}
.seg input:focus-visible+span{box-shadow:0 0 0 3px var(--accent)}
.hint,.note{font-size:13px;color:var(--muted);margin:0;line-height:1.45}

/* result */
.result{position:sticky;top:72px;gap:20px}
.result .sec-t{font-size:14px}
.price{font-weight:700;font-size:clamp(48px,6.5vw,72px);line-height:1;letter-spacing:-.04em;font-variant-numeric:tabular-nums;background:linear-gradient(90deg,var(--accent),var(--accent-2));-webkit-background-clip:text;background-clip:text;color:transparent;padding-bottom:4px}
.range{display:flex;justify-content:space-between;gap:8px;font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}
.bar{height:6px;border-radius:3px;background:linear-gradient(90deg,var(--chip),var(--accent-soft) 40%,var(--accent) 80%,var(--accent-2));position:relative}
.bar i{position:absolute;top:50%;width:16px;height:16px;margin:-8px 0 0 -8px;background:var(--panel);border-radius:50%;box-shadow:0 1px 4px rgba(0,0,0,.25),0 0 0 3px var(--accent);transition:left .5s var(--ease)}
.tl{font-size:15px;color:var(--muted);font-variant-numeric:tabular-nums;font-weight:500}
table{width:100%;border-collapse:collapse;font-size:14px}
td,th{padding:9px 0;border-bottom:1px solid var(--line);text-align:left;font-weight:400;vertical-align:middle}
th{font-size:12px;color:var(--muted);font-weight:500}
tbody tr,table tr{transition:background .15s}
.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;padding-left:14px}
td.pos{color:var(--good);font-weight:500} td.neg{color:var(--bad);font-weight:500}
tr.tot td{border-bottom:none;font-weight:700;padding-top:14px;font-size:16px}
td.dim{color:var(--muted)}
.comps{display:grid;gap:6px}
.comps div{display:flex;justify-content:space-between;gap:8px;font-size:13px;background:var(--chip);border-radius:12px;padding:10px 14px;font-variant-numeric:tabular-nums;transition:transform .2s var(--ease)}
.comps div:hover{transform:translateX(3px)}
.btns{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
button.b{font:inherit;font-size:14px;font-weight:500;border-radius:980px;padding:10px 20px;cursor:pointer;border:none;background:var(--accent-soft);color:var(--accent);transition:transform .2s var(--ease),background .2s,filter .2s}
button.b:hover{filter:brightness(1.08)}
button.b:active{transform:scale(.96)}
button.pri{background:var(--accent);color:#fff}
.scroll{overflow-x:auto}
.x{background:none;border:none;color:var(--muted);cursor:pointer;font-size:14px;padding:4px 8px;border-radius:8px}
.x:hover{background:var(--chip);color:var(--bad)}
.pill{display:inline-block;font-size:11.5px;font-weight:500;padding:3px 10px;border-radius:980px;background:var(--chip);color:var(--muted);letter-spacing:0;text-transform:none;vertical-align:1px}
.sources{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.src{border-radius:20px;padding:16px;display:grid;gap:10px;background:var(--chip)}
.src textarea,.src input{background:var(--panel)}
.src header{display:flex;gap:8px;align-items:center}
.src header input{font-weight:600}
.chkl{display:inline-flex;gap:7px;align-items:center;font-size:13px;color:var(--ink);white-space:nowrap;background:var(--chip);padding:7px 14px 7px 10px;border-radius:980px;cursor:pointer}
.chkl input{accent-color:var(--accent);margin:0}
.pt td,.pt th{padding:8px 12px 8px 0}
.pt input{width:92px;padding:6px 10px;font-size:13px;text-align:right;border-radius:9px}
.pt .ic{width:26px;height:26px;cursor:pointer;transition:transform .2s var(--ease)}
.pt .ic:hover{transform:scale(1.15)}
.pt tr.cat td{font-weight:600;font-size:13px;color:var(--muted);padding-top:22px}
.avg{font-weight:600;color:var(--accent)}
.mt td{padding:7px 14px 7px 0}
.mt input{width:84px;padding:6px 10px;font-size:13px;border-radius:9px}

/* entrance */
@media (prefers-reduced-motion:no-preference){
  .hero>*{animation:rise .8s var(--ease) both}
  .hero>*:nth-child(2){animation-delay:.06s}.hero>*:nth-child(3){animation-delay:.12s}.hero>*:nth-child(4){animation-delay:.18s}
  .grid>*{animation:rise .8s var(--ease) .15s both}
  @keyframes rise{from{transform:translateY(14px);opacity:.4}to{transform:none;opacity:1}}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
