:root{
  --ground:#E8EAE6; --surface:#F6F7F4; --surface2:#FFFFFF; --ink:#1A1D1C; --muted:#66706B; --line:#CFD3CE; --line2:#E2E5E0;
  --accent:#1E3FB8; --accent-ink:#FFFFFF; --accent-soft:#DCE3F8;
  --ok:#2B7A3B; --ok-soft:#DCEFDF; --warn:#B86E00; --warn-soft:#FBEBD0; --crit:#B3261E; --crit-soft:#F9DAD7;
  --shadow:0 1px 2px rgba(20,24,22,.06),0 8px 24px rgba(20,24,22,.08);
  --r:10px; --rs:6px;
  --display:"Archivo",system-ui,-apple-system,"Segoe UI",sans-serif;
  --body:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --ground:#141615; --surface:#1D201F; --surface2:#262A28; --ink:#E6E8E3; --muted:#8F978F; --line:#333836; --line2:#2B2F2D;
    --accent:#8AA2FF; --accent-ink:#0E1633; --accent-soft:#26305A;
    --ok:#6CBF7A; --ok-soft:#1E3A25; --warn:#E0A040; --warn-soft:#3F2E12; --crit:#EF7A72; --crit-soft:#48201D;
    --shadow:0 1px 2px rgba(0,0,0,.4),0 8px 24px rgba(0,0,0,.35);
    color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --ground:#141615; --surface:#1D201F; --surface2:#262A28; --ink:#E6E8E3; --muted:#8F978F; --line:#333836; --line2:#2B2F2D;
  --accent:#8AA2FF; --accent-ink:#0E1633; --accent-soft:#26305A;
  --ok:#6CBF7A; --ok-soft:#1E3A25; --warn:#E0A040; --warn-soft:#3F2E12; --crit:#EF7A72; --crit-soft:#48201D;
  --shadow:0 1px 2px rgba(0,0,0,.4),0 8px 24px rgba(0,0,0,.35);
  color-scheme:dark;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--ground);color:var(--ink);font:14px/1.45 var(--body);-webkit-font-smoothing:antialiased;min-height:100vh}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
h1,h2,h3{font-family:var(--display);margin:0;text-wrap:balance;letter-spacing:-.01em}
.num{font-family:var(--display);font-variant-numeric:tabular-nums}
.code{font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.01em;background:var(--accent-soft);color:var(--accent);padding:2px 6px;border-radius:4px;white-space:nowrap}
.lbl{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600}
.muted{color:var(--muted)}
a{color:var(--accent)}

/* shell */
.top{position:sticky;top:0;z-index:20;background:var(--surface);border-bottom:1px solid var(--line)}
.top-in{max-width:1180px;margin:0 auto;padding:10px 16px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.brand{display:flex;align-items:baseline;gap:10px;min-width:0;flex-wrap:wrap}
.brand h1{font-size:17px;font-weight:700}
.brand .sub{font-size:12px;color:var(--muted);white-space:nowrap}
.countdown{font-family:var(--display);font-size:12px;color:var(--muted);padding:4px 10px;border:1px solid var(--line);border-radius:999px;white-space:nowrap}
.countdown b{color:var(--ink);font-weight:700;font-variant-numeric:tabular-nums}
.tabs{display:flex;gap:2px;margin-left:auto}
.tab{border:0;background:transparent;padding:8px 12px;border-radius:var(--rs);color:var(--muted);font-weight:500}
.tab[aria-selected="true"]{background:var(--ground);color:var(--ink);font-weight:600}
.me{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}
.me select{border:1px solid var(--line);background:var(--surface2);border-radius:var(--rs);padding:4px 8px;font-weight:600;color:var(--ink)}
.status{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:6px}
.dot{width:8px;height:8px;border-radius:50%;background:var(--warn)}
.dot.on{background:var(--ok)}
.dot.off{background:var(--crit)}
.wrap{max-width:1180px;margin:0 auto;padding:16px 16px 96px}
.banner{background:var(--warn-soft);color:var(--ink);border:1px solid var(--warn);border-radius:var(--r);padding:10px 14px;margin-bottom:14px;font-size:13px}
.banner.crit{background:var(--crit-soft);border-color:var(--crit)}

/* bottom tabs mobile */
.bottom{display:none}
@media (max-width:760px){
  .tabs{display:none}
  .bottom{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--surface);border-top:1px solid var(--line);padding:6px 6px calc(6px + env(safe-area-inset-bottom))}
  .bottom .tab{flex:1;font-size:12px;padding:8px 4px;display:flex;flex-direction:column;align-items:center;gap:2px}
  .bottom .tab .n{font-family:var(--display);font-size:16px;font-weight:700;color:var(--ink)}
  .countdown{display:none}
}

