:root{--paper:#F7F3EA;--card:#FFFDF8;--ink:#1F1B16;--muted:#6B655A;--rule:#D8D0C0;--soft:#EFE9DC;--clay:#A14A24;--pine:#2F5D47;--warn:#B8860B;
 --display:"Fraunces",Georgia,serif;--serif:"Newsreader",Georgia,serif;--sans:"Public Sans",system-ui,sans-serif}
@media (prefers-color-scheme:dark){:root{--paper:#171512;--card:#1F1C18;--ink:#ECE5D6;--muted:#A59D8F;--rule:#35302A;--soft:#221F1A;--clay:#E08A5A;--pine:#7FB89A;--warn:#E0B84A}}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.5 var(--sans)}
a{color:var(--clay)}.muted{color:var(--muted)}
header.top{display:flex;align-items:center;gap:1.5rem;padding:.7rem 1.2rem;border-bottom:3px double var(--ink);position:sticky;top:0;background:var(--paper);z-index:5}
.brand{display:flex;align-items:center;gap:.5rem;color:var(--ink);text-decoration:none;font:800 1.25rem var(--display)}.brand em{font-style:normal;color:var(--clay)}
#crumbs{flex:1;font-weight:600}#crumbs a{color:var(--ink);text-decoration:none}#crumbs a:hover{text-decoration:underline}
.right{display:flex;gap:.6rem;align-items:center;font-size:.8rem}
main{max-width:76rem;margin:0 auto;padding:1.4rem 1.2rem 4rem}
h1{font:700 2rem/1.1 var(--serif);margin:0 0 .3rem}h2{font:700 .78rem/1 var(--sans);letter-spacing:.1em;text-transform:uppercase;border-top:3px solid var(--ink);padding-top:.6rem;margin:2rem 0 .9rem}
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.8rem;margin:1rem 0}
.tile{background:var(--card);border:1px solid var(--rule);border-radius:4px;padding:.7rem .9rem}.tile b{display:block;font:700 1.7rem/1.1 var(--serif)}.tile span{font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.tile.warn b{color:var(--warn)}.tile.bad b{color:var(--clay)}
.towns{display:grid;grid-template-columns:repeat(auto-fill,minmax(20rem,1fr));gap:1rem}
.town{display:block;background:var(--card);border:1px solid var(--rule);border-radius:4px;padding:1rem;color:var(--ink);text-decoration:none}.town strong{font:800 1.4rem var(--display)}.town .meta{font-size:.82rem;color:var(--muted)}
.actions{display:flex;flex-wrap:wrap;gap:.5rem;margin:.6rem 0 1rem}
button{font:600 .82rem var(--sans);padding:.5rem .85rem;border-radius:999px;border:1px solid var(--rule);background:var(--card);color:var(--ink);cursor:pointer}
button.primary{background:var(--clay);border-color:var(--clay);color:#fff}button.ghost{background:transparent}button:disabled{opacity:.5;cursor:default}
table{width:100%;border-collapse:collapse;font-size:.86rem}th{text-align:left;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--rule);padding:.4rem .5rem}td{padding:.5rem;border-bottom:1px solid var(--rule);vertical-align:top}
.chip{display:inline-block;font-size:.68rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:.15rem .5rem;border-radius:999px;background:var(--soft);color:var(--muted)}
.chip.published{background:var(--pine);color:#fff}.chip.review{background:var(--clay);color:#fff}.chip.pending{background:var(--warn);color:#fff}
.story h3{font:700 1.02rem/1.3 var(--serif);margin:0 0 .15rem}.story h3 a{color:var(--ink);text-decoration:none}.story .sub{font-size:.8rem;color:var(--muted)}
details{margin:.3rem 0}summary{cursor:pointer;color:var(--clay);font-size:.8rem}
.month{margin:1rem 0 .3rem;font:700 .95rem var(--serif)}
textarea{width:100%;min-height:9rem;font:.8rem/1.4 ui-monospace,Menlo,monospace;background:var(--card);color:var(--ink);border:1px solid var(--rule);border-radius:4px;padding:.6rem}
.box{background:var(--soft);border-radius:4px;padding:.8rem 1rem;margin:.5rem 0}
#toast{position:fixed;bottom:1.2rem;left:50%;transform:translateX(-50%);background:var(--ink);color:var(--paper);padding:.6rem 1rem;border-radius:999px;font-size:.85rem;z-index:9}
.cal{display:grid;grid-template-columns:repeat(auto-fill,minmax(2.2rem,1fr));gap:4px;margin:.5rem 0 1rem}
.cal .d{aspect-ratio:1;border:1px solid var(--rule);border-radius:3px;font-size:.62rem;padding:2px;color:var(--muted);position:relative}
.cal .d.has{background:var(--pine);color:#fff;border-color:var(--pine)}.cal .d.held{background:var(--clay);color:#fff;border-color:var(--clay)}.cal .d.hop{background:var(--warn);color:#fff;border-color:var(--warn)}
.cal .d a{position:absolute;inset:0;color:inherit;text-decoration:none}
.legend{font-size:.75rem;color:var(--muted)}.legend i{display:inline-block;width:.7rem;height:.7rem;border-radius:2px;vertical-align:middle;margin:0 .25rem 0 .6rem}
@media (max-width:700px){header.top{flex-wrap:wrap;gap:.6rem}table{font-size:.8rem}}
