/* ============ TOKENY
   Kiosk ma wlasny przelacznik trybu (normalny / kontrastowy),
   sterowany przyciskiem w aplikacji - nie podaza za motywem systemowym
   przegladarki, tak jak realne urzadzenie kioskowe. ============ */
:root{
  --bg:#e9eef2;
  --surface:#ffffff;
  --surface-alt:#dde7ec;
  --ink:#16233a;
  --ink-soft:#4c5c73;
  --border:#c3d0da;
  --primary:#0b5d67;
  --primary-dark:#073f47;
  --primary-soft:#dbeced;
  --accent:#dd8f21;
  --accent-dark:#a86813;
  --danger:#a4353a;
  --shadow-sm:0 1px 3px rgba(15,26,44,.08);
  --shadow-md:0 6px 20px rgba(15,26,44,.12);
  --radius-lg:18px;
  --radius-md:12px;
  --radius-sm:8px;
  --focus:#1d6fe0;
}
html.contrast{
  --bg:#000000;
  --surface:#000000;
  --surface-alt:#000000;
  --ink:#ffd400;
  --ink-soft:#ffd400;
  --border:#ffd400;
  --primary:#ffd400;
  --primary-dark:#ffd400;
  --primary-soft:#1a1600;
  --accent:#ffd400;
  --accent-dark:#ffd400;
  --danger:#ffd400;
  --shadow-sm:none;
  --shadow-md:none;
  --focus:#ffffff;
}

