:root{
  --bg:#f4f6f8; --card:#ffffff; --border:#e2e6ea; --text:#1f2937; --muted:#6b7280;
  --primary:#2563eb; --primary-dark:#1d4ed8; --primary-bg:#dbeafe;
  --red:#dc2626; --red-bg:#fee2e2;
  --amber:#d97706; --amber-bg:#fef3c7;
  --green:#16a34a; --green-bg:#dcfce7;
  --gray-bg:#eef1f4;
  --purple:#7c3aed; --purple-bg:#ede9fe;
  --teal:#0d9488; --teal-bg:#ccfbf1;
  --blue:#2563eb; --blue-bg:#dbeafe;
  --shadow:0 1px 2px rgba(16,24,40,.04), 0 1px 3px rgba(16,24,40,.06);
  --shadow-md:0 4px 12px rgba(16,24,40,.08);
}
@media (prefers-color-scheme: dark){
  :root{
    --bg:#0f172a; --card:#1a2436; --border:#2c3a52; --text:#f1f5f9; --muted:#94a3b8;
    --gray-bg:#243248; --primary-bg:#173059;
  }
}
*{box-sizing:border-box;}
body{
  margin:0; font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  background:var(--bg); color:var(--text); -webkit-font-smoothing:antialiased;
}
.app{max-width:1360px; margin:0 auto; padding:20px 16px 60px;}