/* layout */
.grid2{display:grid;grid-template-columns:minmax(0,2fr) minmax(280px,1fr);gap:16px;align-items:start}
@media (max-width:900px){.grid2{grid-template-columns:1fr}}
.panel{background:var(--surface);border:1px solid var(--line2);border-radius:var(--r)}
.panel-h{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line2)}
.panel-h h2{font-size:14px;font-weight:600}
.panel-b{padding:12px 14px}

/* KPI */
.kpis{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.kpi{background:var(--surface2);border:1px solid var(--line2);border-radius:var(--rs);padding:10px 12px;display:flex;flex-direction:column;gap:2px;cursor:pointer;text-align:left;position:relative}
.kpi .v{font-family:var(--display);font-size:26px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}
.kpi .l{font-size:12px;color:var(--muted)}
.kpi.crit .v{color:var(--crit)} .kpi.warn .v{color:var(--warn)} .kpi.ok .v{color:var(--ok)}
.kpi:hover{border-color:var(--line)}

/* chips */
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{border:1px solid var(--line);background:var(--surface2);border-radius:999px;padding:4px 10px;font-size:12px;color:var(--muted);font-weight:500}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--ground);border-color:var(--ink)}
.pill{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:600;white-space:nowrap}
.pill.s0{background:var(--warn-soft);color:var(--warn)}
.pill.s1,.pill.s2,.pill.s3{background:var(--accent-soft);color:var(--accent)}
.pill.s4,.pill.s5{background:var(--ok-soft);color:var(--ok)}
.pill.s6{background:var(--line2);color:var(--muted)}
.pill.sX{background:var(--crit-soft);color:var(--crit)}
.pill.n{background:var(--surface2);border:1px solid var(--line);color:var(--muted)}