*,*::before,*::after{box-sizing:border-box;}
html,body{height:100%;}
body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:'Public Sans',system-ui,-apple-system,Segoe UI,sans-serif;
  min-height:100vh;
}
h1,h2,h3{font-family:'Public Sans',sans-serif;font-weight:800;text-wrap:balance;margin:0;}
p{margin:0;}
button{font-family:inherit;}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px;}
html.contrast :focus-visible{outline:3px solid #ffffff;}

[hidden]{display:none!important;}

/* ============ SHELL ============ */
.app{
  max-width:1180px;
  margin:0 auto;
  min-height:100vh;
  display:flex;
  flex-direction:column;
}
header.topbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  padding:1rem 1.5rem;
  background:var(--surface);
  border-bottom:2px solid var(--border);
  position:sticky;
  top:0;
  z-index:20;
  flex-wrap:wrap;
}
.brand{display:flex;align-items:center;gap:.75rem;min-width:0;}
.brand-mark{
  width:44px;height:44px;border-radius:var(--radius-sm);
  background:var(--primary);color:#fff;
  display:flex;align-items:center;justify-content:center;flex:none;
}
html.contrast .brand-mark{background:#000;color:var(--ink);border:2px solid var(--ink);}
.brand-mark svg{width:24px;height:24px;}
.brand-text h1{font-size:1.15rem;color:var(--ink);line-height:1.15;}
.brand-text p{font-size:.8rem;color:var(--ink-soft);margin-top:.15rem;}

.topbar-controls{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;}
.seg{display:flex;border:2px solid var(--border);border-radius:999px;overflow:hidden;}
.seg button{
  border:0;background:var(--surface);color:var(--ink-soft);
  padding:.4rem .7rem;font-size:.8rem;font-weight:700;cursor:pointer;
  border-left:1px solid var(--border);
}
.seg button:first-child{border-left:0;}
.seg button[aria-pressed="true"]{background:var(--primary);color:#fff;}
html.contrast .seg button[aria-pressed="true"]{background:var(--ink);color:#000;}

.icon-btn{
  display:flex;align-items:center;gap:.4rem;
  border:2px solid var(--border);background:var(--surface);color:var(--ink);
  border-radius:999px;padding:.5rem .9rem;font-size:.8rem;font-weight:700;cursor:pointer;
}
.icon-btn[aria-pressed="true"]{background:var(--primary);border-color:var(--primary);color:#fff;}
html.contrast .icon-btn[aria-pressed="true"]{background:var(--ink);color:#000;}
.icon-btn svg{width:18px;height:18px;}

main{flex:1;padding:1.5rem;}

.loading-msg{text-align:center;color:var(--ink-soft);font-size:1.1rem;padding:4rem 1rem;}

.btn{
  appearance:none;border:0;cursor:pointer;
  font-weight:700;border-radius:999px;
  font-size:1rem;padding:.85rem 1.5rem;
  display:inline-flex;align-items:center;gap:.5rem;justify-content:center;
}
.btn-primary{background:var(--primary);color:#fff;box-shadow:var(--shadow-sm);}
html.contrast .btn-primary{background:var(--ink);color:#000;}
.btn-ghost{background:transparent;color:var(--primary);border:2px solid var(--primary);}
html.contrast .btn-ghost{color:var(--ink);border-color:var(--ink);}
.btn-lg{padding:1.1rem 2rem;font-size:1.15rem;width:100%;}
.btn:disabled{opacity:.5;cursor:default;}

/* ============ EKRAN: START ============ */
.search-wrap{position:relative;max-width:760px;margin:0 auto 2rem;}
.search-box{
  display:flex;align-items:center;gap:.75rem;
  background:var(--surface);border:2px solid var(--border);
  border-radius:999px;padding:.4rem .4rem .4rem 1.25rem;
  box-shadow:var(--shadow-md);
}
.search-box svg{flex:none;width:26px;height:26px;color:var(--ink-soft);}
.search-box input{
  flex:1;border:0;outline:0;background:transparent;
  font-size:1.25rem;color:var(--ink);font-family:inherit;padding:.6rem 0;
  min-width:0;
}
.search-box input::placeholder{color:var(--ink-soft);opacity:.8;}

.suggestions{
  position:absolute;left:0;right:0;top:calc(100% + .5rem);
  background:var(--surface);border:2px solid var(--border);
  border-radius:var(--radius-md);box-shadow:var(--shadow-md);
  overflow:hidden;z-index:30;
}
.suggestion-item{
  display:flex;flex-direction:column;gap:.15rem;
  width:100%;text-align:left;border:0;background:transparent;cursor:pointer;
  padding:.85rem 1.25rem;border-bottom:1px solid var(--border);color:var(--ink);
}
.suggestion-item:last-child{border-bottom:0;}
.suggestion-item:hover,.suggestion-item:focus-visible{background:var(--primary-soft);}
.suggestion-item .s-name{font-weight:700;font-size:1.05rem;}
.suggestion-item .s-dept{font-size:.85rem;color:var(--ink-soft);}
.suggestion-empty{padding:1rem 1.25rem;color:var(--ink-soft);font-size:.95rem;}

.section-label{
  text-transform:uppercase;letter-spacing:.08em;font-size:.8rem;font-weight:700;
  color:var(--ink-soft);margin:0 0 1rem;text-align:center;
}

.cat-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));
  gap:1rem;max-width:1080px;margin:0 auto;
}
.cat-tile{
  display:flex;flex-direction:column;align-items:center;gap:.6rem;text-align:center;
  background:var(--surface);border:2px solid var(--border);border-radius:var(--radius-lg);
  padding:1.25rem 1rem;cursor:pointer;box-shadow:var(--shadow-sm);min-height:132px;
  justify-content:center;
}
.cat-tile:hover{border-color:var(--primary);}
html.contrast .cat-tile:hover{border-color:#fff;}
.cat-tile .cat-icon{
  width:48px;height:48px;border-radius:var(--radius-sm);background:var(--primary-soft);
  color:var(--primary);display:flex;align-items:center;justify-content:center;
}
html.contrast .cat-tile .cat-icon{background:#000;color:var(--ink);border:2px solid var(--ink);}
.cat-tile .cat-icon svg{width:26px;height:26px;}
.cat-tile span{font-weight:700;font-size:.95rem;line-height:1.25;}

/* ============ WSPÓLNE ============ */
.screen-head{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap;}
.back-btn{
  display:flex;align-items:center;gap:.4rem;border:2px solid var(--border);
  background:var(--surface);border-radius:999px;padding:.6rem 1.1rem;
  font-weight:700;color:var(--ink);cursor:pointer;font-size:.95rem;
}
.back-btn svg{width:18px;height:18px;}
.screen-head h2{font-size:1.5rem;flex:1;min-width:200px;}

.case-list{display:flex;flex-direction:column;gap:.75rem;max-width:760px;margin:0 auto;}
.case-row{
  display:flex;align-items:center;justify-content:space-between;gap:1rem;
  background:var(--surface);border:2px solid var(--border);border-radius:var(--radius-md);
  padding:1.1rem 1.4rem;cursor:pointer;text-align:left;width:100%;
}
.case-row:hover{border-color:var(--primary);}
html.contrast .case-row:hover{border-color:#fff;}
.case-row span.name{font-weight:700;font-size:1.05rem;}
.case-row svg{width:20px;height:20px;flex:none;color:var(--ink-soft);}

.detail-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:1.5rem;max-width:980px;margin:0 auto;align-items:start;}
@media (max-width:760px){.detail-grid{grid-template-columns:1fr;}}
.detail-cta{max-width:980px;margin:1.5rem auto 0;}
.card{
  background:var(--surface);border:2px solid var(--border);border-radius:var(--radius-lg);
  padding:1.5rem;box-shadow:var(--shadow-sm);
}
.card h3{font-size:1rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);margin-bottom:.9rem;}
.kv{display:flex;flex-direction:column;gap:.9rem;}
.kv-row{display:flex;gap:.9rem;align-items:flex-start;}
.kv-row svg{width:22px;height:22px;color:var(--primary);flex:none;margin-top:.1rem;}
html.contrast .kv-row svg{color:var(--ink);}
.kv-row .kv-label{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);}
.kv-row .kv-value{font-weight:700;font-size:1.05rem;}
.kv-row .kv-value small{display:block;font-weight:400;font-size:.85rem;color:var(--ink-soft);}
.doc-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.6rem;font-family:'Atkinson Hyperlegible',sans-serif;font-size:1rem;}
.doc-list li{display:flex;gap:.6rem;align-items:flex-start;}
.doc-list li svg{width:18px;height:18px;color:var(--primary);flex:none;margin-top:.2rem;}
html.contrast .doc-list li svg{color:var(--ink);}
.note{
  display:flex;gap:.7rem;background:var(--primary-soft);border:2px solid var(--primary);
  border-radius:var(--radius-md);padding:1rem 1.2rem;font-family:'Atkinson Hyperlegible',sans-serif;
  font-size:.95rem;margin-top:1.25rem;color:var(--ink);max-width:980px;margin-left:auto;margin-right:auto;
}
html.contrast .note{background:#000;}
.note svg{width:20px;height:20px;flex:none;color:var(--primary-dark);}
html.contrast .note svg{color:var(--ink);}
.lang-note{
  font-family:'Atkinson Hyperlegible',sans-serif;font-size:.88rem;color:var(--ink-soft);
  margin-top:.75rem;font-style:italic;
}

/* ============ NAWIGACJA ============ */
.nav-banner{
  background:var(--primary);color:#fff;border-radius:var(--radius-lg);
  padding:1.25rem 1.5rem;display:flex;align-items:center;gap:1rem;flex-wrap:wrap;
  margin-bottom:1.25rem;
}
html.contrast .nav-banner{background:#000;color:var(--ink);border:2px solid var(--ink);}
.nav-banner .pin{
  width:46px;height:46px;border-radius:50%;background:rgba(255,255,255,.18);
  display:flex;align-items:center;justify-content:center;flex:none;
}
html.contrast .nav-banner .pin{background:transparent;border:2px solid var(--ink);}
.nav-banner .pin svg{width:24px;height:24px;}
.nav-banner strong{font-size:1.2rem;display:block;}
.nav-banner span{opacity:.9;font-size:.95rem;}
html.contrast .nav-banner span{opacity:1;}

.floor-tabs{display:flex;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap;}
.floor-tabs button{
  border:2px solid var(--border);background:var(--surface);color:var(--ink);
  border-radius:999px;padding:.55rem 1.1rem;font-weight:700;cursor:pointer;font-size:.9rem;
}
.floor-tabs button[aria-pressed="true"]{background:var(--primary);border-color:var(--primary);color:#fff;}
html.contrast .floor-tabs button[aria-pressed="true"]{background:var(--ink);color:#000;}

.plan-wrap{
  background:var(--surface);border:2px solid var(--border);border-radius:var(--radius-lg);
  padding:1rem;box-shadow:var(--shadow-sm);overflow-x:auto;
}
.plan-wrap svg{width:100%;height:auto;display:block;min-width:640px;}
.plan-legend{display:flex;gap:1.5rem;flex-wrap:wrap;margin-top:1rem;font-size:.85rem;color:var(--ink-soft);}
.plan-legend .item{display:flex;align-items:center;gap:.4rem;}
.plan-legend .swatch{width:14px;height:14px;border-radius:4px;flex:none;}
.swatch-accent{background:var(--accent);}
.swatch-other{background:var(--surface-alt);border:2px solid var(--border);}
.swatch-entrance{background:var(--primary);}

footer.a11y-bar{
  display:flex;align-items:center;justify-content:center;gap:.75rem;
  padding:.75rem 1.5rem;border-top:2px solid var(--border);background:var(--surface);
  font-size:.8rem;color:var(--ink-soft);flex-wrap:wrap;
}
.fontstep{display:flex;border:2px solid var(--border);border-radius:999px;overflow:hidden;}
.fontstep button{border:0;background:var(--surface);color:var(--ink);width:34px;height:34px;font-weight:800;cursor:pointer;border-left:1px solid var(--border);}
.fontstep button:first-child{border-left:0;}
.fontstep button[aria-pressed="true"]{background:var(--primary);color:#fff;}
html.contrast .fontstep button[aria-pressed="true"]{background:var(--ink);color:#000;}
.admin-link{color:var(--ink-soft);text-decoration:underline;font-size:.78rem;margin-left:auto;}

.empty-state{
  max-width:520px;margin:2rem auto 0;text-align:center;display:flex;flex-direction:column;
  gap:1rem;align-items:center;color:var(--ink-soft);
}
.empty-state svg{width:56px;height:56px;color:var(--border);}
html.contrast .empty-state svg{color:var(--ink);}