/* ---------- top bar ---------- */
.topbar{display:flex; justify-content:space-between; align-items:flex-start; flex-wrap:wrap; gap:14px; margin-bottom:18px;}
.brand{display:flex; align-items:center; gap:12px;}
.brand-mark{width:42px; height:42px; border-radius:12px; background:linear-gradient(135deg,var(--primary),#38bdf8); display:flex; align-items:center; justify-content:center; font-size:20px; flex-shrink:0; box-shadow:var(--shadow);}
.brand h1{font-size:1.3rem; margin:0;}
.brand p{margin:2px 0 0; color:var(--muted); font-size:.82rem;}

.topbar-tools{display:flex; align-items:center; gap:10px; flex-wrap:wrap;}
.role-switch{display:flex; align-items:center; gap:8px; background:var(--card); border:1px solid var(--border); border-radius:10px; padding:6px 10px; font-size:.8rem; color:var(--muted); box-shadow:var(--shadow);}
.role-switch select{border:none; background:transparent; color:var(--text); font-weight:700; font-size:.85rem;}
.role-switch select:focus{outline:none;}

.global-search{position:relative;}
.global-search input{width:230px; padding:9px 12px 9px 32px; border-radius:10px; border:1px solid var(--border); background:var(--card); color:var(--text); font-size:.85rem; box-shadow:var(--shadow);}
.global-search .gs-icon{position:absolute; left:10px; top:50%; transform:translateY(-50%); font-size:.85rem; opacity:.6;}
.global-search-results{position:absolute; top:calc(100% + 6px); left:0; right:0; background:var(--card); border:1px solid var(--border); border-radius:10px; box-shadow:var(--shadow-md); z-index:60; max-height:280px; overflow-y:auto; display:none;}
.global-search-results.show{display:block;}
.gs-item{padding:9px 12px; font-size:.85rem; cursor:pointer; border-bottom:1px solid var(--border);}
.gs-item:last-child{border-bottom:none;}
.gs-item:hover{background:var(--gray-bg);}
.gs-item .gs-name{font-weight:600;}
.gs-item .gs-meta{color:var(--muted); font-size:.75rem;}
.gs-empty{padding:12px; color:var(--muted); font-size:.82rem;}

/* ---------- tabs ---------- */
.tabs{display:flex; gap:4px; margin-bottom:20px; border-bottom:1px solid var(--border); flex-wrap:wrap;}
.tab-btn{background:none; border:none; padding:11px 16px; font-size:.88rem; font-weight:600; color:var(--muted); cursor:pointer; border-bottom:2px solid transparent; display:flex; align-items:center; gap:6px; white-space:nowrap;}
.tab-btn:hover{color:var(--text);}
.tab-btn.active{color:var(--primary); border-bottom-color:var(--primary);}
.view{display:none;}
.view.active{display:block;}

/* ---------- buttons ---------- */
.btn{border:none; border-radius:9px; padding:10px 16px; font-size:.87rem; font-weight:600; cursor:pointer; display:inline-flex; align-items:center; gap:6px; transition:transform .05s ease, background .15s ease;}
.btn:active{transform:scale(.98);}
.btn-primary{background:var(--primary); color:#fff; box-shadow:var(--shadow);}
.btn-primary:hover{background:var(--primary-dark);}
.btn-secondary{background:var(--card); color:var(--text); border:1px solid var(--border);}
.btn-secondary:hover{background:var(--gray-bg);}
.btn-danger{background:var(--red-bg); color:var(--red);}
.btn-success{background:var(--green-bg); color:var(--green);}
.btn-ghost{background:transparent; color:var(--muted);}
.btn-ghost:hover{color:var(--text); background:var(--gray-bg);}
.btn-sm{padding:6px 10px; font-size:.78rem; border-radius:7px;}
.btn[disabled]{opacity:.45; cursor:not-allowed;}
.row-actions{display:flex; gap:6px; flex-wrap:wrap;}

/* ---------- stat cards ---------- */
.stats{display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:12px; margin-bottom:20px;}
.stat-card{background:var(--card); border:1px solid var(--border); border-radius:12px; padding:14px 16px; box-shadow:var(--shadow);}
.stat-card .label{font-size:.76rem; color:var(--muted); margin-bottom:4px;}
.stat-card .value{font-size:1.5rem; font-weight:800;}
.stat-card .sub{font-size:.73rem; color:var(--muted); margin-top:2px;}

/* ---------- controls / inputs ---------- */
.controls{display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-bottom:16px; background:var(--card); border:1px solid var(--border); border-radius:12px; padding:12px; box-shadow:var(--shadow);}
.controls .spacer{flex:1;}
input[type=text], input[type=date], input[type=time], input[type=number], input[type=email], input[type=tel], input[type=file], select, textarea{
  padding:9px 10px; border-radius:8px; border:1px solid var(--border); background:var(--bg); color:var(--text); font-size:.86rem; font-family:inherit;
}
textarea{width:100%; resize:vertical; min-height:64px;}
label{display:block; font-size:.78rem; font-weight:600; color:var(--muted); margin-bottom:5px;}
.field{margin-bottom:14px;}
.field input, .field select, .field textarea{width:100%;}
.field-row{display:grid; grid-template-columns:1fr 1fr; gap:12px;}
.field-row.r3{grid-template-columns:1fr 1fr 1fr;}
.checks{display:flex; flex-wrap:wrap; gap:6px 16px;}
.checks label{display:flex; align-items:center; gap:6px; color:var(--text); font-size:.85rem; font-weight:400; margin:0;}
.checks input{width:auto;}
.hint{font-size:.75rem; color:var(--muted); margin-top:4px;}

/* ---------- cards / panels ---------- */
.card{background:var(--card); border:1px solid var(--border); border-radius:14px; padding:18px; margin-bottom:16px; box-shadow:var(--shadow);}
.card h2{font-size:1rem; margin:0 0 14px;}
.card h3{font-size:.9rem; margin:0 0 8px;}
.grid-2{display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr); gap:18px; align-items:start;}
@media (max-width:980px){.grid-2{grid-template-columns:1fr;}}

/* ---------- table ---------- */
.table-wrap{background:var(--card); border:1px solid var(--border); border-radius:12px; overflow-x:auto; box-shadow:var(--shadow);}
table{border-collapse:collapse; width:100%; min-width:0;}
.table-wrap > table{min-width:820px;}
th, td{padding:11px 12px; text-align:left; border-bottom:1px solid var(--border); font-size:.84rem; vertical-align:middle;}
th{color:var(--muted); font-weight:700; font-size:.72rem; text-transform:uppercase; letter-spacing:.03em;}
tbody tr:hover{background:var(--bg);}
tbody tr.overdue{background:var(--red-bg);}
tbody tr.is-new{background:var(--teal-bg);}
@media (prefers-color-scheme: dark){ tbody tr.overdue{background:#3b1a1a;} tbody tr.is-new{background:#0d3733;} }
.empty{padding:44px; text-align:center; color:var(--muted);}

/* ---------- badges / chips ---------- */
.badge{display:inline-block; padding:3px 9px; border-radius:999px; font-size:.71rem; font-weight:700; white-space:nowrap;}
.badge-gray{background:var(--gray-bg); color:var(--muted);}
.badge-blue{background:var(--blue-bg); color:var(--blue);}
.badge-purple{background:var(--purple-bg); color:var(--purple);}
.badge-amber{background:var(--amber-bg); color:var(--amber);}
.badge-teal{background:var(--teal-bg); color:var(--teal);}
.badge-green{background:var(--green-bg); color:var(--green);}
.badge-red{background:var(--red-bg); color:var(--red);}
.pill{display:inline-flex; align-items:center; gap:5px; padding:5px 11px; border-radius:999px; font-size:.78rem; font-weight:600; background:var(--gray-bg); color:var(--muted); cursor:pointer; border:1px solid transparent;}
.pill.active{background:var(--primary-bg); color:var(--primary); border-color:var(--primary);}

.timer{font-weight:700; font-size:.8rem;}
.timer.ok{color:var(--green);} .timer.soon{color:var(--amber);} .timer.over{color:var(--red);} .timer.done{color:var(--muted); font-weight:400;}

.progress-track{background:var(--gray-bg); border-radius:999px; height:8px; width:110px; overflow:hidden;}
.progress-fill{background:linear-gradient(90deg,var(--primary),#38bdf8); height:100%; border-radius:999px;}
.progress-label{font-size:.72rem; color:var(--muted); margin-top:3px;}

/* ---------- modal ---------- */
.modal-overlay{position:fixed; inset:0; background:rgba(15,23,42,.5); display:flex; align-items:center; justify-content:center; padding:16px; z-index:200;}
.modal-overlay.hidden{display:none;}
#patientModalOverlay{z-index:210;} /* nad oknem wizyty, gdy otwierane z kalendarza */
.form-error{background:#fee2e2; color:#b91c1c; border:1px solid #fecaca; border-radius:10px; padding:8px 12px; font-size:.84rem; margin-bottom:12px;}
.form-error.hidden{display:none;}
.field input.invalid{border-color:#dc2626; box-shadow:0 0 0 2px rgba(220,38,38,.15);}
.modal{background:var(--card); border-radius:16px; padding:22px; width:100%; max-width:560px; max-height:92vh; overflow-y:auto; box-shadow:var(--shadow-md);}
.modal.modal-lg{max-width:760px;}
.modal h2{margin:0 0 16px; font-size:1.1rem;}
.modal-actions{display:flex; justify-content:flex-end; gap:10px; margin-top:18px;}

/* ---------- calendar ---------- */
.cal-nav{display:flex; align-items:center; gap:10px; margin-bottom:14px;}
.cal-nav .cal-label{font-weight:700; font-size:.95rem; min-width:190px; text-align:center;}
.cal-grid{display:grid; grid-template-columns:repeat(7,1fr); gap:10px;}
@media (max-width:920px){.cal-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));}}
.cal-day{background:var(--card); border:1px solid var(--border); border-radius:12px; padding:10px; min-height:150px; box-shadow:var(--shadow); display:flex; flex-direction:column; gap:6px;}
.cal-day.is-today{border-color:var(--primary); box-shadow:0 0 0 2px var(--primary-bg);}
.cal-day-head{display:flex; justify-content:space-between; align-items:baseline; font-size:.78rem; color:var(--muted); font-weight:700; text-transform:uppercase;}
.cal-day-head .d{font-size:1.05rem; color:var(--text);}
.visit-chip{background:var(--gray-bg); border-radius:8px; padding:6px 8px; font-size:.76rem; cursor:pointer; border:1px solid transparent; display:flex; flex-direction:column; gap:2px;}
.visit-chip:hover{border-color:var(--primary);}
.visit-chip .vc-time{font-weight:700;}
.visit-chip .vc-name{color:var(--text);}
.visit-chip .vc-meta{color:var(--muted); font-size:.7rem;}
.visit-chip.new-patient{background:linear-gradient(135deg,var(--teal-bg),var(--primary-bg)); border-color:var(--teal); position:relative;}
.visit-chip.new-patient::before{content:"✨ NOWY"; position:absolute; top:-8px; right:6px; background:var(--teal); color:#fff; font-size:.6rem; font-weight:800; padding:1px 6px; border-radius:999px;}
.visit-chip.status-odwolana{opacity:.5; text-decoration:line-through;}
.cal-add{border:1px dashed var(--border); background:transparent; color:var(--muted); border-radius:8px; padding:6px; font-size:.75rem; cursor:pointer;}
.cal-add:hover{color:var(--primary); border-color:var(--primary);}

/* ---------- patient header / karta ---------- */
.patient-header{display:flex; gap:16px; align-items:center; flex-wrap:wrap; background:var(--card); border:1px solid var(--border); border-radius:14px; padding:18px; margin-bottom:16px; box-shadow:var(--shadow);}
.avatar{width:56px; height:56px; border-radius:50%; background:linear-gradient(135deg,var(--primary),#38bdf8); color:#fff; display:flex; align-items:center; justify-content:center; font-weight:800; font-size:1.1rem; flex-shrink:0;}
.patient-header .ph-name, .op-phead .ph-name{font-size:1.15rem; font-weight:800;}
.patient-header .ph-meta, .op-phead .ph-meta{display:flex; flex-wrap:wrap; gap:8px 14px; color:var(--muted); font-size:.82rem; margin-top:4px;}
.patient-header .ph-actions{margin-left:auto; display:flex; gap:8px; flex-wrap:wrap;}
.access-note{font-size:.76rem; color:var(--muted); background:var(--amber-bg); color:var(--amber); padding:8px 12px; border-radius:8px; margin-bottom:14px; display:none;}
.access-note.show{display:block;}

.subtabs{display:flex; gap:6px; flex-wrap:wrap; margin-bottom:16px;}
.subtab-btn{background:var(--card); border:1px solid var(--border); border-radius:999px; padding:8px 14px; font-size:.8rem; font-weight:600; color:var(--muted); cursor:pointer;}
.subtab-btn.active{background:var(--primary); color:#fff; border-color:var(--primary);}
.subview{display:none;} .subview.active{display:block;}

/* ---------- body map ---------- */
.bodymap-wrap{display:grid; grid-template-columns:1fr 1fr; gap:18px;}
@media (max-width:820px){.bodymap-wrap{grid-template-columns:1fr;}}
.bodymap-svg-wrap{background:var(--bg); border:1px solid var(--border); border-radius:12px; padding:10px; text-align:center;}
.bodymap-svg-wrap h3{text-align:left;}
.bm-region{cursor:pointer; fill:var(--gray-bg); stroke:var(--border); stroke-width:1.5; transition:fill .12s ease;}
.bm-region:hover{fill:var(--primary-bg);}
.bm-region.active{fill:var(--primary); stroke:var(--primary-dark);}
.bm-label{font-size:9px; fill:var(--muted); pointer-events:none; font-family:inherit;}
.bm-tmj-dot{cursor:pointer; fill:var(--teal); stroke:#fff; stroke-width:2;}
.bm-tmj-dot:hover{fill:var(--primary);}
.bm-tmj-dot.active{fill:var(--primary);}

.condition-group{margin-bottom:14px;}
.condition-item{display:flex; align-items:flex-start; gap:8px; padding:8px 10px; border-radius:9px; font-size:.84rem; cursor:pointer;}
.condition-item:hover{background:var(--gray-bg);}
.condition-item input{margin-top:3px;}
.condition-item .ci-name{font-weight:600;}
.condition-item .ci-meta{color:var(--muted); font-size:.74rem; margin-top:1px;}
.condition-list{display:grid; grid-template-columns:repeat(auto-fill,minmax(320px,1fr)); gap:2px 14px;}
.condition-row{display:flex; align-items:flex-start; gap:4px;}
.condition-row .condition-item{flex:1;}
.condition-row .ci-actions{display:flex; gap:2px; padding-top:4px;}
.condition-item .badge{margin-left:4px; vertical-align:1px;}
.cond-subhead{font-size:.8rem; margin:14px 0 4px; color:var(--muted); text-transform:uppercase; letter-spacing:.03em;}
.cond-summary{display:flex; flex-wrap:wrap; gap:6px; align-items:center; padding:10px 12px; background:var(--bg); border:1px solid var(--border); border-radius:10px; margin-top:6px;}
.cond-summary-label{font-size:.78rem; font-weight:700; color:var(--muted); margin-right:2px;}
.cond-summary-clear{margin-left:auto;}
.cond-chip{background:var(--primary-bg); color:var(--primary-dark); border-radius:999px; padding:4px 10px; font-size:.75rem; font-weight:600; cursor:pointer;}
.cond-chip em{font-style:normal; opacity:.7;}
.cc-form{margin-top:12px; padding:14px; border:1px dashed var(--primary); border-radius:12px; background:var(--bg);}
.cc-item-row{display:grid; grid-template-columns:minmax(0,1fr) 70px auto auto; gap:6px; align-items:center; margin-bottom:6px;}
.cc-item-row.is-custom{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 90px 70px auto auto;}
.cc-item-row select, .cc-item-row input{width:100%; min-width:0;}
.cc-unit{font-size:.75rem; color:var(--muted);}
.cc-excats{display:flex; flex-wrap:wrap; gap:6px 14px; font-size:.82rem;}
.cc-excats label{display:flex; align-items:center; gap:5px; cursor:pointer; font-weight:500;}
.cc-excats input{width:auto; margin:0;}
@media (max-width:700px){
  .cc-item-row, .cc-item-row.is-custom{grid-template-columns:1fr 70px auto auto;}
  .cc-item-row.is-custom select{grid-column:1 / -1;}
  .condition-list{grid-template-columns:1fr;}
}

/* ---------- exercise library ---------- */
.exercise-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:12px;}
.exercise-card{background:var(--card); border:1px solid var(--border); border-radius:12px; padding:14px; box-shadow:var(--shadow); position:relative;}
.exercise-card.selected{border-color:var(--primary); box-shadow:0 0 0 2px var(--primary-bg);}
.exercise-card .ex-cat{margin-bottom:6px;}
.exercise-card h4{margin:0 0 4px; font-size:.92rem;}
.exercise-card p{margin:0 0 8px; font-size:.8rem; color:var(--muted);}
.exercise-card .ex-dose{font-size:.78rem; font-weight:700; color:var(--primary); margin-bottom:8px;}
.exercise-card .ex-actions{display:flex; justify-content:space-between; align-items:center;}
.exercise-card label.pick{display:flex; align-items:center; gap:6px; font-size:.78rem; font-weight:600; color:var(--text); cursor:pointer;}

/* ---------- attachments ---------- */
.attachment-list{display:flex; flex-direction:column; gap:8px;}
.attachment-item{display:flex; align-items:center; gap:10px; padding:10px 12px; border:1px solid var(--border); border-radius:10px; background:var(--bg);}
.attachment-item .a-icon{font-size:1.3rem;}
.attachment-item .a-name{font-weight:600; font-size:.85rem;}
.attachment-item .a-meta{font-size:.72rem; color:var(--muted);}
.attachment-item .a-spacer{flex:1;}
.upload-drop{border:1.5px dashed var(--border); border-radius:12px; padding:20px; text-align:center; color:var(--muted); font-size:.85rem; margin-bottom:14px;}

/* ---------- messages ---------- */
.message-list{display:flex; flex-direction:column; gap:10px;}
.message-item{display:flex; gap:12px; align-items:flex-start; padding:12px 14px; border:1px solid var(--border); border-radius:10px; background:var(--card);}
.message-item .m-icon{font-size:1.2rem;}
.message-item .m-title{font-weight:700; font-size:.85rem;}
.message-item .m-body{font-size:.82rem; color:var(--muted); margin-top:2px; white-space:pre-line;}
.message-item .m-time{font-size:.72rem; color:var(--muted); margin-left:auto; white-space:nowrap;}
.demo-note{background:var(--amber-bg); color:var(--amber); border-radius:10px; padding:10px 14px; font-size:.8rem; margin-bottom:16px;}

/* ---------- karnet ---------- */
.karnet-box{display:flex; gap:20px; align-items:center; flex-wrap:wrap;}
.karnet-ring{position:relative; width:88px; height:88px; border-radius:50%; background:conic-gradient(var(--primary) calc(var(--pct,0)*1%), var(--gray-bg) 0); display:flex; align-items:center; justify-content:center; flex-shrink:0;}
.karnet-ring span{background:var(--card); border-radius:50%; width:68px; height:68px; display:flex; flex-direction:column; align-items:center; justify-content:center; font-weight:800; font-size:1rem;}
.karnet-ring span small{font-weight:600; font-size:.62rem; color:var(--muted);}

/* ---------- print sheet ---------- */
.sheet{display:none;}
.sheet.printing{display:block; background:#fff; color:#1f2937; padding:0;}
.sheet h1{font-size:1.25rem; margin:0; color:#1d4ed8;}
.sheet .sub{color:#6b7280; font-size:.8rem;}
.sheet .top{display:flex; justify-content:space-between; border-bottom:2px solid #1d4ed8; padding-bottom:10px; margin-bottom:14px;}
.sheet h3{font-size:.9rem; margin:16px 0 6px; color:#1d4ed8;}
.sheet table{width:100%; border-collapse:collapse; font-size:.82rem;}
.sheet th, .sheet td{padding:6px 8px; border-bottom:1px solid #e5e7eb; text-align:left;}
.sheet .num{text-align:right;}
.sheet .total td{font-weight:800; border-top:2px solid #1f2937;}
.sheet ul{margin:4px 0; padding-left:20px;}
.sheet .foot{margin-top:24px; font-size:.75rem; color:#6b7280; display:flex; justify-content:space-between;}

@media print{
  /* drukujemy wyłącznie arkusz — reszta programu nie zajmuje miejsca (bez pustych stron) */
  html, body{height:auto !important; min-height:0 !important; overflow:visible !important; background:#fff !important;}
  body > *:not(#printSheet){display:none !important;}
  .sheet.printing{display:block !important; position:static; width:100%; margin:0;}
  .sheet.printing > *:last-child{margin-bottom:0;}
}
@page{margin:12mm;}

.reveal{opacity:0; transform:translateY(10px); transition:opacity .5s ease, transform .5s ease;}
.reveal.is-visible{opacity:1; transform:none;}

/* ---------- zalecenia ortodonty dla zespołu ---------- */
.orto-card{border-left:4px solid var(--purple);}
.orto-card h2{display:flex; align-items:center; gap:8px;}
.orto-form{background:var(--bg); border:1px solid var(--border); border-radius:10px; padding:10px; margin-bottom:12px;}
.orto-form textarea{min-height:80px; margin-bottom:8px;}
.orto-form-row{display:flex; align-items:center; gap:12px; flex-wrap:wrap;}
.orto-form-row label{display:flex; align-items:center; gap:6px; margin:0; font-size:.8rem;}
.orto-form-row select{width:auto;}
.orto-check input{width:auto; margin:0;}
.orto-list{display:flex; flex-direction:column; gap:10px; margin-bottom:8px;}
.orto-note{border:1px solid var(--border); border-radius:10px; padding:10px 12px; background:var(--card);}
.orto-note.pilne{border-color:var(--red); background:linear-gradient(90deg, var(--red-bg) 0, var(--card) 40%);}
.orto-note.done{opacity:.7;}
.orto-note.editing{padding:0; border:none;}
.orto-note.editing .orto-form{margin:0;}
.orto-note-head{display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin-bottom:6px;}
.orto-date{margin-left:auto; font-size:.72rem; color:var(--muted);}
.orto-text{font-size:.87rem; white-space:pre-line; line-height:1.45;}
.orto-acks{display:flex; flex-wrap:wrap; gap:6px 12px; margin-top:8px;}
.orto-ack{font-size:.72rem; color:var(--muted);}
.orto-ack.ok{color:var(--green); font-weight:600;}
.orto-actions{display:flex; flex-wrap:wrap; gap:4px; margin-top:6px;}
.orto-actions:empty{display:none;}
.orto-header-badge{display:inline-block; background:var(--purple-bg); color:var(--purple); border-radius:999px; padding:2px 9px; font-weight:700; font-size:.75rem; cursor:pointer;}
.orto-header-badge.hot{background:var(--red-bg); color:var(--red);}

/* ---------- status zapisu ---------- */
.sms-left{font-size:.75rem; font-weight:700; padding:6px 10px; border-radius:999px; white-space:nowrap; cursor:pointer; background:var(--green-bg); color:var(--green);}
.sms-left.low{background:var(--amber-bg); color:var(--amber);}
.sms-left.err{background:#fde8e8; color:#b42318;}
.sms-auto{display:flex; flex-wrap:wrap; gap:8px 18px; align-items:center; margin:8px 0 0;}
.sms-auto-line{font-size:.85rem; margin:6px 0 0;}
.save-status{font-size:.75rem; font-weight:700; padding:6px 10px; border-radius:999px; white-space:nowrap; cursor:help;}
.save-status.ok{background:var(--green-bg); color:var(--green);}
.save-status.warn{background:var(--amber-bg); color:var(--amber);}
.save-status.err{background:var(--red-bg); color:var(--red);}

/* Klikalne kafelki statystyk (Pacjenci) */
.stat-card.stat-click{font:inherit; color:inherit; text-align:left; width:100%; cursor:pointer; transition:border-color .15s, box-shadow .15s, transform .15s;}
.stat-card.stat-click:hover{border-color:var(--primary); transform:translateY(-1px);}
.stat-card.stat-click.active{border-color:var(--primary); box-shadow:0 0 0 2px var(--primary-bg), var(--shadow);}
.stat-card.stat-click.active .label{color:var(--primary); font-weight:700;}
.pac-list-info{display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:0 0 10px; font-size:.9rem;}
.pac-list-info .muted{color:var(--muted);}

/* ---- Dobór ćwiczeń do schorzeń ---- */
.ex-rec{margin-bottom:16px; border-left:4px solid var(--primary);}
.ex-rec-empty{border-left-color:var(--border);}
.ex-rec-head{display:flex; justify-content:space-between; align-items:flex-start; gap:12px; flex-wrap:wrap; margin-bottom:10px;}
.ex-rec-head h2{margin:0;}
.ex-rec-actions{display:flex; gap:8px; flex-wrap:wrap;}
.ex-rec-groups{display:grid; grid-template-columns:repeat(auto-fill,minmax(320px,1fr)); gap:10px;}
.ex-rec-group{background:var(--gray-bg); border-radius:10px; padding:10px 12px;}
.ex-rec-cond{font-weight:700; font-size:.86rem; margin-bottom:6px;}
.ex-rec-area{font-weight:500; color:var(--muted); font-size:.78rem;}
.ex-rec-chips{display:flex; flex-wrap:wrap; gap:6px;}
.ex-chip{border:1px solid var(--border); background:var(--card); color:var(--text); border-radius:999px; padding:4px 10px; font-size:.78rem; cursor:pointer; font-family:inherit;}
.ex-chip:hover:not([disabled]){border-color:var(--primary);}
.ex-chip.in-set{background:var(--green-bg); border-color:var(--green); color:var(--green); font-weight:600;}
.ex-chip.extra:not(.in-set){opacity:.7; border-style:dashed;}
.ex-chip[disabled]{cursor:default;}
.ex-chip-warn{color:var(--amber);}
.exercise-card .ex-warn{font-size:.76rem; color:var(--amber); background:var(--amber-bg); border-radius:8px; padding:6px 8px; margin-bottom:8px; line-height:1.35;}
.exercise-card.recommended{border-color:var(--green);}
.exercise-card .badge + .badge.ex-cat{margin-left:4px;}
.cc-exlist{display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:4px 12px; max-height:220px; overflow:auto; border:1px solid var(--border); border-radius:8px; padding:8px; background:var(--card);}
.cc-exlist{align-content:start;}
.cc-exlist label{display:flex; align-items:flex-start; gap:8px; margin:0; padding:6px 8px; border:1px solid var(--border); border-radius:8px; font-size:.8rem; font-weight:500; color:var(--text); cursor:pointer; min-width:0;}
.cc-exlist label:has(input:checked){border-color:var(--primary); background:var(--gray-bg);}
.cc-exlist input[type=checkbox]{width:auto; flex:0 0 auto; margin:2px 0 0;}
.cc-ex-text{display:flex; flex-direction:column; min-width:0;}
.cc-ex-name{line-height:1.3;}
.cc-exlist-cat{color:var(--muted); font-size:.72rem; line-height:1.25; margin-top:2px;}

/* ---- Panel ortodonty (uproszczony widok) ---- */
body.mode-orto .tabs, body.mode-orto .global-search{display:none;}
.op-layout{display:grid; grid-template-columns:300px 1fr; gap:16px; align-items:start;}
.op-side{position:sticky; top:12px; display:flex; flex-direction:column; gap:10px; padding:14px;}
.op-reg-btn{width:100%; justify-content:center;}
.op-side input{width:100%;}
.op-plist{display:flex; flex-direction:column; gap:4px; max-height:calc(100vh - 320px); overflow:auto;}
.op-stages{display:flex; flex-wrap:wrap; gap:4px;}
.op-stage{border:1px solid var(--border); background:var(--card); border-radius:999px; padding:3px 9px; font-size:.76rem; cursor:pointer; color:inherit;}
.op-stage b{margin-left:2px;}
.op-stage:hover{background:var(--gray-bg);}
.op-stage.active{background:var(--primary); border-color:var(--primary); color:#fff;}
.op-group{display:flex; flex-direction:column; gap:4px; margin-bottom:8px;}
.op-ghead{display:flex; align-items:center; justify-content:space-between; position:sticky; top:0; background:var(--card); padding:4px 2px; z-index:1; font-size:.78rem;}
.op-pitem{padding:8px 10px; border-radius:8px; cursor:pointer; border:1px solid transparent;}
.op-pitem:hover{background:var(--gray-bg);}
.op-pitem.active{background:var(--primary-bg); border-color:var(--primary);}
.op-pname{font-weight:600; font-size:.88rem;}
.op-pnotes{font-size:.72rem; color:var(--purple);}
.op-pvisit{font-size:.78rem; color:var(--primary); margin-top:2px;}
.op-pvisit.none{color:var(--muted);}
.op-main{display:flex; flex-direction:column; gap:16px; min-width:0;}
.op-main > .card{margin:0;}
.op-phead{display:flex; gap:14px; align-items:flex-start; flex-wrap:wrap;}
.op-pinfo{flex:1; min-width:180px;}
.op-term{background:var(--gray-bg); border-radius:10px; padding:10px 14px; min-width:280px;}
.op-term-label{font-size:.72rem; text-transform:uppercase; letter-spacing:.04em; color:var(--muted); font-weight:700;}
.op-term-date{font-size:1.05rem; font-weight:700; color:var(--primary); margin:2px 0;}
.op-term-none{font-weight:600; color:var(--amber); margin:2px 0;}
.op-term-more{font-size:.78rem; color:var(--muted);}
.op-term-add{display:flex; gap:6px; margin-top:8px; flex-wrap:wrap;}
.op-term-add input{padding:4px 6px; font-size:.82rem;}
.op-term-list{display:flex; flex-wrap:wrap; gap:4px; margin-top:6px;}
.op-term-chip{font-size:.74rem; background:var(--card); border:1px solid var(--border); border-radius:999px; padding:2px 8px;}
.op-x{border:none; background:none; color:var(--red); cursor:pointer; padding:0 0 0 2px; font-size:.74rem;}
.op-err{background:var(--red-bg); color:var(--red); padding:8px 10px; border-radius:8px; margin-bottom:10px; font-size:.84rem;}
.op-err.hidden{display:none;}
.op-reg input.invalid{border-color:var(--red);}
.op-reg textarea{width:100%;}
@media (max-width: 860px){ .op-layout{grid-template-columns:1fr;} .op-side{position:static;} }

/* ---- Logo DentVital ---- */
.brand-logo-wrap{display:flex; align-items:center; flex-shrink:0;}
.brand-logo{height:44px; width:auto; display:block;}
.sheet .sheet-brand{display:flex; align-items:center; gap:14px;}
.sheet .sheet-logo{height:54px; width:auto;}
@media (max-width: 600px){ .brand-logo{height:34px;} }
.brand p{max-width:380px;}

/* ---------- ćwiczenia na miejscu ---------- */
.cm-head{display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap;}
.cm-fizjo{display:flex; align-items:center; gap:8px; margin:0; font-weight:600;}
.cm-fizjo select{width:auto; min-width:220px;}

/* =====================================================================
   MOTYW DENTVITAL — kolory jak na dentvital.pl: zieleń, złoto, czerń
   ===================================================================== */
:root{
  --primary:#1A7A6E; --primary-dark:#135c53; --primary-bg:#e2f1ed;
  --gold:#C9A84C; --gold-dark:#a78a36; --gold-bg:#f6efdc;
  --ink:#111417;
  --teal:#1A7A6E; --teal-bg:#e2f1ed;
  --bg:#f7f5ef; --border:#e6e1d4; --gray-bg:#f1eee5;
}
@media (prefers-color-scheme: dark){
  :root{ --bg:#0f1412; --card:#18201d; --border:#2b3631; --gray-bg:#212b27; --primary:#2a9a8b; --primary-dark:#1A7A6E; --primary-bg:#173a34; --gold-bg:#3a321c; }
  /* jasne tła akcentów (zaznaczony wiersz, plakietki) — w trybie ciemnym ciemne, żeby napisy były czytelne */
  :root{ --teal-bg:#173a34; --blue-bg:#172a45; --green-bg:#163322; --amber-bg:#3a2e14; --red-bg:#3d1c1c; --purple-bg:#2b2142;
         --red:#f87171; --amber:#fbbf24; --green:#4ade80; --purple:#a78bfa; --blue:#60a5fa; }
}
/* zdjęcie w tle — ledwo widoczne */
body{position:relative;}
body::before{
  content:""; position:fixed; right:-2vw; bottom:0; width:min(62vw,760px); height:min(92vh,760px);
  background:url('tlo-cwiczenia.svg') no-repeat right bottom / contain;
  opacity:.07; pointer-events:none; z-index:0;
}
.app{position:relative; z-index:1;}

/* nagłówek: złota linia pod spodem */
.topbar{padding-bottom:14px; border-bottom:2px solid var(--gold);}
.brand h1{color:var(--ink);}
@media (prefers-color-scheme: dark){ .brand h1{color:#f5f1e6;} }

/* zakładki główne na czarnym pasku, aktywna w złocie */
.tabs{background:var(--ink); border:none; border-radius:12px; padding:4px 6px; gap:2px;}
.tab-btn{color:#cfd6d3; border-bottom:none; border-radius:9px; padding:10px 16px;}
.tab-btn:hover{color:#fff; background:rgba(255,255,255,.07);}
.tab-btn.active{color:var(--ink); background:var(--gold); border-bottom:none;}

/* przyciski */
.btn-primary{background:var(--primary);}
.btn-primary:hover{background:var(--primary-dark);}
.btn-secondary{border-color:var(--gold);}
.btn-secondary:hover{background:var(--gold-bg);}

/* podzakładki karty pacjenta */
.subtab-btn:hover{border-color:var(--gold); color:var(--text);}
.subtab-btn.active{background:var(--primary); border-color:var(--primary); color:#fff; box-shadow:inset 0 -3px 0 var(--gold);}

/* karty i kafelki: złoty akcent */
.card h2{color:var(--primary);}
.stat-card{border-top:3px solid var(--gold);}
.stat-card .value{color:var(--primary);}
.stat-card.stat-click:hover, .stat-card.stat-click.active{border-color:var(--gold); border-top-color:var(--gold);}
.stat-card.stat-click.active{box-shadow:0 0 0 2px var(--gold-bg), var(--shadow);}
.stat-card.stat-click.active .label{color:var(--gold-dark);}
.patient-header{border-left:4px solid var(--gold);}
.avatar{background:linear-gradient(135deg,var(--primary),var(--gold)) !important;}
.progress-fill{background:linear-gradient(90deg,var(--primary),var(--gold)) !important;}
.badge-blue{background:var(--primary-bg); color:var(--primary);}
.badge-teal{background:var(--gold-bg); color:var(--gold-dark);}
.exercise-card .ex-dose{color:var(--primary);}
input:focus, select:focus, textarea:focus{outline:none; border-color:var(--gold) !important; box-shadow:0 0 0 3px var(--gold-bg);}

/* panel ortodonty */
.op-stage.active{background:var(--primary); border-color:var(--primary);}
.op-pitem.active{background:var(--gold-bg); border-color:var(--gold);}
.op-term-date, .op-pvisit{color:var(--primary);}

/* wydruki: zieleń zamiast niebieskiego */
.sheet h1, .sheet h3{color:#1A7A6E !important;}
.sheet .top{border-bottom-color:#C9A84C !important;}
@media print{ body::before{display:none !important;} }

/* ---------- tryb logopedy: mapa artykulacyjna + obszary funkcjonalne ---------- */
:root{
  --an-skin:#f6dfc4; --an-skin-shade:#d9b48a; --an-skin-deep:#ecc9a3;
  --an-bone:#f3ecdc; --an-bone-line:#cbbd9c; --an-cavity:#6b3a3f; --an-airway:#9c5a5f;
  --an-mucosa:#e9a6a3; --an-mucosa-line:#c4777a; --an-tongue:#dc8385; --an-tongue-line:#b35f63;
  --an-lip:#d9888a; --an-lip-line:#b0676a; --an-tooth:#fffdf6; --an-tooth-line:#c9c1ad;
  --an-cart:#d8e1e6; --an-cart-line:#9fb0ba;
}
@media (prefers-color-scheme: dark){
  :root{
    --an-skin:#6b4f37; --an-skin-shade:#9a7856; --an-skin-deep:#5a412c;
    --an-bone:#d9cfb8; --an-bone-line:#8f8264; --an-cavity:#2a1517; --an-airway:#5e3035;
    --an-mucosa:#a8686a; --an-mucosa-line:#7e4649; --an-tongue:#b0585c; --an-tongue-line:#83393d;
    --an-lip:#a85e61; --an-lip-line:#7a3f42; --an-tooth:#ece6d6; --an-tooth-line:#8f8674;
    --an-cart:#9aa9b2; --an-cart-line:#6c7c86;
  }
}
.logo-map{width:100%; max-width:280px; height:auto; display:block; margin:0 auto;}
.logo-map .an-skin{fill:url(#anSkinGrad); stroke:var(--an-skin-shade); stroke-width:1.2;}
.logo-map .an-bone{fill:var(--an-bone); stroke:var(--an-bone-line); stroke-width:1;}
.logo-map .an-cavity{fill:var(--an-cavity);}
.logo-map .an-soft{fill:var(--an-mucosa); stroke:var(--an-mucosa-line); stroke-width:.8;}
.logo-map .an-cart{fill:var(--an-cart); stroke:var(--an-cart-line); stroke-width:1;}
.logo-map .an-line{fill:none; stroke:var(--an-mucosa-line); stroke-width:1; stroke-linecap:round; opacity:.8;}
.logo-map .an-ghost{fill:none; stroke:var(--an-skin-shade); stroke-width:1.2; stroke-dasharray:3 3;}
.logo-map .an-label{font-size:8px; font-weight:700; fill:var(--muted);}
.logo-map .az{cursor:pointer; stroke-width:1; transition:fill .12s, stroke .12s;}
.logo-map .z-lip{fill:var(--an-lip); stroke:var(--an-lip-line);}
.logo-map .z-tooth{fill:var(--an-tooth); stroke:var(--an-tooth-line);}
.logo-map .z-bone, .logo-map .z-palate{fill:var(--an-bone); stroke:var(--an-bone-line);}
.logo-map .z-tongue{fill:var(--an-tongue); stroke:var(--an-tongue-line);}
.logo-map .z-velum{fill:var(--an-mucosa); stroke:var(--an-mucosa-line);}
.logo-map .z-nasal, .logo-map .z-airway{fill:var(--an-airway); stroke:var(--an-mucosa-line);}
.logo-map .z-larynx{fill:var(--an-cart); stroke:var(--an-cart-line);}
.logo-map .z-joint{fill:var(--an-bone); stroke:var(--an-bone-line); stroke-dasharray:3 2;}
.logo-map .az:hover{stroke:var(--primary); stroke-width:2;}
.logo-map .az.active{fill:var(--primary); fill-opacity:.75; stroke:var(--primary-dark); stroke-width:2; stroke-dasharray:none;}
.logo-areas{display:flex; flex-direction:column; gap:6px; text-align:left;}
.logo-areas-title{font-size:.72rem; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--muted); margin:2px 0;}
.logo-area-btn{font:inherit; font-size:.86rem; text-align:left; padding:8px 12px; border-radius:10px; border:1px solid var(--border); background:var(--card); color:var(--text); cursor:pointer; transition:border-color .12s, background .12s;}
.logo-area-btn:hover{border-color:var(--primary);}
.logo-area-btn.active{background:var(--primary); border-color:var(--primary-dark); color:#fff; font-weight:600;}
.cm-fizjo input{width:auto; min-width:220px;}

/* ---------- mapa ciała (anatomiczna) ---------- */
.bm-svg{display:block; margin:0 auto;}
.bm-sil{fill:var(--card); stroke:var(--muted); stroke-width:1.2; stroke-linejoin:round;}
.bm-ln{fill:none; stroke:var(--muted); stroke-width:1; opacity:.8;}
.bm-vert{fill:none; stroke:var(--muted); stroke-width:.8; pointer-events:none;}
.bm-lead{stroke:var(--border); stroke-width:.8; pointer-events:none;}
.bm-svg .bm-label{font-size:10px;}
.bm-zone{cursor:pointer; fill:var(--primary); fill-opacity:.08; stroke:var(--primary); stroke-opacity:.35; stroke-width:1.2; transition:fill-opacity .12s ease, stroke-opacity .12s ease;}
.bm-zone:hover{fill-opacity:.25; stroke-opacity:.8;}
.bm-zone.active{fill-opacity:.5; stroke-opacity:1; stroke-width:1.6;}
.bm-joint{fill-opacity:.3; stroke-opacity:.9;}

/* =====================================================================
   PLANSZA STARTOWA — wybór działu (fizjoterapia / logopedia)
   ===================================================================== */
.start-screen{
  position:fixed; inset:0; z-index:200; display:flex; align-items:center; justify-content:center;
  padding:24px 16px; overflow:auto;
  background:rgba(247,245,239,.42);
  -webkit-backdrop-filter:blur(16px) saturate(140%); backdrop-filter:blur(16px) saturate(140%);
  animation:ssFade .35s ease both;
}
.start-screen[hidden]{display:none;}
.start-screen.ss-leaving{animation:ssOut .26s ease both;}
body.start-open{overflow:hidden;}
@keyframes ssFade{from{opacity:0}to{opacity:1}}
@keyframes ssOut{to{opacity:0; transform:scale(1.02)}}
@keyframes ssRise{from{opacity:0; transform:translateY(18px)}to{opacity:1; transform:none}}
@keyframes ssFloat{0%,100%{transform:translate(0,0)}50%{transform:translate(18px,-14px)}}

.ss-blob{position:fixed; border-radius:50%; filter:blur(70px); opacity:.42; pointer-events:none; animation:ssFloat 14s ease-in-out infinite;}
.ss-blob-a{width:46vw; height:46vw; left:-10vw; top:-8vw; background:#14b8a6;}
.ss-blob-b{width:42vw; height:42vw; right:-10vw; bottom:-12vw; background:#a855f7; animation-delay:-5s;}
.ss-blob-c{width:26vw; height:26vw; left:42vw; top:58vh; background:#C9A84C; opacity:.3; animation-delay:-9s;}

.ss-panel{
  position:relative; width:min(900px,100%); text-align:center;
  padding:34px 34px 26px; border-radius:28px;
  background:rgba(255,255,255,.55); border:1px solid rgba(255,255,255,.75);
  box-shadow:0 30px 80px rgba(17,20,23,.18), inset 0 1px 0 rgba(255,255,255,.8);
  animation:ssRise .5s cubic-bezier(.2,.8,.2,1) both;
}
.ss-logo-wrap{display:inline-flex; margin-bottom:14px;}
.ss-logo{height:52px; width:auto; display:block;}
.ss-title{margin:0; font-size:1.9rem; letter-spacing:-.01em; color:var(--ink);}
.ss-title::after{content:""; display:block; width:56px; height:3px; border-radius:3px; background:var(--gold); margin:10px auto 0;}
.ss-sub{margin:10px 0 26px; color:var(--muted); font-size:.92rem;}

.ss-choices{display:grid; grid-template-columns:1fr 1fr; gap:20px;}
.ss-card{
  position:relative; overflow:hidden; display:flex; flex-direction:column; align-items:flex-start; text-align:left;
  gap:6px; min-height:250px; padding:26px 24px 22px; border:none; border-radius:22px; cursor:pointer;
  color:#fff; font:inherit;
  box-shadow:0 14px 34px rgba(17,20,23,.18);
  transition:transform .18s ease, box-shadow .18s ease;
  animation:ssRise .55s cubic-bezier(.2,.8,.2,1) both;
}
.ss-card::before{ /* połysk szkła */
  content:""; position:absolute; inset:0; pointer-events:none;
  background:linear-gradient(160deg,rgba(255,255,255,.28),rgba(255,255,255,0) 45%);
}
.ss-card::after{ /* duży, delikatny okrąg w tle */
  content:""; position:absolute; width:220px; height:220px; right:-60px; top:-60px; border-radius:50%;
  background:rgba(255,255,255,.12); pointer-events:none; transition:transform .3s ease;
}
.ss-card:hover, .ss-card:focus-visible{transform:translateY(-5px); box-shadow:0 24px 50px rgba(17,20,23,.26); outline:none;}
.ss-card:hover::after, .ss-card:focus-visible::after{transform:scale(1.15);}
.ss-card:focus-visible{box-shadow:0 0 0 4px #fff, 0 0 0 7px var(--gold), 0 24px 50px rgba(17,20,23,.26);}
.ss-fizjo{background:linear-gradient(140deg,rgba(13,148,136,.94),rgba(26,122,110,.94) 45%,rgba(34,197,94,.9));}
.ss-logo-card{background:linear-gradient(140deg,rgba(124,58,237,.94),rgba(168,85,247,.92) 50%,rgba(236,72,153,.9)); animation-delay:.08s;}
.ss-icon{width:62px; height:62px; border-radius:18px; display:flex; align-items:center; justify-content:center;
  background:rgba(255,255,255,.2); border:1px solid rgba(255,255,255,.35); margin-bottom:8px;}
.ss-icon svg{width:42px; height:42px; color:#fff;}
.ss-name{font-size:1.6rem; font-weight:800; letter-spacing:-.01em;}
.ss-desc{font-size:.9rem; opacity:.92; line-height:1.4; max-width:30ch;}
.ss-people{margin-top:auto; padding-top:12px; padding-right:92px; font-size:.78rem; font-weight:600; opacity:.88;}
.ss-go{position:absolute; right:20px; bottom:18px; font-weight:700; font-size:.9rem;
  background:rgba(255,255,255,.22); padding:6px 12px; border-radius:999px; transition:background .15s ease;}
.ss-card:hover .ss-go{background:rgba(255,255,255,.36);}
.ss-key{position:absolute; right:20px; top:18px; width:26px; height:26px; border-radius:8px; font-size:.78rem; font-weight:700;
  display:flex; align-items:center; justify-content:center; background:rgba(255,255,255,.2); border:1px solid rgba(255,255,255,.4);}

.ss-orto{margin-top:20px; border:1px solid rgba(17,20,23,.12); background:rgba(255,255,255,.6); color:var(--ink);
  border-radius:999px; padding:9px 18px; font:inherit; font-size:.85rem; font-weight:600; cursor:pointer; transition:background .15s, border-color .15s;}
.ss-orto:hover, .ss-orto:focus-visible{background:#fff; border-color:var(--gold); outline:none;}

@media (prefers-color-scheme: dark){
  .start-screen{background:rgba(10,14,13,.5);}
  .ss-panel{background:rgba(24,32,29,.6); border-color:rgba(255,255,255,.1); box-shadow:0 30px 80px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.06);}
  .ss-title{color:#f5f1e6;}
  .ss-orto{background:rgba(255,255,255,.08); color:#f5f1e6; border-color:rgba(255,255,255,.15);}
  .ss-orto:hover, .ss-orto:focus-visible{background:rgba(255,255,255,.14);}
  .ss-blob{opacity:.3;}
}
@media (max-width:680px){
  .ss-panel{padding:24px 16px 18px; border-radius:22px;}
  .ss-choices{grid-template-columns:1fr; gap:14px;}
  .ss-card{min-height:190px;}
  .ss-title{font-size:1.5rem;}
  .ss-key{display:none;}
}
@media (prefers-reduced-motion: reduce){
  .start-screen,.ss-panel,.ss-card,.ss-blob{animation:none !important;}
  .ss-card{transition:none;}
}

/* przycisk powrotu do planszy */
.btn-dept{white-space:nowrap;}

/* =====================================================================
   ZATWIERDZANIE ĆWICZEŃ LOGOPEDYCZNYCH
   ===================================================================== */
.ex-pending{background:var(--amber-bg); color:var(--amber);}
.exercise-card.ex-card-pending{border-color:var(--amber); border-style:dashed;}
.btn-approve{background:var(--green); color:#fff;}
.btn-approve:hover{background:#12813b;}
.approval-bar{display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap;
  border-left:4px solid var(--amber); margin-bottom:14px;}
.approval-bar.done{border-left-color:var(--green);}
.approval-bar .ab-text{display:flex; flex-direction:column; gap:4px; flex:1; min-width:260px; font-size:.86rem;}
.approval-bar .ab-text span{color:var(--muted);}
.ab-progress{height:6px; border-radius:6px; background:var(--gray-bg); overflow:hidden; margin-top:4px; max-width:420px;}
.ab-progress div{height:100%; background:linear-gradient(90deg,var(--amber),var(--green)); border-radius:6px;}
.ab-filter{font-size:.84rem; display:flex; align-items:center; gap:6px; cursor:pointer; white-space:nowrap;}
@media (prefers-color-scheme: dark){ .ex-pending{background:#3a2a10; color:#f6b54a;} }
.ex-approved{font-size:.76rem; color:var(--green); margin-top:6px;}

/* =====================================================================
   PANEL REJESTRACJI
   ===================================================================== */
:root{ --dz-fizjo:#0d9488; --dz-fizjo-bg:#ccfbf1; --dz-logo:#7c3aed; --dz-logo-bg:#ede9fe; }
@media (prefers-color-scheme: dark){ :root{ --dz-fizjo:#2dd4bf; --dz-fizjo-bg:#123d39; --dz-logo:#a78bfa; --dz-logo-bg:#2e2350; } }
body.mode-rej .tabs, body.mode-rej .global-search{display:none;}

.rj-bar{display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap;
  background:var(--ink); border-radius:12px; padding:5px 6px; margin-bottom:16px;}
.rj-tabs{display:flex; gap:2px; flex-wrap:wrap;}
.rj-tab{background:none; border:none; color:#cfd6d3; font:inherit; font-size:.88rem; font-weight:600; padding:9px 14px; border-radius:9px; cursor:pointer; display:flex; align-items:center; gap:6px;}
.rj-tab:hover{color:#fff; background:rgba(255,255,255,.07);}
.rj-tab.active{background:var(--gold); color:var(--ink);}
.rj-count{background:var(--red); color:#fff; border-radius:999px; font-size:.7rem; padding:1px 7px;}
.rj-quick{display:flex; gap:6px; flex-wrap:wrap; padding-right:4px;}
.rj-quick .btn-secondary{background:rgba(255,255,255,.1); color:#fff; border-color:rgba(255,255,255,.25);}
.rj-quick .btn-secondary:hover{background:rgba(255,255,255,.18);}

.rj-daynav{display:flex; align-items:center; gap:10px; margin-bottom:12px; flex-wrap:wrap;}
.rj-daynav .spacer{flex:1;}
.rj-dayname{font-size:1.15rem; font-weight:800; min-width:250px; text-align:center; text-transform:capitalize;}
.rj-stats{margin-bottom:16px;}
.stat-card.rj-alert{border-top-color:var(--red);}
.stat-card.rj-alert .value{color:var(--red);}
.stat-card .sub{font-size:.74rem; color:var(--muted); margin-top:2px;}
.rj-total .value{font-size:1.35rem;}

.rj-day-layout{display:grid; grid-template-columns:1fr 330px; gap:16px; align-items:start;}
.rj-cols{display:grid; grid-template-columns:1fr 1fr; gap:16px; align-items:start;}
.rj-col{padding:0; overflow:hidden; margin:0;}
.rj-col-head{display:flex; justify-content:space-between; align-items:center; padding:12px 16px; color:#fff; font-weight:800; font-size:1rem;}
.rj-col.dz-fizjo .rj-col-head{background:linear-gradient(120deg,#0d9488,#1A7A6E 60%,#22c55e);}
.rj-col.dz-logo .rj-col-head{background:linear-gradient(120deg,#7c3aed,#a855f7 60%,#ec4899);}
.rj-col-n{background:rgba(255,255,255,.25); border-radius:999px; padding:1px 10px; font-size:.85rem;}
.rj-col > .rj-visit, .rj-col > .hint{margin-left:10px; margin-right:10px;}
.rj-col .cal-add{margin:8px 10px 12px; width:calc(100% - 20px);}
.rj-side{display:flex; flex-direction:column; gap:16px;}
.rj-side .card{margin:0;}

.rj-visit{display:grid; grid-template-columns:62px 1fr auto; gap:10px; align-items:center; padding:10px 8px; border-bottom:1px solid var(--border);}
.rj-visit:last-of-type{border-bottom:none;}
.rj-time{font-weight:800; font-size:1.05rem; color:var(--text); display:flex; flex-direction:column;}
.rj-time small{font-size:.7rem; color:var(--muted); font-weight:600;}
.rj-vname{font-weight:700; font-size:.92rem;}
.rj-vname a{color:inherit; text-decoration:none;}
.rj-vname a:hover{text-decoration:underline; text-decoration-color:var(--gold);}
.rj-vmeta{font-size:.78rem; color:var(--muted); margin-top:2px;}
.rj-vstat{margin-top:4px; display:flex; gap:6px; align-items:center; flex-wrap:wrap; font-size:.78rem;}
.rj-vact{display:flex; gap:4px; align-items:center; flex-wrap:wrap; justify-content:flex-end;}
.rj-visit.st-odwolana, .rj-visit.st-nieobecny{opacity:.6;}
.rj-visit.st-odwolana .rj-vname{text-decoration:line-through;}
.rj-paid{color:var(--green); font-weight:700; font-size:.78rem;}
.rj-unpaid{color:var(--red); font-weight:700; font-size:.78rem;}
.btn-ghost{background:transparent; color:var(--muted); border:1px solid var(--border);}
.btn-ghost:hover{background:var(--gray-bg); color:var(--text);}

.rj-todo{display:flex; justify-content:space-between; align-items:center; gap:10px; padding:9px 10px; border-radius:10px; background:var(--gray-bg); margin-bottom:6px; border-left:3px solid var(--gold);}
.rj-todo.pilne{border-left-color:var(--red);}
.dz-txt-fizjo{color:var(--dz-fizjo);} .dz-txt-logo{color:var(--dz-logo);}
.rj-dz-dot{display:inline-block; width:9px; height:9px; border-radius:50%; vertical-align:middle;}
.rj-dz-dot.dz-fizjo{background:var(--dz-fizjo);} .rj-dz-dot.dz-logo{background:var(--dz-logo);}

.rj-week{display:grid; grid-template-columns:repeat(6, minmax(0,1fr)); gap:8px;}
.rj-chip{border-radius:8px; padding:6px 8px; margin-bottom:5px; font-size:.78rem; cursor:pointer; border-left:4px solid; line-height:1.3;}
.rj-chip small{display:block; opacity:.8; font-size:.7rem;}
.rj-chip.dz-fizjo{background:var(--dz-fizjo-bg); border-color:var(--dz-fizjo);}
.rj-chip.dz-logo{background:var(--dz-logo-bg); border-color:var(--dz-logo);}
.rj-chip:hover{filter:brightness(.97); box-shadow:var(--shadow);}
.rj-chip.st-odwolana{text-decoration:line-through; opacity:.55;}
.rj-chip.st-nieobecny{opacity:.55;}
.rj-chip.st-odbyta{opacity:.75;}
.rj-filter{display:flex; gap:4px; flex-wrap:wrap;}
.op-stage.rj-f-fizjo.active{background:var(--dz-fizjo); border-color:var(--dz-fizjo);}
.op-stage.rj-f-logo.active{background:var(--dz-logo); border-color:var(--dz-logo);}
.rj-legend{display:flex; gap:16px; font-size:.78rem; color:var(--muted); margin-top:10px;}
.rj-legend i{display:inline-block; width:12px; height:12px; border-radius:3px; vertical-align:-1px; margin-right:4px;}
.rj-legend i.dz-fizjo{background:var(--dz-fizjo);} .rj-legend i.dz-logo{background:var(--dz-logo);}

.rj-sub{font-size:.72rem; text-transform:uppercase; letter-spacing:.05em; font-weight:700; color:var(--muted); margin:10px 0 2px;}
.rj-stack{display:flex; flex-direction:column; gap:16px;}
.rj-stack .card{margin:0;}
.rj-karnet{display:flex; justify-content:space-between; align-items:center; gap:10px; padding:10px 12px; border-radius:10px; margin-bottom:8px; border-left:4px solid;}
.rj-karnet.dz-fizjo{background:var(--dz-fizjo-bg); border-color:var(--dz-fizjo);}
.rj-karnet.dz-logo{background:var(--dz-logo-bg); border-color:var(--dz-logo);}
.rj-karnet > div{flex:1;}
.rj-kbar{height:5px; background:rgba(0,0,0,.08); border-radius:5px; margin-top:6px; overflow:hidden; max-width:260px;}
.rj-kbar div{height:100%; background:var(--gold); border-radius:5px;}
.rj-upload{margin-top:6px; cursor:pointer;}
.rj-todo-card{border-left:4px solid var(--gold);}

.rj-table{width:100%; min-width:0; border-collapse:collapse; font-size:.84rem;}
.rj-table th{text-align:left; font-size:.72rem; text-transform:uppercase; letter-spacing:.04em; color:var(--muted); padding:6px 8px; border-bottom:1px solid var(--border);}
.rj-table td{padding:7px 8px; border-bottom:1px solid var(--border);}
.rj-table .num{text-align:right; white-space:nowrap;}
.rj-table tr.rj-low td{background:var(--amber-bg);}
.rj-table a{color:inherit;}

.rj-rem-head{display:flex; justify-content:space-between; gap:12px; flex-wrap:wrap; align-items:flex-start; margin-bottom:12px;}
.rj-rem-day{font-size:.85rem; display:flex; gap:8px; align-items:center;}
.rj-rem-sum{display:flex; gap:12px; align-items:center; flex-wrap:wrap; padding:10px 12px; background:var(--gray-bg); border-radius:10px; margin-bottom:8px; font-size:.88rem;}
.rj-rem{display:grid; grid-template-columns:14px 1fr auto; gap:10px; align-items:start; padding:10px 4px; border-bottom:1px solid var(--border);}
.rj-rem .rj-dz-dot{margin-top:6px;}
.rj-rem.sent{opacity:.65;}
.rj-rem-text{font-size:.78rem; color:var(--muted); margin-top:4px; font-style:italic;}

.rj-modal .rj-psel{width:100%; min-height:120px;}
.rj-conflict{background:var(--amber-bg); color:var(--amber); padding:8px 10px; border-radius:8px; font-size:.84rem; margin-top:8px;}
.rj-conflict.hidden{display:none;}
.rj-ci-head{padding:10px 12px; background:var(--gray-bg); border-radius:10px; margin-bottom:12px; font-size:.9rem;}
.rj-pay-opts{display:flex; flex-direction:column; gap:8px;}
.rj-opt{display:flex; gap:10px; align-items:flex-start; padding:10px 12px; border:1px solid var(--border); border-radius:10px; cursor:pointer;}
.rj-opt:has(input:checked){border-color:var(--gold); background:var(--gold-bg);}
.rj-opt > span{display:flex; flex-direction:column; gap:2px;}
.rj-opt small{color:var(--muted);}
.rj-pay-now{display:flex; gap:6px; margin-top:6px; flex-direction:row !important;}
.rj-pay-now input{width:120px;}

/* plansza startowa — rejestracja */
.ss-extra{display:flex; gap:10px; justify-content:center; flex-wrap:wrap; margin-top:20px;}
.ss-extra .ss-orto{margin-top:0;}
.ss-rej{border-color:var(--gold) !important;}
.ss-kbd{display:inline-flex; width:20px; height:20px; align-items:center; justify-content:center; border-radius:6px; font-size:.7rem; background:var(--gold-bg); margin-left:4px;}

@media (max-width:1100px){ .rj-day-layout{grid-template-columns:1fr;} }
@media (max-width:760px){ .rj-cols{grid-template-columns:1fr;} .rj-week{grid-template-columns:1fr 1fr;} .rj-visit{grid-template-columns:52px 1fr;} .rj-vact{grid-column:1/-1; justify-content:flex-start;} }
/* wiersz wizyty: przyciski pod danymi, żeby nie ściskały tekstu */
.rj-visit{grid-template-columns:62px 1fr; row-gap:6px;}
.rj-visit .rj-vact{grid-column:2; justify-content:flex-start;}
@media (prefers-color-scheme: dark){ .rj-bar{background:#1c2622; border:1px solid var(--border);} }

/* plansza startowa — kolorowe kafelki: Panel Rejestracyjny / Lekarz Koordynator */
.ss-extra{display:grid; grid-template-columns:1fr 1fr; gap:20px; margin-top:20px;}
.ss-mini{
  position:relative; overflow:hidden; display:flex; align-items:center; gap:14px; text-align:left;
  min-height:96px; padding:18px 22px; border:none; border-radius:20px; cursor:pointer; color:#fff; font:inherit;
  box-shadow:0 12px 28px rgba(17,20,23,.16); transition:transform .18s ease, box-shadow .18s ease;
  animation:ssRise .55s cubic-bezier(.2,.8,.2,1) both; animation-delay:.14s;
}
.ss-mini::before{content:""; position:absolute; inset:0; pointer-events:none; background:linear-gradient(160deg,rgba(255,255,255,.28),rgba(255,255,255,0) 45%);}
.ss-mini::after{content:""; position:absolute; width:150px; height:150px; right:-45px; top:-55px; border-radius:50%; background:rgba(255,255,255,.12); pointer-events:none; transition:transform .3s ease;}
.ss-mini:hover, .ss-mini:focus-visible{transform:translateY(-4px); box-shadow:0 20px 42px rgba(17,20,23,.24); outline:none;}
.ss-mini:hover::after, .ss-mini:focus-visible::after{transform:scale(1.15);}
.ss-mini:focus-visible{box-shadow:0 0 0 4px #fff, 0 0 0 7px var(--gold), 0 20px 42px rgba(17,20,23,.24);}
.ss-rej-card{background:linear-gradient(140deg,rgba(201,168,76,.96),rgba(217,119,6,.94) 55%,rgba(234,88,12,.9));}
.ss-orto-card{background:linear-gradient(140deg,rgba(37,99,235,.95),rgba(14,116,144,.93) 55%,rgba(6,182,212,.9)); animation-delay:.2s;}
.ss-mini-icon{flex:none; width:52px; height:52px; border-radius:16px; display:flex; align-items:center; justify-content:center; font-size:1.6rem;
  background:rgba(255,255,255,.2); border:1px solid rgba(255,255,255,.35);}
.ss-mini-text{display:flex; flex-direction:column; gap:3px; position:relative; z-index:1;}
.ss-mini-name{font-size:1.2rem; font-weight:800; letter-spacing:-.01em;}
.ss-mini-desc{font-size:.8rem; opacity:.92; line-height:1.35;}
.ss-mini-key{position:absolute; right:16px; top:14px; width:24px; height:24px; border-radius:8px; font-size:.74rem; font-weight:700;
  display:flex; align-items:center; justify-content:center; background:rgba(255,255,255,.2); border:1px solid rgba(255,255,255,.4);}
@media (max-width:640px){ .ss-extra{grid-template-columns:1fr; gap:14px;} .ss-mini-key{display:none;} }
@media (prefers-reduced-motion: reduce){ .ss-mini{animation:none !important; transition:none;} }
.ss-mini-person{font-size:.78rem; font-weight:700; opacity:.95; margin-top:2px;}
/* Administrator — podłużny, niższy kafelek na całą szerokość pod pozostałymi */
.ss-admin-card{grid-column:1 / -1; min-height:62px; padding:12px 22px; border-radius:16px; animation-delay:.26s;
  background:linear-gradient(140deg,rgba(31,41,55,.95),rgba(55,65,81,.94) 55%,rgba(100,116,139,.9));}
.ss-admin-card .ss-mini-icon{width:38px; height:38px; border-radius:12px; font-size:1.15rem;}
.ss-admin-card .ss-mini-text{flex-direction:row; align-items:baseline; gap:12px; flex-wrap:wrap;}
.ss-admin-card .ss-mini-name{font-size:1.05rem;}
.ss-admin-card .ss-mini-key{top:50%; transform:translateY(-50%);}
.ss-pin{grid-column:1 / -1; display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:12px; padding:22px; border-radius:20px; color:#fff;
  background:linear-gradient(140deg,rgba(31,41,55,.95),rgba(55,65,81,.94) 55%,rgba(100,116,139,.9)); box-shadow:0 12px 28px rgba(17,20,23,.16);}
.ss-pin-in{width:160px; padding:11px 14px; border-radius:12px; border:1px solid rgba(255,255,255,.4); background:rgba(255,255,255,.14); color:#fff; font:inherit; font-size:1.1rem; letter-spacing:.3em; text-align:center;}
.ss-pin-in::placeholder{color:rgba(255,255,255,.7); letter-spacing:normal;}
.ss-pin-in:focus{outline:2px solid var(--gold); outline-offset:2px;}
.ss-pin-go{padding:11px 18px; border-radius:12px; border:1px solid rgba(255,255,255,.4); background:rgba(255,255,255,.22); color:#fff; font:inherit; font-weight:700; cursor:pointer; width:auto;}
.ss-pin-go:hover{background:rgba(255,255,255,.34);}
.ss-pin-err{flex-basis:100%; text-align:center; font-size:.85rem; font-weight:600; color:#fecaca; min-height:1.1em;}

/* ---- Zalecenia ortodonty: źródło treści (z ręki / wklej / lista gotowych) ---- */
.orto-src{display:flex; flex-wrap:wrap; gap:6px; margin-bottom:8px;}
.orto-src-btn{border:1px solid var(--border); background:var(--card); color:var(--text); border-radius:999px; padding:6px 12px; font-size:.8rem; font-weight:600; cursor:pointer; width:auto;}
.orto-src-btn:hover{border-color:var(--primary);}
.orto-src-btn.active{background:var(--primary); border-color:var(--primary); color:#fff;}
.orto-src-panel{margin-bottom:8px;}
.orto-src-panel .hint{margin:0;}
.orto-paste{display:flex; flex-wrap:wrap; align-items:center; gap:8px;}
.orto-paste .hint{flex-basis:100%;}
.orto-tpl-bar{display:flex; flex-direction:column; gap:4px; margin-bottom:6px;}
.orto-tpl-bar input{width:100%; padding:7px 10px; border:1px solid var(--border); border-radius:8px; background:var(--card); color:var(--text); font:inherit; font-size:.84rem;}
.orto-tpl-list{max-height:340px; overflow-y:auto; border:1px solid var(--border); border-radius:10px; background:var(--card);}
.orto-tpl-group{position:sticky; top:0; z-index:1; background:var(--bg); font-size:.7rem; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--muted); padding:6px 10px; border-bottom:1px solid var(--border);}
.orto-tpl{display:flex; gap:10px; align-items:flex-start; padding:8px 10px; border-bottom:1px solid var(--border);}
.orto-tpl:last-child{border-bottom:none;}
.orto-tpl-main{flex:1; min-width:0;}
.orto-tpl-title{font-weight:700; font-size:.84rem;}
.orto-tpl-text{font-size:.78rem; color:var(--muted); line-height:1.35; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;}
.orto-tpl:hover .orto-tpl-text{-webkit-line-clamp:unset;}
.orto-tpl-btns{display:flex; gap:4px; flex-shrink:0;}
.orto-tpl-foot{margin-top:6px;}
@media (max-width:640px){ .orto-tpl{flex-direction:column;} }

/* ---- Szybkie dodanie pacjenta przez Lekarza Koordynatora + historia zaleceń ---- */
.op-addpat{width:100%;}
.op-pfill{display:inline-block; background:var(--amber-bg, #fef3c7); color:var(--amber, #b45309); border-radius:999px; padding:1px 7px; font-size:.68rem; font-weight:700; vertical-align:middle;}
.rj-fill-card{border-left:4px solid var(--amber, #d97706);}
.rj-fill{border-left-color:var(--amber, #d97706);}
.oh-card{border-left:4px solid var(--border);}
.oh-head{display:flex; align-items:center; justify-content:space-between; gap:8px;}
.oh-list{display:flex; flex-direction:column; gap:14px; max-height:560px; overflow-y:auto; padding-right:4px;}
.oh-day{border-left:2px solid var(--border); padding-left:12px; position:relative;}
.oh-day::before{content:''; position:absolute; left:-6px; top:4px; width:10px; height:10px; border-radius:50%; background:var(--primary);}
.oh-date{font-weight:800; font-size:.82rem; margin-bottom:6px;}
.oh-item{border:1px solid var(--border); border-radius:10px; padding:8px 10px; background:var(--card); margin-bottom:6px;}
.oh-item.done{opacity:.75;}
.oh-foot{display:flex; justify-content:space-between; align-items:center; gap:8px; flex-wrap:wrap; margin-top:6px;}
.oh-visits{font-size:.72rem; color:var(--muted); margin-top:2px;}

/* Historia zaleceń — kafelek zwijany, domyślnie zwinięty */
.oh-head{cursor:pointer; border-radius:8px; margin:-4px; padding:4px; user-select:none;}
.oh-head:hover{background:var(--bg, rgba(0,0,0,.03));}
.oh-head:focus-visible{outline:2px solid var(--primary); outline-offset:2px;}
.oh-sub{font-size:.78rem; color:var(--muted); margin-top:3px;}
.oh-chev{pointer-events:none;}

/* =====================================================================
   DOKUMENTY — wygląd wydruku / PDF (.dvd) i okno „Dokumenty” (.dc-*)
   ===================================================================== */
.dvd{background:#fff; color:#1f2937; font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif; font-size:13px; line-height:1.45;}
.dvd .dvd-head{display:flex; justify-content:space-between; align-items:flex-start; gap:16px; padding-bottom:10px; border-bottom:2px solid #C9A84C; margin-bottom:14px;}
.dvd .dvd-brand{display:flex; align-items:center; gap:12px;}
.dvd .dvd-logo{height:48px; width:auto;}
.dvd .dvd-clinic{font-size:11px; color:#4b5563; line-height:1.4;}
.dvd .dvd-clinic b{color:#111417; font-size:12px;}
.dvd .dvd-meta{font-size:11px; color:#4b5563; text-align:right; line-height:1.55;}
.dvd .dvd-meta b{color:#111417;}
.dvd h1.dvd-title{font-size:19px; margin:0 0 12px; color:#1A7A6E; font-weight:800; letter-spacing:-.01em;}
.dvd h3{font-size:13.5px; margin:16px 0 6px; color:#1A7A6E; padding-bottom:3px; border-bottom:1px solid #e6e1d4; break-after:avoid; page-break-after:avoid;}
.dvd .dvd-patient{display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:6px 18px; background:#f7f5ef; border:1px solid #e6e1d4; border-radius:8px; padding:10px 12px;}
.dvd .dvd-patient span{display:block; font-size:10px; text-transform:uppercase; letter-spacing:.04em; color:#6b7280;}
.dvd .dvd-patient b{font-weight:700;}
.dvd table{width:100%; min-width:0; border-collapse:collapse; font-size:12px;}
.dvd th{background:#f1eee5; color:#374151; font-weight:700; font-size:11px;}
.dvd th, .dvd td{padding:5px 8px; border-bottom:1px solid #e6e1d4; text-align:left; vertical-align:top;}
.dvd tr{break-inside:avoid; page-break-inside:avoid;}
.dvd .num{text-align:right; white-space:nowrap;}
.dvd .dvd-stage td{font-weight:700; background:#e2f1ed;}
.dvd .dvd-total td{font-weight:800; border-top:2px solid #1f2937;}
.dvd ul, .dvd ol{margin:4px 0; padding-left:20px;}
.dvd .dvd-item{border:1px solid #e6e1d4; border-radius:8px; padding:7px 10px; margin-bottom:6px; break-inside:avoid; page-break-inside:avoid;}
.dvd ol.dvd-ex{padding-left:0; list-style:none; counter-reset:dvdex;}
.dvd ol.dvd-ex > li{counter-increment:dvdex; position:relative; padding-left:34px;}
.dvd ol.dvd-ex > li::before{content:counter(dvdex); position:absolute; left:9px; top:7px; width:18px; height:18px; border-radius:50%; background:#1A7A6E; color:#fff; font-size:10px; font-weight:700; display:flex; align-items:center; justify-content:center;}
.dvd .dvd-item-head{font-size:11px; color:#6b7280; margin-bottom:2px;}
.dvd .dvd-red{color:#dc2626;}
.dvd .dvd-muted{color:#6b7280;}
.dvd .dvd-warn{margin-top:3px; font-size:11.5px; color:#92400e;}
.dvd .dvd-check{margin-top:4px; font-size:11px; color:#6b7280; letter-spacing:.02em;}
.dvd .dvd-note{font-size:11.5px; color:#4b5563; font-style:italic;}
.dvd .dvd-sign{display:flex; justify-content:space-between; align-items:flex-end; gap:20px; margin-top:28px; break-inside:avoid; page-break-inside:avoid;}
.dvd .dvd-stamp{width:220px; height:78px; border:1px dashed #9ca3af; border-radius:6px; display:flex; align-items:flex-end; justify-content:center; padding-bottom:5px; font-size:10px; color:#9ca3af;}
.dvd .dvd-zgod{font-weight:700; margin-bottom:6px;}
.dvd .dvd-rodo{margin-top:16px; font-size:9.5px; color:#9ca3af; border-top:1px solid #e6e1d4; padding-top:6px;}
.dvd .dvd-sigcell{min-width:90px;}
.dvd-wykaz table{font-size:11px;}

/* okno „Dokumenty” */
.modal.dc-modal{max-width:1180px; width:100%; padding:18px 20px;}
.dc-top{display:flex; justify-content:space-between; align-items:center; gap:10px; margin-bottom:12px;}
.dc-top h2{margin:0;}
.dc-grid{display:grid; grid-template-columns:330px minmax(0,1fr); gap:18px;}
.dc-side{display:flex; flex-direction:column; gap:12px; max-height:calc(92vh - 90px); overflow-y:auto; padding-right:4px;}
.dc-block{border:1px solid var(--border); border-radius:10px; padding:10px 12px; display:flex; flex-direction:column; gap:7px;}
.dc-label{font-size:.7rem; font-weight:800; text-transform:uppercase; letter-spacing:.06em; color:var(--muted);}
.dc-presets{display:flex; flex-wrap:wrap; gap:5px;}
.dc-preset{border:1px solid var(--border); background:var(--card); color:var(--text); border-radius:999px; padding:4px 10px; font-size:.76rem; font-weight:600; cursor:pointer; font-family:inherit;}
.dc-preset:hover{border-color:var(--primary);}
.dc-preset.active{background:var(--primary); border-color:var(--primary); color:#fff;}
.dc-input{width:100%; padding:7px 10px; border:1px solid var(--border); border-radius:8px; background:var(--card); color:var(--text); font:inherit; font-size:.85rem;}
.dc-secs{display:flex; flex-direction:column; gap:2px;}
.dc-sec{display:flex; align-items:center; gap:8px; font-size:.84rem; padding:3px 4px; border-radius:6px; cursor:pointer;}
.dc-sec:hover{background:var(--gray-bg);}
.dc-sec span{flex:1;}
.dc-sec em{font-style:normal; font-size:.7rem; font-weight:700; color:var(--muted); background:var(--gray-bg); border-radius:999px; padding:0 7px;}
.dc-sec.is-empty span{color:var(--muted);}
.dc-opts{display:flex; flex-direction:column; gap:4px; border-top:1px dashed var(--border); padding-top:7px; font-size:.8rem;}
.dc-opts label, .dc-lock{display:flex; gap:7px; align-items:flex-start; cursor:pointer;}
.dc-lock{font-weight:700; font-size:.86rem;}
.dc-kod{background:var(--gold-bg, #f6efdc); border-radius:8px; padding:8px 10px; font-size:.84rem;}
.dc-kod b{font-size:1.15rem; letter-spacing:.18em; font-variant-numeric:tabular-nums;}
.dc-kod.hidden{display:none;}
.dc-kod-actions{display:flex; gap:6px; margin:6px 0 4px; flex-wrap:wrap;}
.dc-hint{font-size:.74rem; color:var(--muted);}
.dc-main{display:flex; flex-direction:column; gap:10px; min-width:0;}
.dc-preview-wrap{background:#e9e6dd; border-radius:10px; padding:16px; max-height:calc(92vh - 210px); min-height:300px; overflow:auto;}
.dc-preview{background:#fff; max-width:760px; margin:0 auto; padding:28px 32px; box-shadow:0 2px 10px rgba(0,0,0,.12); border-radius:2px;}
.dc-actions{display:flex; gap:8px; justify-content:flex-end; flex-wrap:wrap;}
.dc-foot{text-align:right;}
.dc-msg{border-radius:8px; padding:8px 12px; font-size:.84rem; background:var(--gray-bg);}
.dc-msg.hidden{display:none;}
.dc-msg-ok{background:var(--green-bg); color:#14532d;}
.dc-msg-warn{background:var(--amber-bg); color:#7c2d12;}
@media (prefers-color-scheme: dark){ .dc-preview-wrap{background:#0b100e;} .dc-msg-ok{color:#bbf7d0; background:#14352a;} .dc-msg-warn{color:#fde68a; background:#3a2a10;} }
@media (max-width: 860px){ .dc-grid{grid-template-columns:1fr;} .dc-side{max-height:none;} .dc-preview{padding:16px;} }

/* wykaz udostępnień */
.dw-head{display:flex; justify-content:space-between; align-items:center; gap:10px; flex-wrap:wrap;}
.dw-filters{display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-bottom:10px; font-size:.82rem;}
.dw-filters input[type=date], .dw-filters input[type=search]{padding:6px 9px; border:1px solid var(--border); border-radius:8px; background:var(--card); color:var(--text); font:inherit; font-size:.82rem;}
.dw-filters input[type=search]{min-width:220px; flex:1;}
.dw-chk{display:flex; gap:6px; align-items:center;}
.dw-table-wrap{overflow-x:auto;}
.dw-table{width:100%; border-collapse:collapse; font-size:.82rem;}
.dw-table th, .dw-table td{padding:7px 8px; border-bottom:1px solid var(--border); text-align:left; vertical-align:top;}
.dw-table th{font-size:.72rem; text-transform:uppercase; letter-spacing:.04em; color:var(--muted);}
.dw-sub{font-size:.74rem; color:var(--muted);}
.dw-wewn{opacity:.6;}
.dvd-pdf{width:100%;}

/* ---- terapeuta przyjmujący pacjenta + odpowiedzi na zalecenia ---- */
.visit-chip .vc-ter{font-size:.72rem; font-weight:700; color:var(--primary);}
.visit-chip .vc-ter.none{color:var(--amber); font-weight:600;}
.cal-ter-filter{padding:6px 10px; border:1px solid var(--border); border-radius:8px; background:var(--card); color:var(--text); font:inherit; font-size:.8rem; margin-left:8px;}
.ter-cell{display:flex; flex-wrap:wrap; gap:4px 8px;}
.ter-name{font-weight:700; font-size:.82rem; white-space:nowrap;}
.ter-name small{font-weight:600; color:var(--muted); font-size:.68rem;}
.ter-none{color:var(--muted); font-size:.8rem;}
.ter-role{display:block; color:var(--muted); font-size:.72rem; margin-top:2px;}
.op-pter{font-size:.74rem; margin-top:2px;}
.op-pter .ter-name{font-size:.74rem; font-weight:600;}
.op-pter .ter-none{font-size:.72rem;}
.op-preply{display:inline-block; background:var(--primary); color:#fff; border-radius:999px; padding:0 7px; font-size:.68rem; font-weight:700; vertical-align:middle;}
.orto-replies{margin-top:8px; display:flex; flex-direction:column; gap:6px; border-left:3px solid var(--primary); padding-left:10px;}
.orto-reply{background:var(--primary-bg); border-radius:8px; padding:6px 9px; font-size:.84rem;}
.orto-reply.is-new{outline:2px solid var(--gold, #C9A84C);}
.orto-reply-head{font-size:.74rem; color:var(--muted); margin-bottom:2px;}
.orto-reply-head b{color:var(--text);}
.orto-reply-role{font-size:.68rem; background:var(--card); border-radius:999px; padding:0 6px;}
.orto-reply-text{white-space:normal;}
.orto-reply-form{display:flex; flex-direction:column; gap:6px;}
.orto-reply-form textarea{width:100%; min-height:70px; padding:8px 10px; border:1px solid var(--border); border-radius:8px; background:var(--card); color:var(--text); font:inherit; font-size:.86rem; resize:vertical;}
.orto-reply-form select{padding:5px 8px; border:1px solid var(--border); border-radius:7px; background:var(--card); color:var(--text); font:inherit; font-size:.8rem;}

/* ---- terminarz: przełącznik tydzień / miesiąc + widok miesiąca ---- */
.cal-nav{flex-wrap:wrap;}
.cal-viewsw{display:inline-flex; border:1px solid var(--border); border-radius:9px; overflow:hidden; background:var(--card);}
.cal-vbtn{border:none; background:transparent; color:var(--muted); font:inherit; font-size:.8rem; font-weight:700; padding:6px 12px; cursor:pointer;}
.cal-vbtn + .cal-vbtn{border-left:1px solid var(--border);}
.cal-vbtn.active{background:var(--primary); color:#fff;}
.cal-grid.cal-month{gap:6px; grid-template-columns:repeat(7, minmax(0,1fr));}
.cm-dow{font-size:.72rem; font-weight:800; text-transform:uppercase; letter-spacing:.05em; color:var(--muted); padding:0 4px;}
.cm-dow.we{color:var(--gold-dark, #a78a36);}
.cm-day{background:var(--card); border:1px solid var(--border); border-radius:10px; padding:6px; min-height:112px; display:flex; flex-direction:column; gap:3px; cursor:pointer; min-width:0;}
.cm-day:hover{border-color:var(--primary);}
.cm-day.we{background:var(--gray-bg);}
.cm-day.out{opacity:.45;}
.cm-day.is-today{border-color:var(--primary); box-shadow:0 0 0 2px var(--primary-bg);}
.cm-head{display:flex; justify-content:space-between; align-items:center;}
.cm-num{border:none; background:transparent; font:inherit; font-weight:800; font-size:.9rem; color:var(--text); cursor:pointer; padding:0 4px; border-radius:6px;}
.cm-num:hover{background:var(--primary-bg); color:var(--primary);}
.cm-day.is-today .cm-num{background:var(--primary); color:#fff;}
.cm-count{font-size:.66rem; font-weight:800; color:var(--primary); background:var(--primary-bg); border-radius:999px; padding:0 6px;}
.cm-visit{font-size:.72rem; line-height:1.3; background:var(--primary-bg); border-left:3px solid var(--primary); border-radius:5px; padding:2px 5px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; cursor:pointer;}
.cm-visit:hover{filter:brightness(.96);}
.cm-visit.new{border-left-color:var(--teal); background:var(--teal-bg);}
.cm-visit.noter{border-left-color:var(--amber);}
.cm-visit.status-odbyta{opacity:.7;}
.cm-visit.status-odwolana{opacity:.45; text-decoration:line-through;}
.cm-ter{margin-left:4px; color:var(--muted); font-size:.68rem;}
.cm-visit.noter .cm-ter{color:var(--amber);}
.cm-more{border:none; background:transparent; color:var(--primary); font:inherit; font-size:.7rem; font-weight:700; text-align:left; padding:0 4px; cursor:pointer;}
@media (max-width:920px){
  .cal-grid.cal-month{grid-template-columns:repeat(7, minmax(0,1fr));}
  .cm-day{min-height:70px; padding:4px;}
  .cm-visit{font-size:0; padding:0; height:6px; border-left-width:0;}
  .cm-dow{font-size:.62rem;}
}

/* rejestracja — miesiąc: kolor wg działu */
.cm-visit.rj-cm.dz-fizjo{background:var(--dz-fizjo-bg); border-left-color:var(--dz-fizjo);}
.cm-visit.rj-cm.dz-logo{background:var(--dz-logo-bg); border-left-color:var(--dz-logo);}
.cm-visit.rj-cm.noter{box-shadow:inset 0 -2px 0 var(--amber);}
.cm-day.past{cursor:default;}

/* panel rejestracji: tabele nie wychodzą poza kartę */
.grid-2 > .card{min-width:0;}
.card:has(> .rj-table){overflow-x:auto;}
.rj-table td{overflow-wrap:anywhere;}

/* ogólnie: zawartość kart nie wychodzi poza ich obrys */
.card{min-width:0; max-width:100%;}
.card > table, .card table{max-width:100%;}
.card td, .card th{overflow-wrap:anywhere;}
.card td.num, .card th.num{white-space:nowrap; overflow-wrap:normal;}
.card .field-row > input, .card .field-row > select{min-width:0;}

/* =====================================================================
   TŁA WNĘTRZ OKIEN — zamiast beżu: prawie przezroczyste, świeże kolory
   (mięta → błękit → lawenda; odcień zależy od działu)
   ===================================================================== */
:root{
  --bg:#f3f7f7; --gray-bg:#ebf2f1; --border:#dbe6e4;
  --tint-1:rgba(26,122,110,0.093);   /* mięta */
  --tint-2:rgba(56,152,214,0.076);   /* błękit */
  --tint-3:rgba(139,120,230,0.068);   /* lawenda */
}
body.mode-logo{ --tint-1:rgba(139,92,246,0.093); --tint-2:rgba(236,110,170,0.06); --tint-3:rgba(56,152,214,0.068); }
body.mode-orto{ --tint-1:rgba(201,168,76,0.102);  --tint-2:rgba(26,122,110,0.068);   --tint-3:rgba(56,152,214,0.06); }
body.mode-rej { --tint-1:rgba(26,122,110,0.085);  --tint-2:rgba(139,92,246,0.068);   --tint-3:rgba(56,152,214,0.068); }
@media (prefers-color-scheme: dark){
  :root{ --bg:#0f1514; --gray-bg:#1c2624; --border:#2a3633;
    --tint-1:rgba(42,154,139,0.153); --tint-2:rgba(56,152,214,0.102); --tint-3:rgba(139,120,230,0.102); }
  body.mode-logo{ --tint-1:rgba(167,139,250,0.17); --tint-2:rgba(236,110,170,0.085); --tint-3:rgba(56,152,214,0.085); }
  body.mode-orto{ --tint-1:rgba(201,168,76,0.136); --tint-2:rgba(42,154,139,0.102); --tint-3:rgba(56,152,214,0.068); }
}
/* tło strony: delikatne plamy koloru zamiast płaskiego beżu */
body{
  background:
    radial-gradient(900px 600px at 0% 0%, var(--tint-1), transparent 65%),
    radial-gradient(900px 700px at 100% 40%, var(--tint-2), transparent 65%),
    radial-gradient(800px 600px at 30% 100%, var(--tint-3), transparent 65%),
    var(--bg);
  background-attachment:fixed;
}
/* wnętrza okien i kart: biel z lekką, ledwo widoczną poświatą */
.card, .modal, .table-wrap, .stat-card, .controls, .patient-header, .cal-day{
  background:
    radial-gradient(120% 90% at 0% 0%, var(--tint-1), transparent 60%),
    radial-gradient(120% 90% at 100% 100%, var(--tint-2), transparent 60%),
    linear-gradient(135deg, transparent 40%, var(--tint-3)),
    var(--card);
}
@media print{
  body, .card, .modal, .table-wrap, .stat-card{background:#fff !important;}
}

/* ---- Biblioteka ćwiczeń: dodawanie do planu leczenia pacjenta ---- */
.cw-patient-bar{display:flex; flex-wrap:wrap; gap:10px 16px; align-items:center; justify-content:space-between; margin-bottom:16px; padding:12px 14px;}
.cw-patient-bar .cpb-left{display:flex; flex-wrap:wrap; gap:8px 12px; align-items:center;}
.cw-patient-bar select{min-width:240px; max-width:100%;}
.cw-patient-bar .cpb-count{font-size:.85rem; color:var(--primary);}
.cw-patient-bar .cpb-actions{display:flex; gap:8px; flex-wrap:wrap;}
.exercise-card .ex-plan-btn{width:100%; margin-top:10px; background:var(--primary-bg); color:var(--primary); border:1px solid var(--primary); font-weight:700;}
.exercise-card .ex-plan-btn:hover:not(:disabled){background:var(--primary); color:#fff;}
.exercise-card .ex-plan-btn.in{background:var(--primary); color:#fff;}
.exercise-card .ex-plan-btn:disabled{opacity:.45; cursor:not-allowed;}
.exercise-card.in-plan{border-color:var(--primary); box-shadow:0 0 0 2px var(--primary-bg);}
@media (max-width:600px){ .cw-patient-bar select{min-width:0; width:100%;} .cw-patient-bar .cpb-left, .cw-patient-bar .cpb-actions{width:100%;} .cw-patient-bar .cpb-actions .btn{flex:1;} }

/* ---- potwierdzenie usuwania i kosz ćwiczeń ---- */
.dv-confirm{z-index:400;}
.dv-confirm .dvc-body p{margin:0 0 10px; font-size:.9rem; line-height:1.45;}
.dv-confirm .dvc-warn{color:var(--amber); background:var(--amber-bg); border-radius:8px; padding:8px 10px;}
.dv-confirm .dvc-hint{color:var(--muted); font-size:.84rem !important;}
.dv-confirm .dvc-check{display:flex; gap:8px; align-items:center; font-weight:600; margin:6px 0 4px; cursor:pointer;}
#exTrashOverlay{z-index:300;}
.trash-list{display:flex; flex-direction:column; gap:8px; max-height:55vh; overflow-y:auto;}
.trash-row{display:flex; justify-content:space-between; align-items:center; gap:10px; border:1px solid var(--border); border-radius:10px; padding:8px 12px;}

/* kafelek: dodaj / usuń z planu leczenia */
.exercise-card .ex-actions{gap:8px; flex-wrap:wrap;}
.exercise-card .ex-plan-btn{width:auto; margin-top:0;}
.exercise-card .ex-inplan{background:var(--primary); color:#fff;}
#exerciseForm .modal-actions .ex-del-link{color:var(--red, #c0392b); font-size:.8rem;}

/* ---------- plakietki na kafelkach ćwiczeń: nie wychodzą poza kartę ---------- */
.exercise-card{min-width:0; overflow:hidden;}
.exercise-card .ex-cat{max-width:100%; box-sizing:border-box; white-space:normal; overflow-wrap:anywhere; line-height:1.35; vertical-align:top; border-radius:10px;}
.exercise-card .badge + .badge.ex-cat{margin-left:0;}
.exercise-card .ex-cat{margin-right:4px;}

/* ---------- plansza startowa: wybór osoby w dziale ---------- */
.ss-choices.ss-people-step{grid-template-columns:repeat(auto-fit,minmax(220px,280px)); justify-content:center;}
.ss-person{min-height:200px; align-items:center; text-align:center; padding:26px 22px 60px;}
.ss-person .ss-name{font-size:1.45rem;}
.ss-person .ss-desc{font-size:.95rem; font-weight:600; max-width:none;}
.ss-person .ss-go{left:50%; right:auto; transform:translateX(-50%);}
.ss-avatar{width:76px; height:76px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  font-size:1.6rem; font-weight:800; letter-spacing:.02em; margin-bottom:8px;
  background:rgba(255,255,255,.22); border:2px solid rgba(255,255,255,.55); box-shadow:inset 0 1px 0 rgba(255,255,255,.4);}
.ss-person-0{background:linear-gradient(140deg,rgba(13,148,136,.95),rgba(16,185,129,.92) 55%,rgba(132,204,22,.88));}
.ss-person-1{background:linear-gradient(140deg,rgba(14,116,144,.95),rgba(13,148,136,.93) 50%,rgba(56,189,248,.9));}
.ss-person-2{background:linear-gradient(140deg,rgba(5,150,105,.95),rgba(20,184,166,.92) 55%,rgba(201,168,76,.9));}
.ss-person-3{background:linear-gradient(140deg,rgba(21,128,61,.95),rgba(13,148,136,.92) 55%,rgba(6,182,212,.88));}
.ss-person-logo.ss-person-0{background:linear-gradient(140deg,rgba(124,58,237,.94),rgba(168,85,247,.92) 50%,rgba(236,72,153,.9));}
.ss-person-logo.ss-person-1{background:linear-gradient(140deg,rgba(91,33,182,.94),rgba(139,92,246,.92) 50%,rgba(56,189,248,.88));}
.ss-back{grid-column:1 / -1; justify-self:center; margin-top:4px; border:1px solid rgba(17,20,23,.12); background:rgba(255,255,255,.6); color:var(--ink);
  border-radius:999px; padding:8px 16px; font:inherit; font-size:.85rem; font-weight:600; cursor:pointer; transition:background .15s, border-color .15s;}
.ss-back:hover, .ss-back:focus-visible{background:#fff; border-color:var(--gold); outline:none;}
@media (prefers-color-scheme: dark){ .ss-back{background:rgba(255,255,255,.08); color:#f5f1e6; border-color:rgba(255,255,255,.15);} }
.start-screen:has(.ss-people-step) .ss-extra{display:none;}
.who-am-i{margin-left:8px; padding:3px 10px; border-radius:999px; font-size:.78rem; font-weight:700; background:var(--primary-bg); color:var(--primary); white-space:nowrap;}

/* ---------- Mapa ciała: szczegółowe strefy obszaru ---------- */
.bm-sil-fill{fill:var(--card); stroke:none;}
.bm-sil-line{fill:none; stroke:var(--muted); stroke-width:1.2; stroke-linejoin:round; stroke-linecap:round;}
.bm-zone.has-zones{stroke:var(--amber); stroke-opacity:1; stroke-width:2.2;}
.bmd-wrap:empty{display:none;}
.bmd{margin-top:16px; background:var(--bg); border:1px solid var(--border); border-radius:12px; padding:12px 14px;}
.bmd-head{display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 12px; margin-bottom:8px;}
.bmd-head h3{margin:0;}
.bmd-head .hint{margin:0;}
.bmd-views{display:grid; gap:14px;}
.bmd-views-2{grid-template-columns:1fr 1fr;}
.bmd-views-1{grid-template-columns:minmax(0,420px); justify-content:center;}
@media (max-width:820px){.bmd-views-2{grid-template-columns:1fr;}}
.bmd-view{background:var(--card); border:1px solid var(--border); border-radius:10px; padding:8px; min-width:0;}
.bmd-svg{width:100%; height:auto; max-height:440px;}
.bmd-svg .bmd-side{font-weight:700; font-size:12px; fill:var(--text);}
.bmd-zone{cursor:pointer; fill:var(--teal, #0d9488); fill-opacity:.1; stroke:var(--teal, #0d9488); stroke-opacity:.45; stroke-width:1.1; transition:fill-opacity .12s ease, stroke-opacity .12s ease;}
.bmd-zone:hover, .bmd-zone.hover{fill-opacity:.3; stroke-opacity:1; stroke-width:1.6;}
.bmd-zone.active{fill:var(--primary); stroke:var(--primary-dark); fill-opacity:.6; stroke-opacity:1; stroke-width:1.5;}
.bmd-zone.active.vas-low{fill:var(--green); stroke:var(--green);}
.bmd-zone.active.vas-mid{fill:var(--amber); stroke:var(--amber);}
.bmd-zone.active.vas-high{fill:var(--red); stroke:var(--red);}
.bmd-zone.active.hover{fill-opacity:.85; stroke-width:2.4;}
.bmd-legend{display:flex; flex-wrap:wrap; gap:6px 14px; font-size:.74rem; color:var(--muted); margin:8px 2px 10px;}
.bmd-legend .lg{display:inline-block; width:10px; height:10px; border-radius:3px; margin-right:5px; vertical-align:-1px;}
.lg-sel{background:var(--primary);} .lg-low{background:var(--green);} .lg-mid{background:var(--amber);} .lg-high{background:var(--red);}
.bmd-list{display:flex; flex-direction:column; gap:6px;}
.bmd-row{display:grid; grid-template-columns:12px minmax(0,1fr) 92px 190px auto; gap:8px; align-items:center; background:var(--card); border:1px solid var(--border); border-radius:8px; padding:5px 8px;}
.bmd-row select{padding:4px 6px; font-size:.78rem;}
.bmd-name{font-size:.82rem; font-weight:600; min-width:0;}
.bmd-dot{width:10px; height:10px; border-radius:50%; background:var(--primary);}
.bmd-dot.vas-low{background:var(--green);} .bmd-dot.vas-mid{background:var(--amber);} .bmd-dot.vas-high{background:var(--red);}
@media (max-width:640px){.bmd-row{grid-template-columns:12px minmax(0,1fr) minmax(0,1fr) auto;} .bmd-name{grid-column:2 / span 2;} .bmd-row .btn{grid-column:4; grid-row:1;} .bmd-row select[data-zone-vas]{grid-column:2;} .bmd-row select[data-zone-objaw]{grid-column:3 / span 2;}}
.zone-chip{background:var(--amber-bg); color:var(--amber);}
@media print{.bmd-wrap{display:none;}}

/* ---------- Wywiad i badanie ---------- */
.wyw-head{display:flex; flex-wrap:wrap; justify-content:space-between; gap:10px 18px; align-items:flex-start; margin-bottom:6px;}
.wyw-meta{display:flex; flex-wrap:wrap; gap:8px 14px; align-items:center; font-size:.8rem; color:var(--muted);}
.wyw-meta label{display:flex; flex-direction:column; gap:3px; font-weight:600;}
.wyw-meta input, .wyw-meta select{min-width:150px;}
.wyw-saved{font-size:.76rem; color:var(--green); align-self:flex-end; padding-bottom:6px;}
.wyw-sec{margin:16px 0 8px; padding-top:10px; border-top:1px solid var(--border); font-size:.92rem;}
.wyw-grid{display:grid; grid-template-columns:1fr 1fr; gap:4px 16px;}
@media (max-width:820px){.wyw-grid{grid-template-columns:1fr;}}
.wyw-field{margin-bottom:6px;}
.wyw-field textarea{min-height:0; resize:vertical;}
.wyw-field label{font-size:.78rem;}
.wyw-wide{grid-column:1 / -1;}
.wyw-warn label{color:var(--red);}
.wyw-warn textarea{border-color:var(--red-bg);}
.wyw-vas{background:var(--bg); border:1px solid var(--border); border-radius:8px; padding:8px 12px; font-size:.85rem; margin:0 0 10px;}

/* ---------- Wizyty i przebieg terapii ---------- */
.vis-stats{display:flex; flex-direction:column; gap:2px; font-size:.8rem; color:var(--muted); text-align:right;}
.vis-warn{color:var(--amber); font-weight:600;} .vis-good{color:var(--green); font-weight:600;}
.vis-progress{background:var(--bg); border:1px solid var(--border); border-radius:10px; padding:10px 12px; margin:10px 0 14px;}
.vis-prow{display:grid; grid-template-columns:minmax(0,1fr) 140px 64px; gap:10px; align-items:center; font-size:.8rem; padding:3px 0;}
.vis-prow b{text-align:right;}
.vis-bar{height:8px; border-radius:99px; background:var(--border); overflow:hidden;}
.vis-bar i{display:block; height:100%; background:var(--green);}
.vis-k{font-size:.74rem; font-weight:700; color:var(--muted); text-transform:uppercase; letter-spacing:.03em; margin-right:4px;}
.vis-item{border:1px solid var(--border); border-left:4px solid var(--border); border-radius:10px; padding:10px 12px; margin-bottom:8px; background:var(--card);}
.vis-item.ok{border-left-color:var(--green);}
.vis-item.todo{border-left-color:var(--amber);}
.vis-head{display:flex; flex-wrap:wrap; align-items:center; gap:6px 12px;}
.vis-date{font-weight:700;} .vis-date small{color:var(--muted); font-weight:500;}
.vis-type{font-size:.82rem; color:var(--muted); flex:1; min-width:160px;}
.vis-vas{font-size:.76rem; font-weight:700; background:var(--bg); border-radius:99px; padding:2px 8px;}
.vis-opis{margin-top:8px; font-size:.84rem; display:flex; flex-direction:column; gap:4px; line-height:1.4;}
.vis-autor{font-size:.72rem; color:var(--muted);}
.vis-missing{margin-top:6px; font-size:.8rem; color:var(--amber);}
.vis-form{margin-top:10px; padding-top:10px; border-top:1px dashed var(--border);}
.vis-zab{display:flex; flex-wrap:wrap; gap:4px 14px; margin-bottom:6px; font-size:.84rem;}
.vis-zab label{display:flex; gap:6px; align-items:center; font-weight:500;}
.vis-vasrow{grid-template-columns:160px 160px;}
.karnet-list{margin:6px 0 0; padding-left:18px; font-size:.84rem;}
.ter-none{color:var(--amber);}

/* ---------- dokumenty: wywiad, przebieg wizyt ---------- */
.dvd-kv{display:grid; grid-template-columns:200px minmax(0,1fr); gap:10px; padding:3px 0; font-size:.86em; border-bottom:1px dotted #e5e7eb;}
.dvd-kv > span{color:#6b7280;}
.dvd-sub{font-weight:700; margin:10px 0 2px; font-size:.86em; text-transform:uppercase; letter-spacing:.03em; color:#374151;}
.dvd-h3meta{font-weight:400; font-size:.8em;}
.dvd-visit .dvd-item-head{margin-bottom:4px;}
.dvd-ex-compact .dvd-item{padding:4px 0;}

/* ============ ZAKŁADKA WIZYTY (zaplanowane / odbyte) ============ */
.wz-stats .stat-card.wz-alert{border-top-color:var(--amber);}
.wz-stats .stat-card.wz-alert .value{color:var(--amber);}
.wz-controls{flex-wrap:wrap;}
.wz-controls input[type=text]{min-width:200px;}
.wz-sw .cal-vbtn{font-size:.86rem; padding:8px 14px;}
.wz-cnt{display:inline-block; min-width:22px; padding:0 6px; margin-left:4px; border-radius:99px; background:var(--bg); color:var(--text); font-size:.74rem; line-height:18px; text-align:center;}
.wz-sw .cal-vbtn.active .wz-cnt{background:rgba(255,255,255,.25); color:#fff;}
.wz-check{display:flex; align-items:center; gap:6px; font-size:.84rem; font-weight:600; color:var(--muted); white-space:nowrap;}
.wz-h{font-size:.95rem; margin:18px 0 8px;}
.wz-h-warn{color:var(--amber);}
.wz-hint{margin:-4px 0 10px;}
.wz-table{margin-bottom:8px;}
.wz-table table{min-width:760px;}
.wz-row{cursor:pointer; transition:background .12s;}
.wz-row:hover, .wz-row:focus{background:var(--primary-bg); outline:none;}
.wz-row.wz-overdue td:first-child{box-shadow:inset 3px 0 0 var(--amber);}
.wz-when b{font-weight:700;} .wz-when span{color:var(--muted); margin-left:4px;}
.wz-when small{display:block; color:var(--muted); font-size:.72rem;}
.wz-pat{color:var(--text); font-weight:700; text-decoration:none;} .wz-pat:hover{color:var(--primary); text-decoration:underline;}
.wz-act{text-align:right; white-space:nowrap;}
.wz-ok{color:var(--green); font-weight:700; font-size:.8rem;}
.wz-warn{color:var(--amber); font-weight:700; font-size:.8rem;}
.wz-muted{color:var(--muted); font-size:.8rem;}
.wz-empty{text-align:center; color:var(--muted);}
.wz-modal{max-width:820px;}
.wz-mhead{display:flex; align-items:flex-start; gap:12px; margin-bottom:12px;}
.wz-mhead > div:first-child{flex:1;}
.wz-mhead h2{margin:0;}
.wz-msub{font-size:.82rem; color:var(--muted); margin-top:2px;}
.wz-nav{display:flex; align-items:center; gap:4px; font-size:.78rem; color:var(--muted);}
.wz-x{font-size:1rem;}
.wz-meta{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px 16px; background:var(--bg); border:1px solid var(--border); border-radius:12px; padding:12px 14px; margin-bottom:12px;}
.wz-meta > div, .wz-ctx-grid > div{display:block; font-size:.86rem; line-height:1.4;}
.wz-meta .vis-k, .wz-ctx-grid .vis-k{display:block; margin-bottom:2px;}
.vis-zab input[type=checkbox]{width:auto; flex:0 0 auto; margin:0;}
.wz-modal .vis-zab label{font-size:.86rem;}
.wz-box{border:1px solid var(--border); border-radius:12px; padding:12px 14px; margin-bottom:12px; background:var(--card);}
.wz-box h3{margin:0 0 10px; font-size:.92rem;}
.wz-sec{margin:8px 0; font-size:.88rem; line-height:1.45;}
.wz-list{margin:2px 0 0; padding-left:18px;}
.wz-vasbig{display:inline-flex; gap:10px; align-items:center; background:var(--bg); border-radius:99px; padding:4px 12px; font-size:.86rem; margin-bottom:4px;}
.wz-ctx-grid{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px 16px;}
.wz-ctx-grid .wz-wide{grid-column:1 / -1;}
.wz-ctx a{color:var(--primary);}
.wz-hist{margin-top:10px; font-size:.84rem;}
.wz-hist summary{cursor:pointer; color:var(--muted); font-weight:600;}
.wz-hist-item{border-left:3px solid var(--border); padding:4px 0 4px 10px; margin:8px 0; opacity:.85;}
.wz-actions{flex-wrap:wrap;}
@media (max-width:700px){ .wz-meta{grid-template-columns:repeat(2,minmax(0,1fr));} .wz-ctx-grid{grid-template-columns:1fr;} }

/* ============ REJESTRACJA: terminarz tygodniowy z godzinami ============ */
.rjg-wrap{background:var(--card); border:1px solid var(--border); border-radius:12px; box-shadow:var(--shadow); max-height:calc(100vh - 260px); min-height:420px; overflow:auto; position:relative;}
.rjg{min-width:860px;}
.rjg-head{display:grid; grid-template-columns:56px repeat(7, minmax(0,1fr)); position:sticky; top:0; z-index:5; background:var(--card); border-bottom:1px solid var(--border);}
.rjg-corner{border-right:1px solid var(--border);}
.rjg-dhead{padding:8px 8px 6px; text-align:center; border-right:1px solid var(--border); display:flex; flex-direction:column; gap:1px; font-size:.78rem; color:var(--muted);}
.rjg-dhead b{font-size:1rem; color:var(--text);}
.rjg-dhead small{font-size:.68rem;}
.rjg-dhead.is-today{background:var(--primary-bg); color:var(--primary);}
.rjg-dhead.is-today b{color:var(--primary);}
.rjg-dhead.we, .rjg-col.we{background:color-mix(in srgb, var(--bg) 70%, transparent);}
.rjg-body{display:grid; grid-template-columns:56px repeat(7, minmax(0,1fr)); position:relative;}
.rjg-times{position:relative; border-right:1px solid var(--border);}
.rjg-hour{position:absolute; right:6px; transform:translateY(-50%); font-size:.68rem; color:var(--muted); font-variant-numeric:tabular-nums;}
.rjg-hour:first-child{transform:none; top:2px !important;}
.rjg-col{position:relative; border-right:1px solid var(--border); cursor:copy;}
.rjg-col.past{cursor:default; background:repeating-linear-gradient(135deg, transparent 0 8px, color-mix(in srgb, var(--border) 35%, transparent) 8px 9px);}
.rjg-col.is-today{background:color-mix(in srgb, var(--primary-bg) 45%, transparent);}
.rjg-line{position:absolute; left:0; right:0; border-top:1px solid var(--border); pointer-events:none;}
.rjg-line.half{border-top-style:dashed; opacity:.55;}
.rjg-chip{position:absolute; margin:0; overflow:hidden; z-index:2; box-sizing:border-box; padding:3px 6px; font-size:.72rem; line-height:1.25;}
.rjg-chip small{white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.rjg-chip:hover{z-index:4;}
.rjg-now{position:absolute; left:-1px; right:0; height:0; border-top:2px solid #e11d48; z-index:3; pointer-events:none;}
.rjg-now::before{content:''; position:absolute; left:-5px; top:-6px; width:10px; height:10px; border-radius:50%; background:#e11d48;}
.rjg-now span{position:absolute; right:3px; top:-17px; font-size:.64rem; font-weight:700; color:#fff; background:#e11d48; border-radius:5px; padding:0 4px;}
/* ============ REJESTRACJA: historia wizyt ============ */
.rjh-filters{padding:12px 14px;}
.rjh-row{display:flex; flex-wrap:wrap; align-items:center; gap:8px 10px;}
.rjh-row + .rjh-row{margin-top:10px;}
.rjh-row input[type=text]{flex:1; min-width:220px;}
.rjh-row label{display:flex; align-items:center; gap:6px; font-size:.82rem; color:var(--muted); font-weight:600;}
.rjh-row input[type=date]{width:auto;}
.rjh-presets{display:flex; flex-wrap:wrap; gap:4px;}
.rjh-table table{min-width:900px;}
.rjh-tel{display:block; color:var(--muted); font-size:.72rem;}
.rjh-msub{display:block; font-size:.8rem; font-weight:500; color:var(--muted); margin-top:2px;}
.rjh-nav{justify-content:flex-end; margin:-6px 0 8px;}
@media print{ .rjg-now{display:none;} }

/* rejestracja — prosta lista pacjentów */
.rjl-head{display:flex; gap:10px; align-items:center; margin-bottom:10px;}
.rjl-head input{flex:1; min-width:0;}
.rjl-wrap{overflow-x:auto;}
.rjl-table tbody tr{cursor:pointer;}
.rjl-table tbody tr:hover td{background:var(--bg, #f5f7f8);}
.rjl-table tr.rjl-sel td{background:var(--teal-bg, #e6f4f2);}
.rjl-nw{white-space:nowrap;}
.rjl-miss{color:var(--amber, #b45309); font-size:.78rem; font-weight:600;}
.rjl-side .op-pitem{cursor:pointer;}

/* ---- terminarz terapeuty: siatka godzin (tydzień / dzień) ---- */
.cal-grid.cal-timegrid{display:block;}
.rjg.rjg-1day{min-width:0;}
.rjg-1day .rjg-chip{font-size:.8rem; padding:4px 8px;}
.rjg-dhead.calg-link{cursor:pointer;}
.rjg-dhead.calg-link:hover{background:var(--primary-bg); color:var(--primary);}

/* ---- wspólny terminarz terapeutów: kolor = terapeuta ---- */
.ter-c0{--tc:#0f766e; --tcb:#ccfbf1;} .ter-c1{--tc:#2563eb; --tcb:#dbeafe;} .ter-c2{--tc:#c2410c; --tcb:#ffedd5;}
.ter-c3{--tc:#7c3aed; --tcb:#ede9fe;} .ter-c4{--tc:#be185d; --tcb:#fce7f3;} .ter-c5{--tc:#4d7c0f; --tcb:#ecfccb;} .ter-cx{--tc:#b45309; --tcb:#fef3c7;}
@media (prefers-color-scheme: dark){ .ter-c0,.ter-c1,.ter-c2,.ter-c3,.ter-c4,.ter-c5,.ter-cx{--tcb:color-mix(in srgb, var(--tc) 28%, var(--card));} }
:root[data-theme="dark"] .ter-c0,:root[data-theme="dark"] .ter-c1,:root[data-theme="dark"] .ter-c2,:root[data-theme="dark"] .ter-c3,:root[data-theme="dark"] .ter-c4,:root[data-theme="dark"] .ter-c5,:root[data-theme="dark"] .ter-cx{--tcb:color-mix(in srgb, var(--tc) 28%, var(--card));}
.rjg-chip[class*="ter-c"]{background:var(--tcb); border-color:var(--tc);}
.rjg-chip.mine{box-shadow:inset 0 0 0 1px var(--tc);}
.calg-terhead b{color:var(--tc) !important; font-size:.92rem;}
.calg-terhead{border-top:3px solid var(--tc);}
.rjg-col.mine{background:color-mix(in srgb, var(--primary-bg) 30%, transparent);}
.calg-now2 span{display:none;}
.calg-now2::before{display:none;}
.calg-legend{display:flex; flex-wrap:wrap; gap:14px; margin:0 0 8px; font-size:.78rem; color:var(--muted);}
.calg-legend span{display:inline-flex; align-items:center; gap:6px; font-weight:600;}
.calg-legend i{width:12px; height:12px; border-radius:3px; background:var(--tcb); border-left:4px solid var(--tc);}

/* --- fizjo: kafelek kalendarza → karta pacjenta, ✎ edycja wizyty --- */
.rjg-chip, .cm-visit{cursor:pointer;}
.cal-edit{position:absolute; top:2px; right:2px; z-index:3; border:0; background:rgba(255,255,255,.85); color:var(--text,#1f2d2b); border-radius:6px; width:20px; height:20px; font-size:.72rem; line-height:20px; padding:0; cursor:pointer; opacity:0; transition:opacity .15s;}
.cm-visit{position:relative;}
.rjg-chip:hover .cal-edit, .cm-visit:hover .cal-edit{opacity:1;}
.cal-edit:hover{background:#fff; box-shadow:0 1px 4px rgba(0,0,0,.15);}
@media (hover:none){ .cal-edit{opacity:1;} }
/* --- plan leczenia: własna pozycja --- */
.plan-add-row{display:grid; grid-template-columns:1fr 70px auto; gap:8px; margin:8px 0;}
.plan-add-row input.invalid{border-color:#d9534f;}
/* --- PESEL → data urodzenia --- */
#p_dataUr.auto-filled{background:#e3f6ee; transition:background .3s;}

/* ======================= NOWY UKŁAD — FIZJOTERAPIA (body.ui-v2) ======================= */
.v2-only{display:none !important;}
body.ui-v2 .v2-only{display:flex !important;}
body.ui-v2 .tabs > .v2-more, body.ui-v2 .tabs > .v2-hide{display:none !important;}
body.ui-v2 .tabs{align-items:center; overflow:visible; position:relative; z-index:20;}
body.ui-v2 .tab-btn[data-tab="karta"]{max-width:260px; overflow:hidden; text-overflow:ellipsis;}
.more-wrap{position:relative; margin-left:auto;}
.more-btn{gap:6px;}
.more-badge{display:inline-flex; align-items:center; justify-content:center; min-width:18px; height:18px; padding:0 5px; border-radius:9px; background:#d9534f; color:#fff; font-size:.7rem; font-weight:800; line-height:1;}
.more-menu{position:absolute; right:0; top:calc(100% + 6px); min-width:300px; background:var(--card); border:1px solid var(--border); border-radius:12px; box-shadow:0 10px 30px rgba(0,0,0,.18); padding:6px; display:flex; flex-direction:column; z-index:50;}
.more-menu[hidden]{display:none;}
.more-menu button{display:flex; flex-direction:column; align-items:flex-start; gap:2px; text-align:left; background:none; border:0; border-radius:8px; padding:10px 12px; cursor:pointer; color:var(--text); font:inherit;}
.more-menu button:hover{background:var(--primary-bg);}
.more-menu b{font-size:.9rem;}
.more-menu small{color:var(--muted); font-size:.76rem;}

/* Mój dzień */
.md-head{display:flex; justify-content:space-between; align-items:flex-end; gap:16px; flex-wrap:wrap; margin-bottom:14px;}
.md-head h2{margin:0 0 4px; font-size:1.5rem;}
.md-head p{margin:0; color:var(--muted); text-transform:none;}
.md-head p::first-letter{text-transform:uppercase;}
.md-quick{display:flex; gap:8px; flex-wrap:wrap;}
.md-hint{position:relative; background:var(--primary-bg); border:1px solid var(--border); border-left:4px solid var(--primary); border-radius:12px; padding:12px 16px 12px 16px; margin-bottom:14px; font-size:.86rem;}
.md-hint ol{margin:6px 0 0; padding-left:20px;} .md-hint li{margin:3px 0;}
.md-hint-x{position:absolute; top:8px; right:10px; background:none; border:0; color:var(--muted); cursor:pointer; font-size:.78rem;}
.md-hint-x:hover{color:var(--text);}
.md-stats{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin-bottom:14px;}
.md-stat{background:var(--card); border:1px solid var(--border); border-radius:12px; padding:12px 16px; display:flex; flex-direction:column;}
.md-stat span{font-size:.76rem; color:var(--muted); font-weight:700; text-transform:uppercase; letter-spacing:.03em;}
.md-stat b{font-size:1.8rem; line-height:1.15;}
.md-stat small{color:var(--muted); font-size:.76rem;}
.md-stat.warn b{color:var(--amber);} .md-stat.gold b{color:var(--gold-dark, #a78a36);}
.md-grid{display:grid; grid-template-columns:minmax(0,1.6fr) minmax(0,1fr); gap:14px; align-items:start;}
.md-card h3{margin:0 0 10px; font-size:1rem;}
.md-card-h{display:flex; justify-content:space-between; align-items:center; gap:8px; margin-bottom:6px;}
.md-card-h h3{margin:0;}
.md-seg{display:inline-flex; background:var(--gray-bg); border-radius:9px; padding:3px;}
.md-seg button{border:0; background:none; padding:5px 12px; border-radius:7px; cursor:pointer; font:inherit; font-size:.8rem; color:var(--muted); font-weight:600;}
.md-seg button.active{background:var(--card); color:var(--text); box-shadow:var(--shadow);}
.md-visit{display:grid; grid-template-columns:64px minmax(0,1fr) auto auto; gap:12px; align-items:center; padding:10px 10px; border-radius:10px; border:1px solid transparent; cursor:pointer;}
.md-visit + .md-visit{border-top-color:var(--border); border-radius:0;}
.md-visit:hover{background:var(--primary-bg); border-radius:10px;}
.md-visit.is-next{background:var(--primary-bg); border:1px solid var(--primary); border-radius:10px;}
.md-visit.is-done{opacity:.75;}
.md-time{font-weight:800; font-size:1.05rem;}
.md-time small{display:block; font-size:.66rem; color:var(--primary); text-transform:uppercase; font-weight:800;}
.md-who{min-width:0;} .md-who b{font-size:.95rem;}
.md-who small{display:block; color:var(--muted); font-size:.78rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.md-act{display:flex; gap:6px;}
.md-empty{color:var(--muted); font-size:.86rem; margin:6px 0;}
.md-todo{display:flex; justify-content:space-between; align-items:center; gap:8px; padding:8px 0; border-top:1px solid var(--border);}
.md-todo:first-of-type{border-top:0;}
.md-todo small{display:block; color:var(--muted); font-size:.76rem;}
.md-note{display:flex; flex-direction:column; gap:2px; padding:8px 10px; border-radius:8px; border:1px solid var(--border); margin-bottom:6px; cursor:pointer; background:var(--gold-bg, #f6efdc);}
.md-note:hover{border-color:var(--gold, #C9A84C);}
.md-note span{font-size:.84rem;} .md-note small{color:var(--muted); font-size:.72rem;}
@media (max-width: 900px){
  .md-grid{grid-template-columns:1fr;}
  .md-visit{grid-template-columns:54px minmax(0,1fr); }
  .md-visit .badge{display:none;}
  .md-act{grid-column:1 / -1; justify-content:flex-end;}
  .more-wrap{margin-left:0;}
}
@media (max-width: 600px){ .md-stats{grid-template-columns:1fr 1fr 1fr; gap:6px;} .md-stat{padding:8px 10px;} .md-stat b{font-size:1.3rem;} }

/* ---- terminarz: przeciąganie i kopiowanie wizyt ---- */
.rjg-chip{touch-action:none; user-select:none;}
.rjg-chip.cal-dragging{opacity:.35;}
.cal-ghost{position:fixed !important; z-index:9999; pointer-events:none; opacity:.92; box-shadow:0 12px 28px rgba(17,20,23,.3); cursor:grabbing; transform:rotate(-1deg);}
.cal-dragtag{position:fixed; z-index:10000; pointer-events:none; white-space:nowrap; background:#111417; color:#fff; font-size:.74rem; font-weight:700; padding:3px 8px; border-radius:6px; box-shadow:0 6px 14px rgba(0,0,0,.25);}
body.cal-dragmode, body.cal-dragmode *{cursor:grabbing !important;}
.rjg-col.cal-drop{background:rgba(201,168,76,.12); outline:2px dashed var(--gold); outline-offset:-2px;}
.cal-ctx{position:fixed; z-index:10000; min-width:230px; background:var(--card,#fff); color:var(--text,#111); border:1px solid var(--border,#ddd); border-radius:12px; box-shadow:0 16px 40px rgba(17,20,23,.22); padding:6px; display:flex; flex-direction:column;}
.cal-ctx button{all:unset; box-sizing:border-box; padding:8px 12px; border-radius:8px; font-size:.86rem; cursor:pointer;}
.cal-ctx button:hover{background:var(--primary-bg,#e6f4f1); color:var(--primary,#0f766e);}
.cal-ctx hr{border:none; border-top:1px solid var(--border,#ddd); margin:4px 2px;}
.cal-clipbar{position:fixed; left:50%; bottom:18px; transform:translateX(-50%); z-index:9998; background:#111417; color:#fff; padding:10px 14px; border-radius:12px; font-size:.86rem; box-shadow:0 12px 30px rgba(0,0,0,.3); display:flex; gap:10px; align-items:center; max-width:calc(100vw - 32px);}
.cal-clipbar button{width:auto; border:1px solid rgba(255,255,255,.35); background:rgba(255,255,255,.12); color:#fff; border-radius:8px; padding:4px 10px; cursor:pointer; font:inherit;}

/* ---- Administrator: zestawienia i statystyki ---- */
.admin-only{display:none !important;}
body.mode-admin .admin-only{display:inline-flex !important;}
.zs-head{display:flex; justify-content:space-between; align-items:flex-end; gap:12px; flex-wrap:wrap; margin-bottom:12px;}
.zs-head h2{margin:0;}
.zs-head .hint{margin:4px 0 0;}
.zs-actions{display:flex; gap:8px; flex-wrap:wrap;}
.zs-actions .btn{width:auto;}
.zs-controls{flex-wrap:wrap; gap:10px; align-items:center;}
.zs-controls label{display:flex; align-items:center; gap:6px; font-size:.85rem; color:var(--muted);}
.zs-controls input[type=date], .zs-controls select{width:auto;}
.zs-presets{display:flex; gap:6px; flex-wrap:wrap; flex-basis:100%;}
.zs-chip{width:auto; border:1px solid var(--border); background:var(--card); color:var(--text); border-radius:999px; padding:6px 12px; font-size:.8rem; font-weight:600; cursor:pointer;}
.zs-chip:hover{border-color:var(--primary);}
.zs-chip.active{background:var(--primary); border-color:var(--primary); color:#fff;}
#view-zestawienia h3{margin:22px 0 8px; font-size:1.02rem;}
.zs-table{width:100%; border-collapse:collapse;}
.zs-table th, .zs-table td{padding:8px 10px; border-bottom:1px solid var(--border); text-align:left; font-size:.85rem;}
.zs-table th{font-size:.72rem; text-transform:uppercase; letter-spacing:.03em; color:var(--muted);}
.zs-table .num{text-align:right; white-space:nowrap; font-variant-numeric:tabular-nums;}
.zs-table tfoot td{border-top:2px solid var(--border);}
.zs-empty{text-align:center !important; color:var(--muted); padding:18px !important;}
.zs-two{display:grid; grid-template-columns:minmax(0,3fr) minmax(0,2fr); gap:20px;}
.zs-two > div{min-width:0;}
#view-zestawienia .table-wrap{overflow-x:auto;}
@media (max-width:900px){ .zs-two{grid-template-columns:1fr;} }
.zs-trend{display:flex; gap:10px; align-items:stretch; overflow-x:auto; padding:12px; background:var(--card); border:1px solid var(--border); border-radius:12px;}
.zs-tcol{flex:1 0 56px; display:flex; flex-direction:column; align-items:center; gap:4px; min-width:56px;}
.zs-tbars{height:140px; width:100%; display:flex; align-items:flex-end; justify-content:center; gap:4px;}
.zs-bar{width:18px; border-radius:5px 5px 0 0; min-height:2px; position:relative;}
.zs-bar.v{background:var(--primary,#0f766e);}
.zs-bar.p{background:var(--gold,#C9A84C);}
.zs-bar i{position:absolute; top:-16px; left:50%; transform:translateX(-50%); font-style:normal; font-size:.68rem; font-weight:700; color:var(--text);}
.zs-tcol small{font-size:.72rem; font-weight:700;}
.zs-tcol em{font-style:normal; font-size:.66rem; color:var(--muted); white-space:nowrap;}
.zs-legend{display:flex; gap:16px; margin-top:6px; font-size:.76rem; color:var(--muted);}
.zs-legend i{display:inline-block; width:10px; height:10px; border-radius:3px; margin-right:5px; vertical-align:-1px;}
.zs-legend i.v{background:var(--primary,#0f766e);} .zs-legend i.p{background:var(--gold,#C9A84C);}
.zs-print{font-family:Arial,sans-serif; color:#111;}
.zs-print h3{margin:16px 0 6px; font-size:13px;}
.zs-print .zs-table th, .zs-print .zs-table td{font-size:11px; padding:4px 6px; border-bottom:1px solid #ddd;}
.zs-print .table-wrap{overflow:visible; border:none; box-shadow:none;}
.zs-print .zs-two{display:block;}

/* ---- Lekarz Koordynator: przełącznik widoku + terminarz specjalistów ---- */
.op-viewbar{display:flex; gap:8px; margin-bottom:14px; flex-wrap:wrap;}
.op-vbtn{width:auto; border:1px solid var(--border); background:var(--card); color:var(--text); border-radius:12px; padding:9px 16px; font:inherit; font-weight:700; font-size:.9rem; cursor:pointer; box-shadow:var(--shadow);}
.op-vbtn:hover{border-color:var(--primary);}
.op-vbtn.active{background:var(--primary); border-color:var(--primary); color:#fff;}
.op-cal{padding:14px;}
.op-calbar{display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:6px;}
.op-calbar .btn{width:auto;}
.op-callabel{margin:0 6px; font-size:.95rem;}
.op-calf{display:flex; gap:6px; align-items:center; flex-wrap:wrap; margin-left:auto;}
.op-calf select{width:auto;}
.op-calhint{margin:4px 0 10px;}

/* ---- sprzedaż karnetu: salka / łóżko ---- */
.rk-miejsca{display:grid; grid-template-columns:1fr 1fr; gap:10px;}
.rk-miejsce{width:auto; display:flex; flex-direction:column; align-items:flex-start; gap:2px; text-align:left; padding:12px 14px; border-radius:12px; border:2px solid var(--border); background:var(--card); color:var(--text); font:inherit; cursor:pointer;}
.rk-miejsce span{font-size:1.4rem;}
.rk-miejsce b{font-size:1rem;}
.rk-miejsce small{font-size:.76rem; color:var(--muted);}
.rk-miejsce:hover{border-color:var(--primary);}
.rk-miejsce.active{border-color:var(--primary); background:var(--primary-bg); box-shadow:0 0 0 3px var(--primary-bg);}
.rk-miejsce.active b{color:var(--primary);}

/* ---- zgoda na kontakt ---- */
.zg-cell{display:flex; flex-wrap:wrap; gap:6px; align-items:center;}
.zg-badge[role=button]{cursor:pointer;}
.zg-badge[role=button]:hover{filter:brightness(1.08); outline:1px solid currentColor;}
.zg-print{width:auto; white-space:nowrap;}
.zg-karta{display:inline-flex; align-items:center; gap:6px;}
.zg-opts{display:flex; flex-direction:column; gap:8px; margin-bottom:12px;}
.zg-opt{font-size:.95rem;}
.zg-actions{flex-wrap:wrap; align-items:center;}
.zg-actions .btn{width:auto;}
/* wydruk zgody */
.zgp{font-family:Arial, sans-serif; color:#111; font-size:12.5px; line-height:1.45;}
.zgp-head{display:flex; justify-content:space-between; align-items:center; border-bottom:2px solid #1A7A6E; padding-bottom:8px; margin-bottom:14px; font-size:11px; color:#444; text-align:right;}
.zgp-head img{height:46px;}
.zgp h1{font-size:18px; text-align:center; margin:6px 0 14px;}
.zgp h1 small{font-size:13px; font-weight:400; color:#444;}
.zgp ul{margin:4px 0 10px; padding-left:20px;}
.zgp-data{width:100%; border-collapse:collapse; margin-bottom:12px;}
.zgp-data td{padding:5px 4px; vertical-align:bottom;}
.zgp-data td:first-child{width:200px; color:#444;}
.zgp-blank{display:inline-block; border-bottom:1px dotted #333; height:16px; vertical-align:bottom;}
.zgp-ch-table{width:100%; border-collapse:collapse; margin:4px 0 12px;}
.zgp-ch-table td{border:1px solid #999; padding:8px 10px;}
.zgp-ch{font-weight:700;}
.zgp-val{font-weight:400; font-size:11.5px; margin-top:3px;}
.zgp-yn{width:70px; white-space:nowrap; text-align:center;}
.zgp-box{display:inline-block; width:13px; height:13px; border:1.5px solid #111; vertical-align:-2px; margin-right:4px;}
.zgp-small{font-size:10.5px; color:#333;}
.zgp-sign{display:flex; justify-content:space-between; margin-top:34px; gap:20px;}
.zgp-sign > div{display:flex; flex-direction:column; align-items:center; gap:3px;}
.zgp-sign small{font-size:10px; color:#555;}
.zgp-sign2{margin-top:26px;}

/* ---- rejestracja: wpłaty w jednej linii ---- */
.rj-wpl th, .rj-wpl td{white-space:nowrap; vertical-align:middle;}
.rj-wpl td:nth-child(2){white-space:normal; min-width:140px;}
.rj-wpl-tag{display:inline-block; margin-left:6px; padding:1px 8px; border-radius:99px; font-size:.76rem; font-weight:700; background:var(--primary-bg); color:var(--primary);}
.rj-wpl-sum{font-size:.85rem; font-weight:500; color:var(--muted); margin-left:8px;}
.rj-wpl-sum b{color:var(--text);}

/* ---- zwijana sekcja (np. historia przypomnień) ---- */
.rj-fold > summary{list-style:none; display:flex; align-items:center; gap:10px; cursor:pointer; user-select:none;}
.rj-fold > summary::-webkit-details-marker{display:none;}
.rj-fold > summary h2{margin:0;}
.rj-fold-arrow{display:inline-flex; width:26px; height:26px; align-items:center; justify-content:center; border-radius:8px; border:1px solid var(--border); font-size:.8rem; transition:transform .18s ease;}
.rj-fold[open] .rj-fold-arrow{transform:rotate(90deg);}
.rj-fold > summary:hover .rj-fold-arrow{border-color:var(--primary); color:var(--primary);}
.rj-fold-meta{margin-left:auto; font-size:.8rem; color:var(--muted);}
.rj-fold-body{margin-top:12px;}

/* ---- zdjęcie pacjenta i załączniki ---- */
.avatar-photo{padding:0; overflow:hidden; background:var(--card) !important;}
.avatar-photo img{width:100%; height:100%; object-fit:cover; display:block;}
.avatar-lg{width:88px; height:88px; font-size:1.6rem;}
.rp-media{display:grid; grid-template-columns:auto 1fr; gap:18px; margin:6px 0 10px; padding:12px; border:1px dashed var(--border); border-radius:12px;}
.rp-photo{display:flex; flex-direction:column; align-items:center; gap:6px;}
.rp-photo .btn{width:auto;}
.rp-docs{min-width:0;}
.rp-docs-lbl{display:block; font-size:.82rem; font-weight:600; color:var(--muted); margin-bottom:6px;}
.rp-docbar{display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-bottom:8px;}
.rp-docbar select{width:auto; max-width:240px;}
.rp-docbar .btn{width:auto;}
.rp-docs-hint{margin:6px 0 0; font-size:.76rem;}
.att-item{gap:10px;}
.att-txt{min-width:0;}
.att-txt .a-name{overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.att-thumb{width:46px; height:46px; padding:0; border-radius:8px; overflow:hidden; border:1px solid var(--border); background:var(--card); cursor:zoom-in; flex:none;}
.att-thumb img{width:100%; height:100%; object-fit:cover; display:block;}
.att-kat{font-weight:600; color:var(--text);}
.att-pending{border-style:dashed; opacity:.9;}
.att-item .btn{width:auto;}
@media (max-width:640px){ .rp-media{grid-template-columns:1fr;} }
/* załączniki w wąskim formularzu: zwięźle, w jednej linii */
.att-txt{flex:1 1 auto;}
.att-txt .a-meta{overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.rp-docs .att-item{padding:8px 10px;}
.rp-docs .att-item .btn{padding:4px 8px; font-size:.75rem;}
.rp-docs .att-item .a-spacer{display:none;}

/* specjaliści: bez zakładki Wiadomości (przypomnienia wysyła rejestracja) */
body.mode-spec .tab-btn[data-tab="wiadomosci"], body.mode-spec [data-more="wiadomosci"]{display:none !important;}

/* ---- uproszczenia: „⋯ Więcej” ---- */
.subtab-btn.sub-more-item{display:none;}
.sub-more-n{font-size:.72rem; margin-left:4px; opacity:.85;}
.row-more{width:auto; min-width:34px; font-size:1.05rem; line-height:1; padding:4px 10px; letter-spacing:1px;}
.rp-fold{margin:6px 0 10px; border:1px dashed var(--border); border-radius:12px; padding:10px 12px;}
.rp-fold > summary{list-style:none; display:flex; align-items:center; gap:10px; cursor:pointer; user-select:none; font-size:.9rem;}
.rp-fold > summary::-webkit-details-marker{display:none;}
.rp-fold[open] .rj-fold-arrow{transform:rotate(90deg);}
.rp-fold .rp-media{border:none; padding:10px 0 0; margin:0;}

/* ---- logowanie PIN-em / użytkownicy ---- */
#btnSwitchDept[hidden], #btnLogout[hidden]{display:none !important;}
#roleSelect:disabled{opacity:1; cursor:default; -webkit-appearance:none; appearance:none; background-image:none;}
.us-pin{font-size:1rem; font-weight:800; letter-spacing:.15em; background:var(--gray-bg); padding:2px 8px; border-radius:6px;}
.us-act{display:flex; gap:6px; align-items:center; justify-content:flex-end; flex-wrap:wrap;}
.us-act .btn{width:auto;}
.us-in{width:110px !important; padding:6px 8px !important; font-size:.85rem;}
.us-admin{margin-top:16px;}
.us-admin .us-act{justify-content:flex-start;}

/* ---- bramka SMS ---- */
.sms-form{display:flex; gap:10px; align-items:flex-end; flex-wrap:wrap; margin:8px 0;}
.sms-form label{display:flex; flex-direction:column; gap:4px; font-size:.8rem; color:var(--muted);}
.sms-form label.orto-check{flex-direction:row; align-items:center;}
.sms-form input[type=password], .sms-form input[type=text], .sms-form input[type=tel]{width:230px;}
.sms-form .btn{width:auto;}

/* ---- pacjent w poczekalni ---- */
.btn-pocz{width:auto; background:#fff4e5; border:1px solid #f59e0b; color:#92400e; font-weight:700;}
.btn-pocz:hover{background:#fde7c4;}
.pocz-wait{font-size:.78rem; font-weight:700; color:#b45309; background:var(--amber-bg); border-radius:8px; padding:4px 8px;}
.pocz-done{font-size:.78rem; font-weight:700; color:var(--green); background:var(--green-bg); border-radius:8px; padding:4px 8px;}
.pocz-banner{position:fixed; top:12px; left:50%; transform:translateX(-50%); z-index:9997; display:flex; flex-direction:column; gap:6px; width:min(760px, calc(100vw - 32px));}
.pocz-item{all:unset; box-sizing:border-box; display:flex; align-items:center; gap:10px; flex-wrap:wrap; cursor:pointer; padding:12px 16px; border-radius:14px;
  background:#dc2626; color:#fff; font-size:1rem; box-shadow:0 14px 34px rgba(220,38,38,.45); animation:poczBlink 1s ease-in-out infinite;}
.pocz-item b{font-weight:800; letter-spacing:.01em;}
.pocz-meta{opacity:.9; font-size:.85rem;}
.pocz-ok{margin-left:auto; background:rgba(255,255,255,.22); border:1px solid rgba(255,255,255,.5); border-radius:10px; padding:4px 10px; font-weight:700; font-size:.85rem;}
.pocz-item:hover .pocz-ok{background:rgba(255,255,255,.35);}
.pocz-dot{width:12px; height:12px; border-radius:50%; background:#fff; box-shadow:0 0 0 4px rgba(255,255,255,.35);}
@keyframes poczBlink{0%,100%{background:#dc2626;} 50%{background:#991b1b;}}
@media (prefers-reduced-motion: reduce){ .pocz-item{animation:none;} }

/* ---- uwaga na kafelku wizyty ---- */
.chip-note{display:block; margin-top:2px; padding:1px 5px; border-radius:5px; background:#fef3c7; color:#92400e !important; font-weight:700; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; opacity:1 !important;}
.rjg-chip.has-note{box-shadow:inset 0 0 0 2px #f59e0b;}
.cm-note{margin-left:3px;}
.uw-podp{display:flex; flex-wrap:wrap; gap:6px; margin-bottom:6px;}
@media (prefers-color-scheme: dark){ .chip-note{background:#3a2e14; color:#fbbf24 !important;} }
/* kafelek z uwagą: ciaśniej, żeby trzecia linijka zmieściła się w 45-minutowym kafelku */
.rjg-chip.has-note{line-height:1.12; padding-top:2px; padding-bottom:1px;}
.rjg-chip.has-note .chip-note{font-size:.62rem; padding:0 4px; margin-top:1px; line-height:1.3;}
.rjg-1day .rjg-chip.has-note .chip-note{font-size:.72rem;}

/* ===== dyspozycyjność specjalistów ===== */
.dy-band{position:absolute; z-index:1; pointer-events:none; box-sizing:border-box; border-radius:3px;}
.rjg-col .rjg-chip{z-index:2;}
.dy-legend{display:flex; flex-wrap:wrap; align-items:center; gap:12px; margin:0 0 8px; font-size:.78rem; color:var(--muted);}
.dy-legend .dy-lt{font-weight:700; color:var(--text);}
.dy-legend .dy-li{display:inline-flex; align-items:center; gap:6px; font-weight:600;}
.dy-legend .dy-li i{width:14px; height:12px; border-radius:3px; background:color-mix(in srgb, var(--dc) 18%, transparent); border-left:4px solid var(--dc);}
.dy-legend em{font-style:normal; color:#b45309; font-weight:700;}
.dy-pill{display:block; font-size:.66rem; line-height:1.3; padding:0 5px; border:1px solid; border-radius:4px; font-weight:700; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.dy-banner{position:fixed; right:18px; bottom:18px; z-index:9996; background:#b45309; color:#fff; border:0; border-radius:999px; padding:10px 18px; font:inherit; font-size:.9rem; cursor:pointer; box-shadow:0 6px 18px rgba(0,0,0,.18); animation:dyPulse 2.4s ease-in-out infinite;}
@keyframes dyPulse{0%,100%{box-shadow:0 6px 18px rgba(180,83,9,.25);}50%{box-shadow:0 6px 26px rgba(180,83,9,.6);}}
.dy-toast{position:fixed; left:50%; bottom:24px; transform:translateX(-50%) translateY(20px); opacity:0; transition:.2s; background:#1f2937; color:#fff; padding:10px 16px; border-radius:10px; z-index:10001; pointer-events:none; font-size:.9rem;}
.dy-toast.on{opacity:1; transform:translateX(-50%) translateY(0);}
.dy-top{display:flex; flex-wrap:wrap; gap:14px; align-items:center; margin-bottom:10px;}
.dy-top label{display:flex; gap:6px; align-items:center; font-weight:600;}
.dy-sw{display:inline-flex; gap:5px; margin-left:6px; vertical-align:middle;}
.dy-sw button{width:20px; height:20px; border-radius:50%; border:2px solid transparent; cursor:pointer; padding:0;}
.dy-sw button.on{border-color:var(--text); box-shadow:0 0 0 2px var(--card) inset;}
.dy-tpl{background:var(--bg, #f6f7f9); border:1px solid var(--border); border-radius:10px; padding:10px; margin-bottom:10px; font-size:.85rem;}
.dy-tplrow{display:flex; flex-wrap:wrap; gap:8px 14px; margin:8px 0;}
.dy-tpld{display:inline-flex; gap:4px; align-items:center;}
.dy-tpld select, .dy-tbl select{font-size:.82rem; padding:2px 4px;}
.dy-tbl{max-height:46vh; overflow:auto; border:1px solid var(--border); border-radius:10px;}
.dy-tbl table{width:100%; border-collapse:collapse; font-size:.85rem;}
.dy-tbl th{position:sticky; top:0; background:var(--card); text-align:left; padding:6px 8px; border-bottom:1px solid var(--border);}
.dy-tbl td{padding:4px 8px; border-bottom:1px solid var(--border);}
.dy-tbl tr.we td{background:color-mix(in srgb, var(--muted) 8%, transparent);}
.dy-tbl tr.unset td:first-child{box-shadow:inset 3px 0 0 #b45309;}
.dy-tbl small{color:var(--muted);}
.dy-wol{display:inline-flex; gap:4px; align-items:center; font-size:.82rem;}
#dyLegendBox:empty{display:none;}

/* ===== kończą się SMS-y ===== */
.sms-low-banner{position:fixed; left:18px; bottom:18px; z-index:9995; max-width:min(560px, calc(100vw - 36px)); display:flex; gap:12px; align-items:center; background:#fff7ed; color:#7c2d12; border:1px solid #fdba74; border-left:5px solid #ea580c; border-radius:12px; padding:10px 14px; box-shadow:0 8px 24px rgba(0,0,0,.14); font-size:.88rem;}
.sms-low-banner .btn{white-space:nowrap; background:#ea580c; color:#fff; border:0;}

/* ===== opiekun prawny ===== */
.op-box{border:1px dashed var(--border); border-radius:10px; padding:8px 12px; margin:6px 0 10px;}
.op-box.on{border-style:solid; border-color:#c4b5fd; background:color-mix(in srgb, #7c3aed 5%, transparent);}
.op-box .op-fields{display:none; margin-top:8px;}
.op-box.on .op-fields{display:block;}
.op-tg{font-weight:600;}
.op-auto{font-weight:400; color:var(--muted); font-size:.85em;}
.op-line{color:#6d28d9;}

/* logowanie login + hasło (auth.js) — pola tekstowe zamiast PIN-u */
.login-form .ss-pin-in{ letter-spacing:normal; text-align:left; min-width:210px; }
.login-form .ss-pin-in:focus{ color:#1f2937; }
.login-form .ss-pin-in::placeholder{ letter-spacing:normal; }

/* 2FA — kod z telefonu, kod QR, kody zapasowe (auth.js) */
.login-form .mfa-code{ letter-spacing:.35em; text-align:center; min-width:180px; font-variant-numeric:tabular-nums; }
.mfa-hint{ grid-column:1 / -1; margin:6px auto 0; max-width:52ch; font-size:.82rem; color:var(--muted); text-align:center; }
.mfa-hint code, .mfa-secret{ font-family:ui-monospace, SFMono-Regular, Menlo, monospace; }
.mfa-setup{ grid-column:1 / -1; display:flex; flex-wrap:wrap; gap:22px; align-items:center; justify-content:center; text-align:left; }
.mfa-qr{ width:216px; height:216px; padding:10px; background:#fff; border-radius:18px; box-shadow:0 12px 28px rgba(17,20,23,.16); }
.mfa-steps{ flex:1 1 300px; max-width:420px; }
.mfa-steps ol{ margin:0 0 12px; padding-left:20px; font-size:.9rem; line-height:1.55; color:var(--ink); }
.mfa-secret{ display:inline-block; margin-top:4px; padding:4px 8px; border-radius:8px; background:rgba(255,255,255,.75); border:1px solid rgba(17,20,23,.12); font-size:.85rem; letter-spacing:.04em; word-break:break-all; }
.mfa-codes{ grid-column:1 / -1; display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:8px 14px; max-width:380px; margin:0 auto; }
.mfa-codes code{ padding:8px 10px; border-radius:10px; background:rgba(255,255,255,.8); border:1px solid rgba(17,20,23,.12); font-family:ui-monospace, SFMono-Regular, Menlo, monospace; font-size:1rem; text-align:center; color:#1f2937; }
.mfa-codes-panel{ margin:10px 0 0; }
.mfa-actions{ grid-column:1 / -1; display:flex; flex-wrap:wrap; gap:12px; justify-content:center; align-items:center; margin-top:16px; }
.mfa-done{ background:linear-gradient(140deg,#0d9488,#1A7A6E); border-color:transparent; }
@media (prefers-color-scheme: dark){
  .mfa-steps ol{ color:#f5f1e6; }
  .mfa-secret{ background:rgba(255,255,255,.08); color:#f5f1e6; border-color:rgba(255,255,255,.15); }
}
/* ekran 2FA leży nad planszą wyboru działu — chowamy jej panel, żeby nie prześwitywał przez rozmycie */
body:has(#loginScreen:not([hidden])) #startScreen .ss-panel{ visibility:hidden; }
