:root{--bg:#f6f7fb;--card:#fff;--text:#1d2330;--muted:#5b6474;--line:#e3e6ee;--accent:#2f6fed;--chip:#eef1f7;
 --c-bsides:#2f6fed;--c-hacker:#d6336c;--c-maker:#f08c00;--c-hardware:#7048e8;--c-camp:#2b8a3e;--c-industry:#868e96;--c-academic:#0b7285;--c-online:#12b886;
 --fc-page-bg-color:var(--card);--fc-neutral-bg-color:var(--chip);--fc-border-color:var(--line);--fc-button-bg-color:var(--accent);--fc-button-border-color:var(--accent);--fc-button-hover-bg-color:#255dd0;--fc-button-active-bg-color:#1f4fb3;--fc-today-bg-color:rgba(47,111,237,.08);--fc-list-event-hover-bg-color:var(--chip)}
@media (prefers-color-scheme:dark){:root{--bg:#0f1218;--card:#181c25;--text:#e6e9f0;--muted:#98a2b3;--line:#2a2f3b;--accent:#6ea0ff;--chip:#232838;--fc-today-bg-color:rgba(110,160,255,.12)}}
*{box-sizing:border-box}
html{color-scheme:light dark}
body{margin:0;font:15px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text)}
a{color:var(--accent)}
header.top{display:flex;flex-wrap:wrap;gap:16px;align-items:center;justify-content:space-between;padding:16px 22px;background:var(--card);border-bottom:1px solid var(--line)}
.brand{display:flex;gap:12px;align-items:center}.brand .logo{font-size:36px}.brand h1{margin:0;font-size:22px}.brand p{margin:2px 0 0;color:var(--muted);font-size:13px}
.home{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0}.home label{display:flex;gap:8px;align-items:center;color:var(--muted);font-size:13px}
input,select{font:inherit}
.home input{padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--text);min-width:210px}
button{font:inherit;padding:7px 12px;border-radius:8px;border:1px solid var(--line);background:var(--card);color:var(--text);cursor:pointer}
button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}button.ghost{background:transparent}
nav.views{display:flex;gap:6px;align-items:center;padding:10px 22px;border-bottom:1px solid var(--line);background:var(--card);flex-wrap:wrap}
nav.views a{padding:6px 14px;border-radius:999px;text-decoration:none;color:var(--text);background:var(--chip)}nav.views a.active{background:var(--accent);color:#fff}
nav.views .meta{margin-left:auto;color:var(--muted);font-size:13px}
.filters{display:flex;flex-wrap:wrap;gap:8px;padding:12px 22px;align-items:center}
.filters input[type=search],.filters select{padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--text)}
.filters input[type=search]{min-width:240px;flex:1}
.chk{display:flex;gap:6px;align-items:center;color:var(--muted);font-size:14px}
main{padding:0 22px 40px}
.view[hidden]{display:none}
.list{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:12px}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px;cursor:pointer;display:flex;flex-direction:column;gap:5px}
.card:hover{border-color:var(--accent)}
.card .when{font-weight:600}.card .name{font-size:17px;font-weight:650;margin:0}.card .where{color:var(--muted);font-size:14px}
.badge{display:inline-block;padding:1px 8px;border-radius:999px;font-size:12px;font-weight:600;background:var(--chip);color:var(--muted);vertical-align:middle;white-space:nowrap}
.badge.type{color:#fff}
.badge.estimated{background:#fff3bf;color:#7a5a00}.badge.tentative{background:#ffe8cc;color:#8a4b00}.badge.announced{background:#d3f9d8;color:#1b5e20}.badge.confirmed{background:#b2f2bb;color:#0b4419}.badge.postponed,.badge.cancelled{background:#ffe3e3;color:#8a1010}
@media (prefers-color-scheme:dark){.badge.estimated{background:#4a3d0a;color:#ffe08a}.badge.tentative{background:#4a2f0a;color:#ffc078}.badge.announced,.badge.confirmed{background:#123a1a;color:#8ce99a}.badge.postponed,.badge.cancelled{background:#4a1212;color:#ffa8a8}}
.links{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.links a{font-size:13px;text-decoration:none;background:var(--chip);padding:3px 8px;border-radius:6px;color:var(--text)}
.empty{color:var(--muted);padding:40px;text-align:center}
#leaflet{height:calc(100vh - 240px);min-height:420px;border-radius:12px;border:1px solid var(--line);background:var(--chip)}
#calendar{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px}
.fc .fc-daygrid-event{cursor:pointer}.fc-event.estimated,.fc-event.tentative{opacity:.6}
.drawer{position:fixed;top:0;right:0;height:100%;width:min(580px,100%);background:var(--card);border-left:1px solid var(--line);box-shadow:-8px 0 30px rgba(0,0,0,.18);overflow:auto;padding:18px 20px 40px;z-index:1000}
.drawer[hidden]{display:none}.drawer h2{margin:0 40px 4px 0;font-size:22px}.drawer .close{position:absolute;top:10px;right:12px}
.drawer h3{font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:18px 0 6px}
.drawer table{width:100%;border-collapse:collapse;font-size:14px}.drawer td{padding:6px 6px;border-top:1px solid var(--line);vertical-align:top}.drawer td:first-child{white-space:nowrap;width:60px}
.drawer p{margin:6px 0}
.muted{color:var(--muted)}
.facts{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:14px;margin-top:8px}.facts b{color:var(--muted);font-weight:600}
.backdrop{position:fixed;inset:0;background:rgba(0,0,0,.28);z-index:999}.backdrop[hidden]{display:none}
footer{padding:18px 22px 30px;color:var(--muted);font-size:13px;border-top:1px solid var(--line);line-height:1.6}
.leaflet-popup-content{font:14px/1.4 system-ui,sans-serif}
@media (prefers-color-scheme:dark){.leaflet-tile-pane{filter:invert(1) hue-rotate(180deg) brightness(.85) contrast(.9) saturate(.6)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:var(--card);color:var(--text)}.leaflet-control-attribution{background:rgba(24,28,37,.8);color:var(--muted)}}
@media (max-width:640px){header.top{padding:12px 14px}nav.views,.filters,main{padding-left:12px;padding-right:12px}.filters input[type=search]{min-width:0;width:100%}.home input{min-width:150px}}
