:root{--bg:#f7f7f5;--fg:#1c1c1c;--muted:#6b7280;--line:#e3e3df;--card:#fff;--accent:#1f5fbf;--good:#1a7f37;--warn:#b58100;--bad:#b91c1c;--mark:#fff3bf}
@media (prefers-color-scheme:dark){:root{--bg:#141517;--fg:#e8e8e6;--muted:#9a9a9a;--line:#2c2d30;--card:#1d1e21;--accent:#7aa7f0;--good:#4cc16e;--warn:#e0b341;--bad:#f07171;--mark:#4a3f12}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
main.container{max-width:1080px;margin:0 auto;padding:12px 16px 40px}
a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}
h3{margin:.6rem 0 .5rem;font-size:1.3rem}h5{margin:1.1rem 0 .4rem;font-size:.95rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
nav{display:flex;flex-wrap:wrap;gap:.2rem 1rem;padding:.5rem 0 .7rem;border-bottom:1px solid var(--line);margin-bottom:.8rem}
nav a{color:var(--fg)}nav a strong{color:var(--accent)}
.subnav{display:flex;flex-wrap:wrap;gap:.2rem .9rem;margin:.2rem 0 .8rem}.subnav a{padding:.15rem .5rem;border:1px solid var(--line);border-radius:999px;background:var(--card);color:var(--fg);font-size:.85rem}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:.65rem .9rem;margin-bottom:.6rem}
.row{display:flex;gap:.9rem;align-items:baseline;flex-wrap:wrap}
.score{font-weight:700;font-size:1.45rem;min-width:2.6rem;display:inline-block;letter-spacing:-.02em}
.s80{color:var(--good)}.s60{color:var(--warn)}.s0{color:var(--muted)}
.tags{margin:.25rem 0}.tags small{display:inline-block;background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:.05rem .45rem;margin:.1rem .3rem .1rem 0;font-size:.78rem;white-space:nowrap}
.muted{color:var(--muted);font-size:.85rem}
mark{background:var(--mark);color:var(--fg);padding:.15rem .35rem;border-radius:4px}
.flash{background:#e6f4ea;color:#14532d;border-radius:6px;padding:.45rem .8rem;margin:.5rem 0}
table{width:100%;border-collapse:collapse;font-size:.88rem;margin:.3rem 0 .8rem;background:var(--card);border:1px solid var(--line);border-radius:8px;overflow:hidden}
th,td{padding:.4rem .55rem;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}th{font-weight:600;color:var(--muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.03em}
tr:last-child td{border-bottom:0}
input,select,textarea{width:100%;font:inherit;color:var(--fg);background:var(--card);border:1px solid var(--line);border-radius:7px;padding:.45rem .6rem}
input[type=checkbox]{width:auto;margin-right:.4rem}
label{display:block;font-size:.85rem;color:var(--muted);margin-bottom:.5rem}label>input,label>select,label>textarea{margin-top:.2rem;color:var(--fg)}
button,[role=button]{display:inline-block;font:inherit;font-size:.9rem;padding:.45rem .9rem;border-radius:7px;border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer;text-decoration:none;margin:.15rem .3rem .15rem 0}
button.secondary,[role=button].secondary{background:var(--muted);border-color:var(--muted)}
button.outline,[role=button].outline{background:transparent;color:var(--accent)}button.outline.secondary,[role=button].outline.secondary{color:var(--muted)}
button.contrast,[role=button].contrast{background:transparent;color:var(--bad);border-color:var(--bad)}
form.row select,form.row input{width:auto;min-width:9rem}form.row input[type=search]{min-width:14rem}
.grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:.4rem .8rem}
form.compact{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:.8rem 1rem;margin-bottom:1rem}
.cal td{height:3.4rem;font-size:.75rem;width:14.28%;padding:.25rem .3rem}.cal .best{display:block;border-radius:4px;padding:.1rem .25rem;background:var(--bg);margin-top:.15rem;line-height:1.25}
details summary{cursor:pointer}pre{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:.6rem;overflow:auto;font-size:.8rem}
#map{height:70vh;border-radius:10px;border:1px solid var(--line)}
@media (max-width:640px){body{font-size:14px}.score{font-size:1.25rem}main.container{padding:8px 12px 30px}}
/* overview */
.strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.5rem;margin:.2rem 0 .6rem}.strip>div{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:.5rem .7rem;font-size:.85rem;line-height:1.35}.strip b{font-size:1.15rem}
.sec{margin-bottom:.9rem}.sec h5{display:flex;justify-content:space-between;align-items:baseline;margin:.6rem 0 .3rem}.sec h5 a{font-weight:400;text-transform:none;letter-spacing:0}
.two{display:block}
table.dense{font-size:.82rem;margin:.2rem 0 .5rem;table-layout:auto}table.dense th,table.dense td{padding:.28rem .45rem;line-height:1.3}
tr.deal{cursor:pointer}tr.deal:hover td{background:var(--bg)}td.sc{font-weight:700;font-size:1rem;width:2.6rem}
.nowrap{white-space:nowrap}.why{min-width:14rem;white-space:normal}
.pill{font-size:.68rem;border:1px solid var(--line);border-radius:999px;padding:0 .35rem;color:var(--muted)}
.triprow{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding:.25rem 0;border-bottom:1px dashed var(--line);font-size:.88rem}
.backdrop{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:90}
dialog[open]{position:fixed;top:4vh;left:50%;transform:translateX(-50%);margin:0;z-index:100;border:0;padding:0;background:transparent;max-width:min(94vw,820px);width:100%}
dialog article{background:var(--card);color:var(--fg);border-radius:12px;padding:1rem 1.2rem;max-height:88vh;overflow:auto;box-shadow:0 12px 40px rgba(0,0,0,.3)}
dialog header{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.4rem}dialog .score{font-size:1.3rem}
.sec{overflow-x:auto}
@media(max-width:640px){table.dense .why,table.dense th:nth-child(8),table.dense td:nth-child(9),table.dense th:nth-child(9){display:none}}