/* feed */
.feed{display:flex;flex-direction:column;gap:8px}
.card{background:var(--surface2);border:1px solid var(--line2);border-radius:var(--r);padding:12px 14px 12px 16px;position:relative;overflow:hidden}
.card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--line)}
.card.email::before{background:var(--accent)}
.card.hovor::before,.card.poznamka::before{background:var(--ok)}
.card.navrh::before{background:var(--warn)}
.card.kontrola::before{background:var(--crit)}
.card.system::before{background:var(--muted)}
.card.done{opacity:.62}
.card-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.card-h .who{font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.card-h .who button{border:0;background:none;padding:0;font-weight:600;color:var(--ink);text-align:left}
.card-h .who button:hover{color:var(--accent)}
.card-h time{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.card .t{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.card .body{white-space:pre-wrap;word-break:break-word;max-width:72ch}
.card .sub{font-size:12px;color:var(--muted);margin-top:4px}
.card .ex{margin-top:8px;display:flex;flex-wrap:wrap;gap:6px}
.card .ex span{background:var(--ground);border-radius:4px;padding:2px 8px;font-size:12px}
.card .ex span b{font-weight:600}
.card .prop{margin-top:8px;padding:10px 12px;background:var(--ground);border-radius:var(--rs);border-left:3px solid var(--warn)}
.card .prop .lbl{margin-bottom:4px}
.card .acts{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}
.btn{border:1px solid var(--line);background:var(--surface2);border-radius:var(--rs);padding:6px 12px;font-weight:600;font-size:13px;color:var(--ink);display:inline-flex;align-items:center;gap:6px}
.btn:hover{border-color:var(--ink)}
.btn.pri{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.btn.pri:hover{filter:brightness(1.08)}
.btn.ok{background:var(--ok);border-color:var(--ok);color:#fff}
.btn.ghost{border-color:transparent;background:transparent;color:var(--muted)}
.btn.ghost:hover{color:var(--ink);border-color:var(--line)}
.btn.sm{padding:4px 9px;font-size:12px}
.btn:disabled{opacity:.5;cursor:default}
.empty{padding:28px 14px;text-align:center;color:var(--muted)}

/* exhibitors */
.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:10px}
.search{flex:1;min-width:200px;border:1px solid var(--line);background:var(--surface2);border-radius:var(--rs);padding:8px 10px}
.list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:8px}
.ex-card{background:var(--surface2);border:1px solid var(--line2);border-radius:var(--r);padding:10px 12px;text-align:left;display:flex;flex-direction:column;gap:6px;cursor:pointer}
.ex-card:hover{border-color:var(--accent)}
.ex-card .row{display:flex;align-items:center;gap:8px;min-width:0}
.ex-card .name{font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ex-card .meta{display:flex;gap:6px;flex-wrap:wrap;font-size:12px;color:var(--muted)}
.ex-card .flags{display:flex;gap:4px;flex-wrap:wrap}
.flag{font-size:11px;padding:1px 6px;border-radius:4px;background:var(--crit-soft);color:var(--crit);font-weight:600}
.flag.w{background:var(--warn-soft);color:var(--warn)}
.flag.o{background:var(--ok-soft);color:var(--ok)}

/* drawer */
.scrim{position:fixed;inset:0;background:rgba(10,12,11,.45);z-index:40;display:none}
.scrim.open{display:block}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(560px,100%);background:var(--surface);z-index:50;transform:translateX(100%);transition:transform .22s ease;display:flex;flex-direction:column;box-shadow:var(--shadow)}
.drawer.open{transform:none}
@media (prefers-reduced-motion:reduce){.drawer{transition:none}}
.drawer-h{padding:14px 16px;border-bottom:1px solid var(--line2);display:flex;align-items:flex-start;gap:10px}
.drawer-h h2{font-size:17px;font-weight:700;flex:1;min-width:0}
.drawer-b{overflow:auto;padding:0 16px 24px;flex:1}
.sec{padding:14px 0;border-bottom:1px solid var(--line2)}
.sec h3{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:600;margin-bottom:10px;font-family:var(--body)}
.fields{display:grid;grid-template-columns:1fr 1fr;gap:8px 10px}
.fields .full{grid-column:1/-1}
.f{display:flex;flex-direction:column;gap:3px}
.f label{font-size:11px;color:var(--muted);font-weight:500}
.f input,.f select,.f textarea{border:1px solid var(--line);background:var(--surface2);border-radius:var(--rs);padding:7px 9px;width:100%;min-height:34px}
.f textarea{min-height:64px;resize:vertical}
.f input:focus,.f select:focus,.f textarea:focus{border-color:var(--accent);outline:none}
.f .ro{padding:7px 9px;background:var(--ground);border-radius:var(--rs);min-height:34px;display:flex;align-items:center;gap:6px}
.f .ro a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hist{display:flex;flex-direction:column;gap:6px}
.hist .card{padding:10px 12px 10px 14px}
.saved{font-size:11px;color:var(--ok);height:14px}

/* modal */
.modal{position:fixed;inset:0;z-index:60;display:none;align-items:center;justify-content:center;padding:16px}
.modal.open{display:flex}
.modal .box{background:var(--surface);border-radius:var(--r);width:min(640px,100%);max-height:92vh;overflow:auto;box-shadow:var(--shadow);border:1px solid var(--line2)}
.modal .box-h{padding:14px 16px;border-bottom:1px solid var(--line2);display:flex;align-items:center;gap:10px}
.modal .box-h h2{font-size:16px;flex:1}
.modal .box-b{padding:14px 16px}
.modal .box-f{padding:12px 16px;border-top:1px solid var(--line2);display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}
.draft{white-space:pre-wrap;background:var(--surface2);border:1px solid var(--line2);border-radius:var(--rs);padding:12px;min-height:120px;max-width:72ch;font-size:13.5px;line-height:1.5}
.fab{position:fixed;right:16px;bottom:72px;z-index:35;background:var(--accent);color:var(--accent-ink);border:0;border-radius:999px;padding:12px 18px;font-weight:700;font-family:var(--display);box-shadow:var(--shadow);display:inline-flex;align-items:center;gap:8px;font-size:14px}
@media (min-width:761px){.fab{bottom:24px}}
.fab:hover{filter:brightness(1.08)}

/* slots */
.slotbar{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.slot-wrap{overflow-x:auto}
table.slots{border-collapse:separate;border-spacing:0;width:100%;min-width:640px;background:var(--surface2);border:1px solid var(--line2);border-radius:var(--r);overflow:hidden}
table.slots th,table.slots td{padding:7px 8px;border-bottom:1px solid var(--line2);text-align:center;font-variant-numeric:tabular-nums}
table.slots th{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600;background:var(--surface);position:sticky;top:0}
table.slots th small{display:block;text-transform:none;letter-spacing:0;font-weight:500;color:var(--muted)}
table.slots td:first-child,table.slots th:first-child{text-align:left;font-family:var(--mono);font-size:12px;white-space:nowrap}
table.slots tr:last-child td{border-bottom:0}
td.cell{cursor:pointer;font-weight:600}
td.cell.z{color:var(--line);font-weight:400}
td.cell.pub{background:color-mix(in srgb,var(--crit) 12%,var(--surface2))}/* NG open to the public at this entrance and hour; full/over below still win */
td.cell.full{background:var(--warn-soft);color:var(--warn)}
td.cell.over{background:var(--crit-soft);color:var(--crit)}
td.cell:hover{outline:2px solid var(--accent);outline-offset:-2px}
tr.gap td{background:var(--ground);color:var(--muted);font-size:12px;text-align:left;padding:5px 8px;font-family:var(--body)}
.note{font-size:12px;color:var(--muted);margin-top:8px;max-width:80ch}

/* overview table */
table.ov{width:100%;border-collapse:collapse;background:var(--surface2);border:1px solid var(--line2);border-radius:var(--r);overflow:hidden}
table.ov th,table.ov td{padding:9px 12px;border-bottom:1px solid var(--line2);text-align:right;font-variant-numeric:tabular-nums}
table.ov th{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600;background:var(--surface)}
table.ov th:first-child,table.ov td:first-child{text-align:left}
table.ov tr:last-child td{border-bottom:0}
table.ov td.bad{color:var(--crit);font-weight:600}
table.ov td.good{color:var(--ok);font-weight:600}
.rules{columns:2;column-gap:24px;font-size:13px}
.rules li{break-inside:avoid;margin-bottom:6px}
@media (max-width:760px){.rules{columns:1}}
.toast{position:fixed;left:50%;bottom:120px;transform:translateX(-50%);background:var(--ink);color:var(--ground);padding:8px 14px;border-radius:999px;font-size:13px;z-index:70;opacity:0;transition:opacity .2s;pointer-events:none}
.toast.show{opacity:1}
/* layout / plans */
.planbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:10px}
.planvp{position:relative;overflow:hidden;background:var(--surface2);border:1px solid var(--line2);border-radius:var(--r);
  height:calc(100vh - 230px);min-height:340px;touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none}
.planvp.drag{cursor:grabbing}
.planstage{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}
.planstage img{display:block;width:100%;height:100%;-webkit-user-drag:none;user-select:none;pointer-events:none;background:#fff}
.mk{position:absolute;transform:translate(-50%,-50%) scale(var(--mks,1));transform-origin:50% 50%;
  display:flex;align-items:center;justify-content:center;border:0;background:none;padding:11px;cursor:pointer;line-height:1;--c:#6B7280}
.mk .d{width:17px;height:17px;border-radius:50%;background:transparent;border:3.5px solid var(--c);
  box-shadow:0 0 0 1.5px rgba(255,255,255,.95),inset 0 0 0 1.5px rgba(255,255,255,.95)}
.mk.s0{--c:#B86E00} .mk.s1,.mk.s2{--c:#1E3FB8} .mk.s3{--c:#0E7490}
.mk.s4,.mk.s5{--c:#2B7A3B} .mk.s6{--c:#6B7280} .mk.sX{--c:#B3261E}
.mk.hit .d{box-shadow:0 0 0 5px rgba(30,63,184,.4),0 0 0 1.5px rgba(255,255,255,.95)}
.mk.dim{opacity:.22}
.planctl{position:absolute;right:10px;bottom:10px;display:flex;flex-direction:column;gap:6px;z-index:3}
.planctl button{width:38px;height:38px;border-radius:9px;border:1px solid var(--line);background:var(--surface);
  color:var(--ink);font:600 16px/1 var(--display);box-shadow:var(--shadow)}
.planhint{position:absolute;left:10px;bottom:10px;z-index:3;background:var(--surface);border:1px solid var(--line2);
  border-radius:999px;padding:5px 12px;font-size:11px;color:var(--muted);box-shadow:var(--shadow)}
.leg{display:flex;gap:12px;flex-wrap:wrap;font-size:11px;color:var(--muted);margin-top:8px;align-items:center}
.leg i{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px;vertical-align:-1px}
.stack{display:flex;flex-direction:column;align-items:center;gap:1px}
.stack .sc{font:600 11px/1.25 var(--mono);white-space:nowrap}
.stack .mo{font-size:10px;color:var(--muted);font-weight:600}
@media (max-width:760px){.planvp{height:calc(100vh - 250px)}}

