/* OSA Voyage — shared visual system, no database changes. */
:root {
 --background:#f0f6f5; --surface:#ffffff; --foreground:#193b39; --muted:#647c79;
 --primary:#087e80; --primary-strong:#056466; --primary-soft:#dff3f0; --on-primary:#ffffff;
 --accent:#ffd34d; --accent-soft:#fff4c9; --on-accent:#253833;
 --border:#dbe8e5; --danger:#bc334b; --danger-soft:#fff0f2; --success:#238359;
 --ink:#183e3b; --wing:#ccf6f0; --hair-dark:#2f3338; --hair-medium:#78533e; --hair-light:#e0ac56;
 --avatar-yellow:#ffcf45; --avatar-stripe:#293f40; --avatar-paper:#ffffff;
 --outfit-teal:#078886; --outfit-red:#dc6077; --outfit-blue:#3979b5; --outfit-green:#629653;
 --outfit-purple:#9c64a6; --outfit-yellow:#e9a834; --outfit-pink:#e980ae; --outfit-dark:#394851;
 --shadow:0 12px 36px #193b3910; --shadow-soft:0 3px 12px #193b390b;
 --overlay:#122c3a80; --glass:#ffffff22; --watermark-opacity:.045;
}
* { box-sizing:border-box; -webkit-tap-highlight-color:transparent; }
html { margin:0; padding:0; width:100%; min-width:0; }
body { margin:0; padding:0; min-width:0; color:var(--foreground); background:var(--background); font-family:"Trebuchet MS","Segoe UI",Arial,sans-serif; letter-spacing:0; -webkit-font-smoothing:antialiased; }
button,input,textarea,select { font:inherit; max-width:100%; }
button,a,input,textarea { touch-action:manipulation; }
button,a { -webkit-tap-highlight-color:transparent; }
button { cursor:pointer; }
button:disabled { opacity:.6; cursor:wait; }
button:focus-visible,a:focus-visible { outline:3px solid var(--accent); outline-offset:3px; }
input:focus,textarea:focus { outline:2px solid var(--primary); outline-offset:2px; }
a { color:var(--primary-strong); }
/* The window never scrolls in chat; only the conversation does. */
html:has(body.osa-chat) { height:100%; }
body.osa-chat { height:100%; overflow:hidden; }
.osa-chat #app { position:relative; width:100%; height:100vh; height:100dvh; display:flex; flex-direction:column; overflow:hidden; min-width:0; padding-top:env(safe-area-inset-top); background:var(--surface); }
#app > * { min-width:0; flex-shrink:0; }
#app > .widok { flex:1 1 0; min-height:0; overflow-y:auto; overflow-x:hidden; overscroll-behavior-y:contain; -webkit-overflow-scrolling:touch; }
#topbar { position:relative; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 18px; background:var(--primary); color:var(--on-primary); border-bottom:3px solid var(--accent); overflow:visible; }
#topbar .topbar-left { display:flex; align-items:center; gap:10px; min-width:0; flex:1; }
#topbar .logo-osa { width:50px; height:50px; object-fit:contain; flex:none; }
.osa-brand-copy { display:flex; flex-direction:column; min-width:0; gap:3px; }
.osa-brand-name { font-size:24px; line-height:1; font-weight:800; }
#topbar .user-nazwa { font-size:12px; white-space:normal; overflow-wrap:anywhere; opacity:.9; line-height:1.3; }
.osa-travel-mark { color:var(--accent); font-size:24px; flex:none; }
#btnMenu { order:-1; flex:none; border:1px solid var(--glass); background:var(--glass); color:var(--on-primary); border-radius:8px; width:40px; height:44px; font-size:26px; line-height:1; }
#menuDropdown { position:fixed; top:calc(86px + env(safe-area-inset-top)); left:12px; width:min(300px,calc(100% - 24px)); max-height:calc(100dvh - 110px); overflow-y:auto; border:1px solid var(--border); background:var(--surface); box-shadow:var(--shadow); border-radius:8px; z-index:1001; }
#menuDropdown button,#menuDropdown a { color:var(--foreground); padding:14px 16px; }
#menuDropdown .danger { color:var(--danger); }
#menuDropdown .separator { border-top-color:var(--border); }
#menuDropdown button:hover,#menuDropdown a:hover { background:var(--primary-soft); }
#pasekObecnosc { background:var(--surface); color:var(--muted); display:flex; justify-content:center; gap:24px; padding:9px 14px; font-size:12px; border-bottom:1px solid var(--border); }
#pasekObecnosc b { color:var(--foreground); }
#pasekObecnosc .ob-online,#pasekObecnosc .ob-online b { color:var(--success); }
#pasekObecnosc .ob-kropka { background:var(--muted); }
#pasekObecnosc.ma-online .ob-kropka { background:var(--success); }
#taby { display:flex; padding:0 16px; gap:12px; background:var(--surface); border-bottom:1px solid var(--border); }
.tab-btn { min-width:0; flex:1; min-height:48px; font-size:14px; font-weight:700; color:var(--muted); border:0; border-bottom:3px solid transparent; background:none; padding:10px 4px; }
.tab-btn.aktywny { color:var(--primary); border-bottom-color:var(--primary); }
.widok { background:var(--background); padding:20px max(16px,calc((100% - 980px)/2)); position:relative; isolation:isolate; }
.osa-watermark { position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); width:min(320px,65%); height:auto; opacity:var(--watermark-opacity); pointer-events:none; z-index:0; }
.osa-chat-background { position:absolute; top:0; right:0; bottom:0; left:0; pointer-events:none; }
.widok .bubble,.widok .kontakt,.widok #listaWatek,.widok #btnWstecz { position:relative; z-index:1; }
.bubble { width:fit-content; max-width:min(84%,620px); padding:12px 15px; border-radius:8px; font-size:15px; line-height:1.55; margin:0 0 12px; overflow-wrap:anywhere; box-shadow:var(--shadow-soft); }
.bubble.ja { background:var(--primary); color:var(--on-primary); float:right; border-bottom-right-radius:2px; }
.bubble.inni { background:var(--surface); color:var(--foreground); border:1px solid var(--border); float:left; border-bottom-left-radius:2px; }
.bubble.bot { background:var(--accent-soft); color:var(--on-accent); border:1px solid var(--accent); float:left; }
.bubble.wazna { background:var(--danger-soft); color:var(--danger); border:2px solid var(--danger); float:none; max-width:100%; }
.bubble .nadawca { display:flex; align-items:center; gap:7px; color:inherit; font-size:12px; font-weight:700; opacity:1; margin-bottom:5px; overflow-wrap:anywhere; }
.bubble .czas { font-size:10px; opacity:.65; margin-top:5px; }
.bubble .odczyt { color:var(--danger); font-size:11px; }
.bubble.ja a { color:var(--accent); }
.bubble .zal-img { max-width:min(100%,280px); height:auto; }
.bubble .zal-doc { max-width:100%; overflow-wrap:anywhere; }
.osa-ava { display:inline-block; vertical-align:middle; flex:none; width:38px; height:38px; overflow:visible; }
.osa-ava.osa-teacher { width:46px; height:46px; }
.nadawca .osa-ava { width:30px; height:30px; margin:0; }
.nadawca .osa-ava.osa-teacher { width:38px; height:38px; }
.kontakt { display:flex; align-items:center; justify-content:space-between; gap:10px; border:1px solid var(--border); background:var(--surface); padding:12px; border-radius:8px; margin-bottom:8px; color:var(--foreground); }
.kt-l { display:flex; align-items:center; gap:10px; min-width:0; overflow-wrap:anywhere; }
.kt-r { flex:none; color:var(--muted); }
.kontakt .osa-ava,#onlineOverlay .ol-row .osa-ava { width:38px; height:38px; margin:0; }
.kontakt .osa-ava.osa-teacher,#onlineOverlay .ol-row .osa-ava.osa-teacher { width:46px; height:46px; }
#onlineOverlay .ol-row { min-width:0; }
#onlineOverlay .ol-row > span { min-width:0; overflow-wrap:anywhere; }
.tab-badge,.kt-badge,.kp-num { background:var(--danger); color:var(--on-primary); }
#ktoPisze { gap:6px; padding:8px 12px; flex-wrap:wrap; overflow:hidden; background:var(--accent-soft); border-color:var(--border); }
#ktoPisze .kp-lbl { color:var(--foreground); }
#ktoPisze .kp-chip { max-width:100%; min-width:0; white-space:normal; border-color:var(--border); background:var(--surface); color:var(--foreground); border-radius:8px; }
#ktoPisze .kp-chip > span { overflow-wrap:anywhere; min-width:0; }
#ktoPisze .kp-chip .osa-ava { width:28px; height:28px; }
#ktoPisze .kp-chip .osa-teacher { width:34px; height:34px; }
#przelacznikWazne { display:flex; align-items:center; gap:8px; background:var(--surface); color:var(--danger); padding:8px 16px 0; font-size:11px; line-height:1.4; }
#przelacznikWazne.skryty,#btnOsa.skryty { display:none; }
#composer { display:flex !important; flex-wrap:nowrap !important; align-items:center; gap:8px; padding:12px 16px calc(12px + env(safe-area-inset-bottom)); background:var(--surface); border-top:1px solid var(--border); flex:none; }
#composer textarea { width:100%; min-width:0; min-height:68px; height:68px; max-height:120px; margin:0; resize:none; background:var(--background); color:var(--foreground); border:1px solid var(--border); border-radius:8px; padding:10px 12px; font-size:16px; line-height:23px; }
#composer button#btnOsa { width:42px; height:44px; padding:0; border:1px solid var(--border); border-radius:8px; background:var(--accent-soft); color:var(--primary-strong); font-size:12px; font-weight:800; }
#composer button#btnPlik { width:40px; height:44px; border-radius:8px; background:var(--primary-soft); color:var(--primary); border:0; font-size:22px; }
#composer button#btnWyslij { width:44px; height:44px; border-radius:8px; background:var(--primary); color:var(--on-primary); border:0; font-size:22px; }
#szukajKontaktBox { background:var(--surface)!important; border-color:var(--border)!important; }
#szukajKontakt { background:var(--background); color:var(--foreground); font-size:16px!important; border-color:var(--border)!important; }
#archiwum { color:var(--on-accent); background:var(--accent-soft); overflow-wrap:anywhere; }
.reg-okno { background:var(--surface); color:var(--foreground); max-height:90dvh; border-radius:8px 8px 0 0; }
.reg-body { min-height:0; overflow-wrap:anywhere; }
.reg-body h3 { color:var(--primary); }
.reg-head,.reg-stopka { border-color:var(--border); }
.reg-akc-btn { background:var(--primary); color:var(--on-primary); border-radius:8px; }
#popupUsun { min-width:0; width:min(320px,calc(100% - 32px)); background:var(--surface); box-shadow:var(--shadow); border-radius:8px; }
#popupUsun .btn-usun { background:var(--danger); color:var(--on-primary); }
#popupUsun .btn-anuluj { background:var(--background); color:var(--foreground); }
#popupOverlay,#lightbox,#onlineOverlay,#regulaminOverlay,#programOverlay,#installOverlay { background:var(--overlay); }
#onlineOverlay .ol-box,#onlineOverlay .ol-head { background:var(--surface); color:var(--foreground); border-color:var(--border); border-radius:8px; }
/* Login is an open, full-screen brand composition, not a floating card. */
body.osa-login { min-height:100vh; min-height:100dvh; display:flex; align-items:center; justify-content:center; padding:32px 20px; background:var(--primary); color:var(--on-primary); overflow-x:hidden; }
.osa-login .karta { width:100%; max-width:380px; text-align:center; background:none; border:0; box-shadow:none; padding:0; }
.osa-login .karta img { width:190px; height:190px; object-fit:contain; margin:0 0 16px; }
.osa-login h1 { font-size:64px; line-height:1; margin:0 0 8px; font-weight:800; color:var(--on-primary); }
.osa-login .login-tagline { font-size:16px; color:var(--accent); margin:0 0 32px; }
.osa-login .sub { font-size:14px; line-height:1.6; opacity:.9; margin:0 0 20px; }
.osa-login .pin-label { display:block; text-align:left; font-size:12px; font-weight:700; margin:0 0 8px; }
.osa-login input[type=text],.osa-login input[type=password] { width:100%; min-width:0; padding:16px 12px; border-radius:8px; border:1px solid var(--glass); background:var(--surface); color:var(--foreground); margin:0 0 12px; font-size:28px; text-align:center; letter-spacing:0; }
.osa-login input::placeholder { color:var(--muted); font-size:22px; }
.osa-login button { width:100%; min-height:52px; padding:12px 16px; border:0; border-radius:8px; background:var(--accent); color:var(--on-accent); font-size:15px; font-weight:800; }
.osa-login .blad,.osa-login .err { color:var(--danger); background:var(--danger-soft); border-radius:8px; padding:12px; margin-bottom:16px; font-size:14px; }
.osa-login #btnInstaluj { background:var(--glass)!important; color:var(--on-primary)!important; border:1px solid var(--glass)!important; }
.osa-login #instalInstr { background:var(--glass)!important; color:var(--on-primary); }
/* Admin tables turn into labelled rows on a phone, never sideways scrollers. */
body.osa-admin { background:var(--background); padding-bottom:32px; }
.osa-wrap { width:100%; max-width:1100px; margin:0 auto; padding:24px 18px 0; }
.osa-topbar { position:sticky; top:0; z-index:100; display:flex; align-items:center; gap:12px; padding:12px 18px; background:var(--primary); color:var(--on-primary); border-bottom:3px solid var(--accent); }
.osa-topbar .tb-logo { display:flex; align-items:center; gap:10px; min-width:0; font-size:17px; font-weight:800; }
.osa-topbar .tb-logo img { width:44px; height:44px; object-fit:contain; flex:none; }
.osa-topbar a { margin-left:auto; color:var(--on-primary); font-size:13px; flex:none; text-decoration:none; border:1px solid var(--glass); padding:10px; border-radius:8px; }
.osa-admin h1 { font-size:24px; margin:0 0 12px; }
.osa-admin h2 { font-size:18px; margin:28px 0 14px; border-bottom:1px solid var(--border); padding-bottom:10px; }
.osa-admin .karta { background:none; border:0; border-radius:0; padding:0; margin-bottom:20px; box-shadow:none; min-width:0; }
.osa-admin input[type=text],.osa-admin textarea { min-width:0; max-width:100%; border:1px solid var(--border)!important; padding:10px 12px; background:var(--surface); color:var(--foreground); border-radius:8px; font-size:16px; }
.osa-admin .btn { display:inline-flex; align-items:center; justify-content:center; text-decoration:none; border:0; padding:10px 14px; min-height:42px; background:var(--primary); color:var(--on-primary); font-size:13px; font-weight:700; border-radius:8px; max-width:100%; white-space:normal; text-align:center; }
.osa-admin .btn-malo { font-size:12px; min-height:36px; padding:8px 10px; }
.osa-admin table { width:100%; border-collapse:collapse; table-layout:fixed; font-size:14px; display:table; overflow:visible; background:var(--surface); }
.osa-admin th,.osa-admin td { text-align:left; padding:12px; border-bottom:1px solid var(--border); overflow-wrap:anywhere; vertical-align:middle; }
.osa-admin th { background:var(--primary-soft); color:var(--primary-strong); font-size:12px; }
.osa-admin td:last-child { width:44%; }
.osa-admin td form { display:inline-block!important; margin:3px 2px; max-width:100%; }
.osa-admin .pin { background:var(--accent-soft); color:var(--on-accent); padding:5px 8px; border-radius:6px; font-family:monospace; font-weight:700; letter-spacing:0; white-space:nowrap; }
.osa-admin .komunikat-ok { padding:12px; border-left:3px solid var(--success); background:var(--primary-soft); margin-bottom:18px; }
.osa-admin .wazny { border-left:3px solid var(--danger); padding:12px; margin-bottom:12px; background:var(--surface); overflow-wrap:anywhere; }
.osa-admin .odczyt { font-size:12px; color:var(--primary); text-decoration:underline; cursor:pointer; }
.osa-admin .lista-odczyt { display:none; font-size:12px; margin-top:8px; }
.osa-admin .admin-person { display:flex; align-items:center; gap:8px; min-width:0; }
.osa-admin .admin-person .osa-ava { width:38px; height:38px; }
.osa-admin .admin-person .osa-teacher { width:46px; height:46px; }
.osa-admin form { min-width:0; overflow-wrap:anywhere; }
.osa-admin .strip { border-color:var(--border); border-left-color:var(--primary); background:var(--surface); }
.osa-admin .strip .pin { font-size:28px; }
@media(min-width:900px) {
 #topbar { padding-left:max(20px,calc((100% - 1040px)/2)); padding-right:max(20px,calc((100% - 1040px)/2)); }
 #composer { padding-left:max(20px,calc((100% - 980px)/2)); padding-right:max(20px,calc((100% - 980px)/2)); }
 #przelacznikWazne { padding-left:max(20px,calc((100% - 980px)/2)); }
 #menuDropdown { left:max(12px,calc((100% - 1040px)/2)); }
 .reg-okno { width:min(720px,100%); margin:0 auto; }
}
@media(max-width:600px) {
 #topbar { padding:10px 12px; gap:8px; }
 #topbar .logo-osa { width:44px; height:44px; }
 .osa-brand-name { font-size:22px; }
 #pasekObecnosc { gap:20px; padding:8px 12px; }
 #composer { gap:6px; padding:10px 10px calc(10px + env(safe-area-inset-bottom)); }
 #composer button#btnOsa { width:36px; font-size:11px; }
 #composer button#btnPlik { width:34px; }
 #composer button#btnWyslij { width:40px; }
 .widok { padding:14px 12px; }
 .bubble { max-width:90%; padding:10px 12px; }
 .osa-wrap { padding:18px 12px 0; }
 .osa-topbar { padding:10px 12px; gap:8px; }
 .osa-topbar .tb-logo { font-size:14px; }
 .osa-topbar a { width:40px; height:40px; font-size:0; padding:0; display:grid; place-items:center; }
 .osa-topbar a::before { content:'←'; font-size:22px; }
 .osa-admin table,.osa-admin tbody { display:block; width:100%; background:none; }
 .osa-admin table tr:first-child:has(th) { display:none; }
 .osa-admin table tr:has(td) { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:8px; background:var(--surface); border:1px solid var(--border); border-radius:8px; padding:12px; margin:0 0 10px; }
 .osa-admin td { display:block; padding:0; border:0; width:auto!important; min-width:0; }
 .osa-admin td:first-child,.osa-admin td:last-child { grid-column:1/-1; }
 .osa-admin td:first-child { font-weight:700; font-size:15px; padding-bottom:4px; }
 .osa-admin td[data-label]:not(:first-child):not(:last-child)::before { content:attr(data-label); display:block; font-size:11px; color:var(--muted); margin-bottom:6px; font-weight:400; }
 .osa-admin td:last-child { padding-top:8px; display:flex; flex-wrap:wrap; gap:6px; }
 .osa-admin td:last-child form { margin:0; }
 .osa-admin .karta > form input[type=text] { display:block; width:100%!important; margin:8px 0!important; }
 .osa-admin .karta > form > .btn { margin-top:6px; }
 .osa-admin .strip { gap:10px; padding:12px; }
 .osa-admin .strip .qr { width:88px; height:88px; }
 .osa-admin .strip .nm { overflow-wrap:anywhere; }
}
@media(max-height:650px) { .osa-login .karta img { width:120px; height:120px; margin-bottom:8px; } .osa-login h1 { font-size:48px; } .osa-login .login-tagline { margin-bottom:16px; } }
@media(prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto!important; animation:none!important; transition:none!important; } }
@media print { .osa-admin table,.osa-admin tbody { display:table; } .osa-admin table tr:has(td) { display:table-row; } .osa-admin td { display:table-cell; } .osa-admin .osa-topbar { display:none; } }

#composer > * { flex:0 0 auto; }
#composer > textarea { flex:1 1 auto !important; width:auto !important; min-width:0; }
