:root{--navy:#092d4f;--blue:#0e5fa7;--sky:#eaf4fb;--ink:#132535;--muted:#647789;--line:#dce6ee;--white:#fff;--accent:#f0c54c;--shadow:0 18px 48px rgba(9,45,79,.12)}
html{overflow-y:scroll;scrollbar-gutter:stable}
*{box-sizing:border-box}html{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:#f7fafc}body{margin:0;min-height:100vh}.site-header{height:76px;padding:0 max(24px,calc((100vw - 1180px)/2));display:flex;align-items:center;justify-content:space-between;background:var(--navy);color:white}.brand{display:flex;align-items:center;gap:12px;color:inherit;text-decoration:none}.brand-mark{display:grid;place-items:center;width:48px;height:48px;border:2px solid rgba(255,255,255,.65);font-size:14px;font-weight:900;letter-spacing:.05em;transform:skew(-7deg)}.brand strong,.brand small{display:block}.brand strong{font-size:17px}.brand small{margin-top:3px;color:#bcd1e2;font-size:12px}.status{font-size:12px;color:#d5e5f0}.status i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#58ca87;margin-right:7px;box-shadow:0 0 0 4px rgba(88,202,135,.12)}
main{min-height:calc(100vh - 150px)}.hero{min-height:560px;padding:74px max(24px,calc((100vw - 1180px)/2)) 94px;display:grid;grid-template-columns:minmax(0,.85fr) minmax(440px,1fr);gap:84px;align-items:start;background:linear-gradient(145deg,#f8fbfd 0%,#eef6fb 65%,#e6f1f8 100%);position:relative;overflow:hidden}.hero:after{content:"";position:absolute;width:500px;height:500px;border:1px solid rgba(14,95,167,.08);border-radius:50%;left:-260px;bottom:-330px;box-shadow:0 0 0 70px rgba(14,95,167,.025),0 0 0 140px rgba(14,95,167,.018)}.eyebrow{margin:0 0 18px;color:var(--blue);font-size:12px;font-weight:800;letter-spacing:.14em;text-transform:uppercase}.hero h1{font-family:Georgia,serif;font-size:clamp(46px,5vw,72px);line-height:.98;letter-spacing:-.045em;margin:0;max-width:580px;color:var(--navy)}.lead{font-size:18px;line-height:1.65;color:var(--muted);max-width:520px;margin:28px 0 0}.finder{position:relative;z-index:1;background:white;border:1px solid rgba(9,45,79,.08);border-radius:18px;padding:28px;box-shadow:var(--shadow)}.perspective{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;padding:5px;border-radius:12px;background:#edf3f7;margin-bottom:28px}.perspective button{appearance:none;border:0;background:transparent;color:#5c7181;border-radius:9px;padding:12px 8px;font:inherit;font-size:14px;font-weight:700;cursor:pointer}.perspective button span{font-size:16px;margin-right:4px}.perspective button[aria-selected=true]{background:white;color:var(--navy);box-shadow:0 2px 8px rgba(9,45,79,.1)}label{display:block;font-size:15px;font-weight:800;margin-bottom:9px}.search-wrap{position:relative}.search-wrap>span{position:absolute;left:14px;top:11px;font-size:22px;color:#698092}.search-wrap input{width:100%;border:1px solid #bacad6;border-radius:10px;padding:14px 42px;font:inherit;font-size:15px;outline:none;background:#fbfdfe}.search-wrap input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(14,95,167,.12)}.clear{position:absolute;right:8px;top:7px;width:34px;height:34px;border:0;background:transparent;color:#789;font-size:22px;cursor:pointer}.hint{font-size:12px;color:#8293a1;margin:8px 0 14px}.entity-list{max-height:214px;overflow:auto;border-top:1px solid var(--line)}.entity-option{display:flex;width:100%;align-items:center;justify-content:space-between;text-align:left;border:0;border-bottom:1px solid var(--line);background:white;padding:13px 5px;color:var(--ink);font:inherit;cursor:pointer}.entity-option:hover,.entity-option:focus{color:var(--blue);background:#f7fbfe;outline:none}.entity-option strong{font-size:14px}.entity-option small{display:block;color:#7d8d99;margin-top:2px}.entity-option em{font-style:normal;color:#9aabb7}
.schedule-section{padding:52px max(24px,calc((100vw - 1000px)/2)) 80px;background:#f7fafc}.schedule-heading{display:flex;justify-content:space-between;gap:24px;align-items:end}.back-link{border:0;background:none;color:var(--blue);font-weight:700;padding:0;margin-bottom:24px;cursor:pointer}.schedule-heading .eyebrow{margin-bottom:8px}.schedule-heading h2{font-family:Georgia,serif;color:var(--navy);font-size:36px;margin:0}.week-nav{display:flex;align-items:center;border:1px solid var(--line);border-radius:10px;background:white;overflow:hidden}.week-nav button{border:0;background:white;padding:12px 15px;color:var(--navy);font-weight:700;cursor:pointer}.week-nav .week-label{border-left:1px solid var(--line);border-right:1px solid var(--line);min-width:180px}.date-strip{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin:34px 0 28px}.date-strip button{border:1px solid var(--line);background:white;border-radius:10px;padding:11px 5px;color:#687b8a;cursor:pointer}.date-strip button strong,.date-strip button span{display:block}.date-strip button strong{font-size:17px;color:var(--navy);margin-top:4px}.date-strip button.active{background:var(--navy);border-color:var(--navy);color:#bdd1df}.date-strip button.active strong{color:white}.schedule-list{display:grid;gap:12px}.course-card{display:grid;grid-template-columns:104px 5px 1fr auto;gap:18px;align-items:stretch;background:white;border:1px solid var(--line);border-radius:13px;padding:18px;box-shadow:0 4px 14px rgba(9,45,79,.035)}.course-time{font-weight:800;color:var(--navy);font-size:15px}.course-time small{display:block;color:#82929f;font-weight:500;margin-top:5px}.course-accent{border-radius:8px;background:var(--blue)}.course-main h3{font-size:16px;margin:0 0 7px;color:var(--ink)}.course-main p{margin:0;color:#6c7f8d;font-size:13px}.course-meta{text-align:right;font-size:13px;color:#425a6b}.course-meta span{display:block;margin-bottom:6px}.type-badge{display:inline-block!important;border-radius:6px;background:var(--sky);color:var(--blue);padding:4px 7px;font-weight:700}.schedule-state{padding:28px;text-align:center;color:#6c7f8d}.updated{text-align:center;font-size:12px;color:#8797a3;margin-top:22px}footer{min-height:74px;padding:20px max(24px,calc((100vw - 1180px)/2));display:flex;justify-content:space-between;align-items:center;background:white;border-top:1px solid var(--line);font-size:12px;color:#778894}.footer-credit{line-height:1.6}.test-portal-banner{display:flex;align-items:center;justify-content:space-between;gap:22px;padding:13px max(24px,calc((100vw - 1180px)/2));background:#fff4d6;border-bottom:1px solid #e5c56c;color:#5e4910}.test-portal-banner div{display:flex;align-items:baseline;gap:12px;min-width:0}.test-portal-banner strong{color:#8a5a00;font-size:14px;white-space:nowrap}.test-portal-banner span{font-size:13px;line-height:1.4}.test-portal-banner a{flex:0 0 auto;border:1px solid #9d6800;border-radius:8px;padding:9px 14px;background:#fff;color:#795000;font-size:13px;font-weight:800;text-decoration:none}.test-portal-banner a:hover{background:#9d6800;color:#fff}
@media(max-width:850px){.status{display:none}.hero{grid-template-columns:1fr;gap:38px;padding-top:50px}.hero h1{font-size:52px}.finder{max-width:620px}.schedule-heading{align-items:start;flex-direction:column}.week-nav{width:100%}.week-nav .week-label{flex:1}.course-card{grid-template-columns:78px 4px 1fr}.course-meta{grid-column:3;text-align:left;display:flex;gap:12px;flex-wrap:wrap}.date-strip{overflow-x:auto;grid-template-columns:repeat(7,70px);padding-bottom:4px}footer{gap:8px;flex-direction:column;align-items:flex-start}}
@media(max-width:520px){.site-header{height:68px}.brand small{display:none}.hero{padding:38px 16px 54px}.hero h1{font-size:43px}.lead{font-size:16px}.finder{padding:17px;border-radius:14px}.perspective button{font-size:12px;padding:10px 3px}.perspective button span{display:none}.schedule-section{padding:34px 16px 60px}.schedule-heading h2{font-size:29px}.course-card{grid-template-columns:1fr 4px;gap:11px}.course-time{grid-column:1}.course-accent{grid-column:2;grid-row:1/4}.course-main,.course-meta{grid-column:1}.course-meta{display:block}.course-meta span{display:inline-block;margin-right:12px}.date-strip{margin-top:26px}}
@media(max-width:620px){.test-portal-banner{align-items:stretch;flex-direction:column;gap:10px;padding:12px 16px}.test-portal-banner div{align-items:flex-start;flex-direction:column;gap:3px}.test-portal-banner strong{white-space:normal}.test-portal-banner a{text-align:center}}
@media(prefers-reduced-motion:no-preference){.finder,.course-card{animation:rise .35s ease both}@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}}

/* Drzewa zasobów i widok tygodniowy */
.entity-list{max-height:320px}
.tree-branch{border-bottom:1px solid var(--line)}
.tree-branch summary{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:12px 6px;color:var(--navy);font-size:14px;font-weight:800;cursor:pointer;list-style:none}
.tree-branch summary::-webkit-details-marker{display:none}
.tree-branch summary:before{content:"+";display:grid;place-items:center;flex:0 0 18px;width:18px;height:18px;border-radius:5px;background:var(--sky);color:var(--blue)}
.tree-branch[open]>summary:before{content:"−"}
.tree-branch summary span{flex:1}
.tree-branch summary small{color:#8193a0}
.tree-content{margin-left:12px;padding-left:10px;border-left:1px solid #cbdce8}
.schedule-section{padding-left:max(24px,calc((100vw - 1100px)/2));padding-right:max(24px,calc((100vw - 1100px)/2))}
.schedule-controls{display:flex;flex-direction:column;align-items:flex-end;gap:10px}
.view-toggle-row{display:flex;align-items:center;gap:9px}
.year-breakdown-open{border:1px solid #a9c3da;border-radius:9px;padding:9px 14px;background:#eef4fa;color:var(--navy);font:inherit;font-size:12.5px;font-weight:850;cursor:pointer}
.year-breakdown-open:hover{border-color:var(--blue);background:#dfeefa}
.view-toggle{display:flex;padding:4px;background:#e8f0f5;border-radius:9px}
.view-toggle button{border:0;background:transparent;border-radius:7px;padding:8px 16px;color:#617687;font:inherit;font-size:13px;font-weight:800;cursor:pointer}
.view-toggle button[aria-pressed=true]{background:white;color:var(--navy);box-shadow:0 2px 8px rgba(9,45,79,.1)}
.color-mode-control{display:flex;align-items:center;gap:8px}.color-mode-control>span{color:#6c8190;font-size:11px;font-weight:850;letter-spacing:.06em;text-transform:uppercase}.color-mode-toggle{display:flex;padding:3px;border:1px solid #d4e1e9;border-radius:9px;background:#f2f6f8}.color-mode-toggle button{border:0;border-radius:6px;background:transparent;padding:7px 11px;color:#617687;font:inherit;font-size:12px;font-weight:800;cursor:pointer}.color-mode-toggle button[aria-pressed=true]{background:#fff;color:var(--navy);box-shadow:0 2px 7px rgba(9,45,79,.1)}.color-mode-toggle button[data-color-mode=subjects][aria-pressed=true]:before{content:"";display:inline-block;width:8px;height:8px;margin-right:6px;border-radius:50%;background:linear-gradient(135deg,#D4A0F0 0 33%,#79C400 33% 66%,#FF901E 66%)}
.week-nav .week-label{min-width:260px}
.date-strip[hidden]{display:none}
.weekly-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:18px;margin-top:28px}
.week-day{display:grid;gap:9px;min-width:0}
.week-day-header{display:flex;justify-content:space-between;align-items:baseline;margin:8px 0 2px;padding:0 4px;color:var(--navy);font-family:Georgia,serif;font-size:22px}
.week-day-header small{font-family:Inter,ui-sans-serif,system-ui,sans-serif;color:#728696;font-size:12px;font-weight:600}
.week-day .course-card{grid-template-columns:70px 4px 1fr;padding:14px;gap:11px}
.week-day .course-meta{grid-column:3;text-align:left;display:flex;gap:8px;flex-wrap:wrap}
.week-day.empty{opacity:.72}
.week-day.empty>p{margin:0;padding:22px;border:1px dashed #cbd8e1;border-radius:12px;text-align:center;color:#81919d;font-size:13px}
@media(max-width:850px){.schedule-controls{width:100%;align-items:stretch}.view-toggle-row,.color-mode-control{align-self:flex-start}.view-toggle-row{flex-wrap:wrap}.week-nav .week-label{min-width:0}.weekly-grid{grid-template-columns:1fr}}
.week-nav button:disabled{color:#aebbc4;background:#f5f8fa;cursor:not-allowed}
.week-nav select{appearance:auto;border:0;border-left:1px solid var(--line);border-right:1px solid var(--line);border-radius:0;background:white;padding:12px 36px 12px 15px;color:var(--navy);font:inherit;font-weight:700;text-align:center;cursor:pointer;outline:none}
.week-nav select:focus{box-shadow:inset 0 0 0 2px rgba(14,95,167,.22)}
.week-nav{overflow:visible}.week-nav>#prev-week{border-radius:9px 0 0 9px}.week-nav>#next-week{border-radius:0 9px 9px 0}.week-picker{position:relative;display:flex;min-width:260px}.week-picker>.week-label{display:flex;align-items:center;justify-content:space-between;gap:14px;width:100%;border:0;border-left:1px solid var(--line);border-right:1px solid var(--line);border-radius:0;background:#fff;padding:12px 15px;color:var(--navy);font:inherit;font-weight:700;cursor:pointer}.week-picker>.week-label:focus-visible{position:relative;z-index:2;outline:3px solid rgba(14,95,167,.2);outline-offset:-3px}.week-picker-menu{position:absolute;z-index:850;top:calc(100% + 9px);right:0;width:min(680px,calc(100vw - 32px));max-height:min(560px,68vh);overflow-y:auto;display:grid;grid-template-columns:1fr 1fr;gap:23px 28px;padding:20px;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:0 18px 48px rgba(9,45,79,.2)}.week-picker-menu[hidden]{display:none}.week-picker-month{min-width:0}.week-picker-month h3{margin:0 0 9px;color:#6c8190;font:850 11px/1.3 Inter,ui-sans-serif,system-ui,sans-serif;letter-spacing:.08em;text-transform:uppercase}.week-picker-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.week-nav .week-picker-grid button{border:1px solid #c7d7e1;border-radius:8px;background:#f8fbfd;padding:8px 9px;color:#39566a;font:inherit;font-size:12px;font-weight:750;text-align:center;cursor:pointer}.week-nav .week-picker-grid button:hover,.week-nav .week-picker-grid button:focus-visible{border-color:var(--blue);background:#edf6fb;color:var(--blue);outline:none}.week-nav .week-picker-grid button[aria-pressed=true]{border-color:var(--navy);background:var(--navy);color:#fff;box-shadow:0 4px 12px rgba(9,45,79,.18)}
@media(max-width:850px){.week-picker{min-width:0;flex:1}.week-picker-menu{right:auto;left:50%;width:min(680px,calc(100vw - 28px));transform:translateX(-50%)}}
@media(max-width:520px){.week-picker-menu{grid-template-columns:1fr;gap:20px;padding:16px}.week-picker-grid{grid-template-columns:1fr 1fr}.week-nav .week-picker-grid button{padding:9px 7px}}
.print-button{border:1px solid var(--blue);border-radius:9px;background:white;padding:9px 15px;color:var(--blue);font:inherit;font-size:13px;font-weight:800;cursor:pointer}
.print-button:hover{background:var(--sky)}
.semester-list{gap:28px;margin-top:28px}
.semester-week{padding:24px;background:white;border:1px solid var(--line);border-radius:16px;box-shadow:0 5px 18px rgba(9,45,79,.05)}
.semester-week>header{display:flex;justify-content:space-between;align-items:end;gap:16px;margin-bottom:20px;padding-bottom:13px;border-bottom:2px solid var(--navy)}
.semester-week>header p{margin:0;color:var(--blue);font-size:11px;font-weight:900;letter-spacing:.14em}
.semester-week>header h3{margin:0;color:var(--navy);font-family:Georgia,serif;font-size:22px}
.semester-days{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:18px}
.semester-days .week-day{align-self:start;align-content:start;break-inside:avoid}
.quick-links{display:flex;align-items:center;gap:8px}.quick-links a{border:1px solid rgba(255,255,255,.28);border-radius:7px;padding:7px 10px;color:white;text-decoration:none;font-size:12px;font-weight:800}.quick-links a:hover{background:rgba(255,255,255,.12)}
.quick-links .session-link{border:1px solid #f4cf70;border-radius:8px;padding:8px 13px;background:linear-gradient(135deg,#f3c34f,#df8d2d);color:#382405;font:inherit;font-size:12px;font-weight:900;box-shadow:0 4px 13px rgba(232,157,46,.28);cursor:pointer}.quick-links .session-link:hover{background:linear-gradient(135deg,#ffd86f,#eea13e);transform:translateY(-1px)}
.announcements{padding:28px max(24px,calc((100vw - 1180px)/2));display:grid;grid-template-columns:220px 1fr;gap:36px;background:white;border-bottom:1px solid var(--line)}.announcements[hidden]{display:none}.announcements-heading .eyebrow{margin-bottom:6px}.announcements-heading h2{margin:0;color:var(--navy);font-family:Georgia,serif;font-size:28px}.announcement-list{display:grid;gap:8px}.announcement-list p{margin:0;padding:11px 14px;border-left:3px solid #b8cad8;background:#f6f9fb;border-radius:0 8px 8px 0;color:#435b6c;font-size:14px;line-height:1.5}.announcement-list p.important{border-left-color:#c93d3d;background:#fff4f3;color:#8c2929;font-weight:700}.announcement-list a{color:var(--blue)}
.semester-picker{display:flex;padding:4px;background:#e8f0f5;border-radius:9px}.semester-picker[hidden]{display:none}.semester-picker button{border:0;background:transparent;border-radius:7px;padding:7px 13px;color:#617687;font:inherit;font-size:12px;font-weight:800;cursor:pointer}.semester-picker button[aria-pressed=true]{background:white;color:var(--navy);box-shadow:0 2px 8px rgba(9,45,79,.1)}
.hero-announcements{position:relative;z-index:1;min-width:0}.hero-announcements .eyebrow{margin-bottom:16px}#announcement-content{padding:24px;background:rgba(255,255,255,.76);border:1px solid rgba(9,45,79,.09);border-radius:16px;color:#344b5c;font-size:14px;line-height:1.55;box-shadow:0 10px 30px rgba(9,45,79,.06)}#announcement-content>p:first-child{color:var(--navy);font-size:17px;line-height:1.45}#announcement-content h2{font-size:19px}#announcement-content p{margin:12px 0}#announcement-content ol,#announcement-content ul{margin:8px 0 18px;padding-left:24px}#announcement-content li{margin:7px 0}#announcement-content hr{margin:20px 0;border:0;border-top:1px solid var(--line)}#announcement-content a{color:var(--blue)}.hero .finder{position:sticky;top:24px}
.date-strip{grid-template-columns:repeat(var(--day-count,5),minmax(100px,1fr))}
.course-resource{display:flex;align-items:baseline;gap:4px;flex-wrap:wrap}.course-resource.groups{margin-top:7px}.resource-link{display:inline;border:0;border-bottom:1px dotted currentColor;background:transparent;padding:0;color:var(--blue);font:inherit;cursor:pointer;text-align:left}.resource-link:hover,.resource-link:focus{color:var(--navy);border-bottom-style:solid;outline:none}.course-meta .resource-link{color:#425a6b}
.resource-entry{display:inline-block;white-space:nowrap}
.course-meta .course-room{display:flex;flex-wrap:wrap;justify-content:center;gap:3px 5px;margin:0}.course-meta .course-room>.resource-entry{display:inline-block;margin:0}.course-meta .course-room>.resource-entry .resource-link{display:inline}
@media(max-width:850px){.course-meta .course-room{justify-content:flex-start}}
.course-comment{margin:9px 0 0!important;color:#8795a0!important;font-size:12px!important;font-style:italic;line-height:1.45}.entity-option.selected{background:var(--sky);color:var(--blue)}.perspective button.active{background:white;color:var(--navy);box-shadow:0 2px 8px rgba(9,45,79,.1)}
.header-actions{display:flex;align-items:center;gap:14px}.archive-menu{display:flex;align-items:center;gap:8px;margin:0;color:#c9dce9;font-size:11px;font-weight:700}.archive-menu select{border:1px solid rgba(255,255,255,.28);border-radius:7px;background:#123d61;padding:7px 28px 7px 9px;color:white;font:inherit;font-size:12px;font-weight:800;cursor:pointer}
.selection-context{margin:7px 0 0;color:#718494;font-size:14px;font-style:italic}.archive-notice{padding:18px;border-left:4px solid var(--blue);background:var(--sky);border-radius:0 10px 10px 0}.archive-notice strong{color:var(--navy);font-family:Georgia,serif;font-size:22px}.archive-notice p{margin:7px 0 0!important;color:#526b7d}
.default-plan-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:14px}.default-plan-actions button{border:1px solid #aac0d0;border-radius:8px;background:white;padding:7px 10px;color:#31536b;font:inherit;font-size:11px;font-weight:800;cursor:pointer}.default-plan-actions button:hover{background:#edf5fa}.default-plan-actions #save-default-plan.active{border-color:#d2a82d;background:#fff8dc;color:#735b10}.default-plan-actions #remove-default-plan{border-color:transparent;background:transparent;color:#7a8d9b}.default-plan-actions span{width:100%;color:#668092;font-size:11px}
@media(max-width:700px){.semester-days{grid-template-columns:1fr}.semester-week{padding:16px}.semester-week>header{align-items:start;flex-direction:column}}
@media print{
  @page{
    size:A4 portrait;
    margin:12mm 12mm 17mm;
    @bottom-center{
      content:counter(page) " / " counter(pages);
      color:#536b7a;
      font:600 8pt Arial,sans-serif;
    }
  }
  html,body{height:auto!important;min-height:0!important;margin:0!important;padding:0!important;overflow:visible!important;background:white}
  .site-header,.test-portal-banner,.announcements,.hero,.back-link,.schedule-controls,.date-strip,.schedule-state,.updated,footer{display:none!important}
  main,.schedule-section,.print-layout{height:auto!important;min-height:0!important;margin:0!important;padding:0!important;background:white}
  .schedule-heading{display:block;margin:0 0 8mm}
  .schedule-heading .eyebrow{margin-bottom:2mm}
  .schedule-heading h2{font-size:24pt}
  .semester-list{display:block;margin:0}
  .semester-week{break-after:page;page-break-after:always;padding:0;border:0;border-radius:0;box-shadow:none}
  .semester-week:last-child{break-after:auto;page-break-after:auto}
  .semester-week>header{margin-bottom:5mm}
  .semester-days{grid-template-columns:1fr 1fr;gap:4mm}
  .course-card{break-inside:avoid-page!important;page-break-inside:avoid!important;-webkit-column-break-inside:avoid;box-decoration-break:clone}
  .week-day-header{break-after:avoid-page;page-break-after:avoid}
  .semester-days .course-card{padding:3mm;box-shadow:none}
  .resource-link{border:0;color:inherit}
}

/* Kolor zajęć: delikatne tło kafelka i wyraźny pasek z ATS/kolory.json. */
.course-card{background:linear-gradient(90deg,var(--course-tint,white),white 48%)}
.course-card.reservation-card{border-color:#c7cfd4;background:linear-gradient(90deg,#eef1f3,white 55%)}
.course-card.reservation-card.session-exam-card{border-color:#dda5a9;background:linear-gradient(90deg,#fff0f1,white 62%)}.course-card.reservation-card.session-credit-card{border-color:#e1c779;background:linear-gradient(90deg,#fff8df,white 62%)}.reservation-card.session-exam-card .course-accent{background:#c84b52}.reservation-card.session-credit-card .course-accent{background:#d49a24}.reservation-card.session-exam-card .type-badge{background:#f8dfe1;color:#9e2930}.reservation-card.session-credit-card .type-badge{background:#f8ebc9;color:#835a00}
.course-card.reservation-card.session-defense-card{border-color:#cdbce0;background:linear-gradient(90deg,#f6f0fb,white 62%)}.reservation-card.session-defense-card .course-accent{background:#7a55a3}.reservation-card.session-defense-card .type-badge{background:#e9def4;color:#59377d}
.rector-notice{grid-column:1/-1;margin:0 0 12px;padding:13px 15px;border:1px solid #d8ae4f;border-left:5px solid #b77600;border-radius:10px;background:#fff7dd;color:#5c4308}.rector-notice strong,.rector-notice span{display:inline-block}.rector-notice strong{margin-right:8px;color:#7a4e00}.rector-notice span{font-weight:800}.rector-notice p{margin:5px 0 2px}.rector-notice small{display:block;color:#6f5b2b}.course-card.rector-affected{border-color:#d1b66d;background:linear-gradient(90deg,#f3efe4,#fff 55%)}.course-card.rector-full{filter:saturate(.45)}.course-card.rector-partial{border-left:5px solid #b77600}.rector-card-label{display:inline-block!important;margin:0 0 7px!important;border-radius:6px;padding:4px 7px;background:#8a650d;color:#fff!important;font-weight:800;font-style:normal}
.academic-notice{grid-column:1/-1;display:grid;grid-template-columns:1fr auto;gap:4px 18px;margin:0 0 12px;padding:14px 16px;border:1px solid #c7d2d9;border-left:5px solid #647681;border-radius:11px;background:#f1f4f6;color:#314956}.academic-notice div{display:grid}.academic-notice span{font-size:10px;font-weight:900;letter-spacing:.1em;text-transform:uppercase}.academic-notice strong{font-family:Georgia,serif;font-size:19px;color:#203e52}.academic-notice time{align-self:center;font-size:12px;font-weight:800}.academic-notice p,.academic-notice small{grid-column:1/-1}.academic-notice p{margin:5px 0 0}.academic-notice small{color:#667985}.academic-notice.academic-holiday{border-color:#e1b9bb;border-left-color:#b52b32;background:#fff3f3;color:#79262a}.academic-notice.academic-holiday strong{color:#8e242a}.academic-notice.academic-day_off{border-color:#dfc98c;border-left-color:#a66c00;background:#fff8e4;color:#6b4a0b}.academic-notice.academic-day_off strong{color:#76510b}.academic-notice.academic-exam{border-color:#c5d0d7;border-left-color:#5d7381;background:#eef2f4}.course-card.calendar-affected{border-color:#d9aeb1;background:linear-gradient(90deg,#f3eeee,#fff 58%);filter:saturate(.38)}.course-card.calendar-affected .rector-card-label{background:#a12b32}.course-card.calendar-affected .course-accent{background:#9a7275}.course-card.calendar-session{border-color:#c9d2d8;background:linear-gradient(90deg,#edf0f2,#fff 68%);filter:saturate(.62)}.date-strip button.calendar-off-date:after,.date-strip button.calendar-exam-date:after{content:"";position:absolute;top:6px;right:7px;width:7px;height:7px;border-radius:50%;background:#b52b32}.date-strip button.calendar-exam-date:after{background:#687d89}.date-strip button{position:relative}.date-strip button.active.calendar-off-date:after,.date-strip button.active.calendar-exam-date:after{box-shadow:0 0 0 2px rgba(255,255,255,.8)}
@media(max-width:520px){.academic-notice{grid-template-columns:1fr}.academic-notice time,.academic-notice p,.academic-notice small{grid-column:1}.academic-notice time{margin-top:3px}.academic-notice strong{font-size:17px}}
.academic-notice.academic-intersemester{border-color:#c8c6d8;border-left-color:#706a96;background:#f3f2f8;color:#514d70}.academic-notice.academic-intersemester strong{color:#4d486f}
.academic-notice.academic-camp{border-color:#eec89a;border-left-color:#d9750d;background:#fff5e9;color:#7a3d05}.academic-notice.academic-camp strong{color:#8a4406}
.academic-notice.academic-classes{border-color:#a9cbe0;border-left-color:#1c86c9;background:#eaf6fd;color:#0d5a86}.academic-notice.academic-classes strong{color:#0b527a}
.date-strip button.calendar-camp-date:after{content:"";position:absolute;top:6px;right:7px;width:7px;height:7px;border-radius:50%;background:#d9750d}.date-strip button.active.calendar-camp-date:after{box-shadow:0 0 0 2px rgba(255,255,255,.8)}
.academic-notice.academic-internship{border-color:#a9d1c7;border-left-color:#247862;background:#eff9f6;color:#265f52}.academic-notice.academic-internship strong{color:#1f6554}
.academic-notice.academic-summer_internship{border-color:#a9d1c7;border-left-color:#247862;background:#eff9f6;color:#265f52}.academic-notice.academic-summer_internship strong{color:#1f6554}
.date-strip button.calendar-internship-date:after{content:"";position:absolute;top:6px;right:7px;width:7px;height:7px;border-radius:50%;background:#687d89}.date-strip button.active.calendar-internship-date:after{box-shadow:0 0 0 2px rgba(255,255,255,.8)}
.academic-notice.academic-publication_pending{border-color:#e3accf;border-left-color:#b03e88;background:#fdeef6;color:#7a2350}.academic-notice.academic-publication_pending strong{color:#8a2a5c}.date-strip button.calendar-pending-date:after{content:"";position:absolute;top:6px;right:7px;width:7px;height:7px;border-radius:50%;background:#b03e88}.date-strip button.active.calendar-pending-date:after{box-shadow:0 0 0 2px rgba(255,255,255,.8)}
.date-strip button.rector-hours-date:after{content:"";position:absolute;top:6px;right:7px;width:7px;height:7px;border-radius:50%;background:#b77600}.date-strip button.active.rector-hours-date:after{box-shadow:0 0 0 2px rgba(255,255,255,.8)}
.course-card{grid-template-columns:104px 5px minmax(0,1fr) minmax(150px,210px)}.course-time{align-self:center;font-size:17px}.course-title-row{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 9px;margin-bottom:7px}.course-title-row h3{margin:0}.course-title-row .type-badge{flex:0 0 auto;padding:3px 7px;font-size:11px}.course-meta{align-self:stretch;display:grid;align-content:center;gap:6px;border-left:1px solid #dbe5eb;padding-left:18px;text-align:center}.course-meta .course-room{margin:0;color:var(--navy);font-size:18px;font-weight:850}.course-meta .course-room .resource-link{color:var(--navy);font-weight:850}.course-room-comment{margin:0;color:#7b8993;font-size:11px;font-style:italic;line-height:1.35}.week-day .course-title-row{display:grid;gap:5px}.week-day .course-title-row .type-badge{width:max-content}.week-day .course-meta{border-left:0;padding-left:0;text-align:left}.week-day .course-meta .course-room{font-size:12px}
@media(max-width:850px){.course-card{grid-template-columns:78px 4px minmax(0,1fr)}.course-meta{grid-column:3;display:grid;gap:4px;border-left:0;padding-left:0;text-align:left}.course-meta .course-room{font-size:13px}.course-room-comment{width:100%}}
@media(max-width:520px){.course-card{grid-template-columns:minmax(0,1fr) 4px}.course-meta{grid-column:1;display:grid}.course-title-row{display:flex}.course-time{font-size:21px;line-height:1.2;white-space:nowrap}.course-time small{display:inline;margin:0 0 0 7px;font-size:14px;font-weight:500}}
.reservation-card .course-time,.reservation-card .course-main h3{color:#46535c}
.reservation-card .type-badge{background:#e2e7ea;color:#53616a}
.finder.reservation-mode{padding-bottom:5px}
.finder.reservation-mode .perspective{margin-bottom:0}
.finder.reservation-mode>#search-label,.finder.reservation-mode>.search-wrap,.finder.reservation-mode>.hint,.finder.reservation-mode>.entity-list{display:none}
.compatibility-notice{display:none;padding:12px max(18px,calc((100vw - 1180px)/2));align-items:center;justify-content:center;flex-wrap:wrap;gap:8px 16px;background:#fff4d8;border-bottom:1px solid #e4c66e;color:#634b0b;font-size:13px;line-height:1.4;text-align:center}
.compatibility-notice strong{color:#4f3b08}.compatibility-notice a,.no-script-notice a{display:inline-block;border-radius:7px;background:#092d4f;padding:7px 11px;color:#fff;font-weight:800;text-decoration:none}
.legacy-browser .compatibility-notice,.portal-start-failed .compatibility-notice{display:flex}
.no-script-notice{padding:14px 18px;background:#fff4d8;border-bottom:1px solid #e4c66e;color:#634b0b;text-align:center}.no-script-notice strong{margin-right:12px}
.print-layout{display:none}

/* Zwarty układ tabeli używany wyłącznie podczas drukowania i zapisu do PDF. */
@media print{
  .schedule-heading,.schedule-list{display:none!important}
  .print-layout{display:block!important;color:#172c3b;font:8.5pt/1.25 Arial,sans-serif}
  .print-title{display:grid;grid-template-columns:1fr auto;align-items:end;margin:0 0 4mm;padding:0 0 3mm;border-bottom:1.2pt solid #173d5b}
  .print-title p{grid-column:1;margin:0 0 1mm;color:#27658f;font-size:7.5pt;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
  .print-title p small{display:block;margin-top:.7mm;color:#536b7a;font-size:6.8pt;font-weight:600;letter-spacing:.05em;text-transform:none}
  .print-title h1{grid-column:1;margin:0;font:700 16pt/1.1 Georgia,serif;color:#092d4f}
  .print-title span{grid-column:2;grid-row:1/3;align-self:end;color:#536b7a;font-size:8pt}
  .print-table{width:100%;border-collapse:collapse;table-layout:fixed}
  .print-table .col-day{width:13%}.print-table .col-time{width:12%}.print-table .col-subject{width:36%}.print-table .col-room{width:15%}.print-table .col-details{width:24%}
  .print-table thead{display:table-header-group}
  .print-table th{padding:2mm 1.5mm;border:1px solid #9fadb7;background:#e8f0f5;color:#173d5b;text-align:left;font-size:7.5pt}
  .print-table td{padding:1mm 1.4mm;border:1px solid #aab6be;vertical-align:middle;overflow-wrap:anywhere}
  .print-table tr{break-inside:avoid-page;page-break-inside:avoid}
  .print-table .print-week-row{break-after:avoid-page!important;page-break-after:avoid!important;-webkit-column-break-after:avoid}
  .print-table .print-week-row+tr{break-before:avoid-page!important;page-break-before:avoid!important}
  .print-table .print-week-row th{padding:1.5mm 1.8mm;background:#e3e8ec!important;box-shadow:inset 0 0 0 1000px #e3e8ec!important;color:#102f49;font-size:8pt;text-transform:none;letter-spacing:.02em;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .print-table .print-rector-row{break-after:avoid-page!important;page-break-after:avoid!important}.print-table .print-rector-row th{padding:1.6mm 1.8mm;border-color:#b88a25;background:#fff2c9;color:#6c4800;font-size:8pt}.print-rector-impact{display:block!important;margin-top:.7mm;color:#7a5200;font-size:7pt;font-weight:800}
  .print-day{background:#f0f4f7;text-align:center;vertical-align:middle!important}
  .print-day strong,.print-day span,.print-subject small{display:block}
  .print-day strong{color:#173d5b;font-size:8.5pt}.print-day span{margin-top:.7mm;color:#617581;font-size:7.5pt}
  .print-time,.print-room{text-align:center}.print-time{white-space:nowrap;font-weight:700;color:#173d5b}
  .print-subject strong{font-weight:700}.print-kind{font-weight:400;font-style:italic}.print-subject small{display:block;margin-top:.35mm;color:#647782;font-size:7.2pt;font-style:italic}
}
.course-card .course-accent{background:var(--course-color,var(--blue))}
body.subject-colors .course-card:not(.reservation-card):not(.rector-affected):not(.calendar-affected):not(.calendar-session){border-color:color-mix(in srgb,var(--course-color) 34%,#d4e1e9);background:linear-gradient(105deg,var(--course-tint,white),rgba(255,255,255,.97) 78%)}body.subject-colors .course-card .course-accent{box-shadow:0 0 0 1px color-mix(in srgb,var(--course-color) 45%,transparent)}
@media(max-width:850px){
  .archive-menu span{display:none}.header-actions{gap:7px}
  .quick-links{gap:4px}.quick-links a{padding:6px 7px;font-size:11px}
  .announcements{grid-template-columns:1fr;gap:14px}
  .weekly-grid,.semester-days{grid-template-columns:minmax(0,1fr)!important}
  .week-day,.week-day .course-card,.week-day .course-main{min-width:0}
}
@media(max-width:520px){
  .site-header{height:auto;min-height:68px;padding:8px 12px;align-items:flex-start}.brand-mark{width:40px;height:40px}.brand strong{font-size:14px}.header-actions{align-items:flex-end;flex-direction:column;gap:5px}.archive-menu select{max-width:126px;padding:5px 22px 5px 7px}.quick-links a{padding:5px;font-size:10px}.quick-links a:nth-child(2){font-size:0}.quick-links a:nth-child(2):after{content:"e-AWF";font-size:10px}
  .announcements{padding:22px 16px}
  #announcement-content{padding:17px;font-size:13px}#announcement-content>p:first-child{font-size:15px;margin-bottom:24px!important}.hero .finder{position:relative;top:auto}
  .date-strip{grid-template-columns:repeat(var(--day-count,5),minmax(72px,1fr));min-width:max-content}
  .week-day .course-card{grid-template-columns:4px minmax(0,1fr);gap:9px;padding:12px}
  .week-day .course-time{grid-column:2;grid-row:1}
  .week-day .course-accent{grid-column:1;grid-row:1/4}
  .week-day .course-main,.week-day .course-meta{grid-column:2}
}

@media(max-width:520px){
  .default-plan-actions{align-items:stretch;flex-direction:column}.default-plan-actions button{width:100%}
}


/* Pełna identyfikacja uczelni i dodatkowe skróty. */
.site-header{height:auto;min-height:88px;padding-top:10px;padding-bottom:10px;gap:18px}
.brand{min-width:0}.brand-logo{width:113px;height:30px;object-fit:contain;border-radius:4px;flex:0 0 auto}
.brand strong{max-width:560px;font-size:14px;line-height:1.25}.brand small{font-size:11px}
.header-actions{min-width:0}.quick-links{justify-content:flex-end;flex-wrap:wrap}
footer{flex-wrap:wrap}footer a{color:var(--blue);font-weight:700}
.google-calendar{display:inline-block;margin-top:8px;color:#1769aa;text-decoration:none;font-size:11px;font-weight:800;white-space:nowrap}
.google-calendar:hover{text-decoration:underline}
@media(max-width:850px){
  .brand-logo{width:90px;height:24px}.brand strong{max-width:390px;font-size:12px}.brand small{font-size:10px}
}
@media(max-width:620px){
  .site-header{align-items:flex-start}.brand-logo{width:72px;height:19px}.brand strong{max-width:210px;font-size:10px}.brand small{display:block;font-size:9px}
  .quick-links{max-width:210px}.quick-links a{font-size:9px!important}.quick-links a:nth-child(2):after{font-size:9px}
}

/* Wersja v32: pięć dni mieści się bez przewijania na wąskim telefonie. */
@media(max-width:520px){
  .date-strip{width:100%;min-width:0;grid-template-columns:repeat(var(--day-count,5),minmax(0,1fr));gap:4px;overflow:visible}
  .date-strip button{min-width:0;padding:8px 2px;font-size:11px}
  .date-strip button strong{font-size:15px;margin-top:2px}
}

/* Wersja v25: ciaśniejsze kafelki mobilne i wyrównanie akcji. */
@media(min-width:621px) and (max-width:1050px){
  .faculty-links{width:max-content;max-width:100%;margin-left:auto;justify-content:flex-end!important;overflow:visible}
}
@media(max-width:620px){
  .output-actions{flex-direction:column;align-items:stretch}
  .output-actions button{width:100%;flex:none}
  .schedule-section{padding-left:8px;padding-right:8px}
  .course-card{padding:10px 8px;gap:7px;border-radius:10px}
  .course-time{font-size:13px}.course-time small{margin-top:2px;font-size:11px}
  .course-main h3{font-size:14px;line-height:1.28;margin-bottom:5px}
  .course-main p,.course-meta{font-size:11px;line-height:1.35}
  .course-resource{gap:2px}.course-resource.groups{margin-top:4px}
  .course-meta span{margin-right:6px;margin-bottom:4px}
  .type-badge{padding:3px 5px}
}

/* Wersja v22: sticky header, poprawne ukrywanie hero i wygodna nawigacja. */
[hidden]{display:none!important}
.site-header{position:sticky;top:0;z-index:1000}
.schedule-section{scroll-margin-top:132px}
.archive-menu{align-items:center}.archive-menu span{display:flex;align-items:center;align-self:stretch;line-height:1.15}
.hero-announcements>#academic-year{display:flex;width:max-content;max-width:100%;margin-left:auto;margin-right:auto;text-align:center;justify-content:center}
.output-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.output-actions button{white-space:nowrap}
.back-to-top{position:fixed;right:22px;bottom:22px;z-index:900;width:46px;height:46px;border:1px solid rgba(255,255,255,.45);border-radius:50%;background:var(--navy);color:#fff;font:inherit;font-size:23px;font-weight:800;box-shadow:0 8px 24px rgba(9,45,79,.24);cursor:pointer;opacity:0;pointer-events:none;transform:translateY(10px);transition:.2s ease}
.back-to-top.visible{opacity:1;pointer-events:auto;transform:translateY(0)}
.back-to-top:hover{background:var(--blue)}
.changelog-open{position:fixed;left:18px;bottom:18px;z-index:910;border:1px solid #b78612;border-radius:999px;padding:10px 15px;background:#fff4d6;color:#795000;font:inherit;font-size:13px;font-weight:850;box-shadow:0 8px 24px rgba(9,45,79,.16);cursor:pointer}.changelog-open:hover{background:#9d6800;color:#fff}.changelog-panel{position:fixed;left:18px;bottom:70px;z-index:920;width:min(420px,calc(100vw - 36px));max-height:min(560px,70vh);overflow:auto;border:1px solid #c9d9e4;border-radius:15px;background:#fff;color:#294354;box-shadow:0 18px 50px rgba(9,45,79,.25)}.changelog-panel header{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;gap:15px;padding:16px 18px;background:#092d4f;color:#fff}.changelog-panel h2{margin:0;color:#fff;font:700 20px Georgia,serif}.changelog-panel header button{width:32px;height:32px;border:1px solid rgba(255,255,255,.4);border-radius:50%;background:transparent;color:#fff;font-size:22px;line-height:1;cursor:pointer}.changelog-panel #changelog-content{padding:18px;white-space:pre-wrap;font-size:13px;line-height:1.65}
.session-panel{position:fixed;z-index:1010;inset:94px max(18px,calc((100vw - 1100px)/2)) 28px;overflow:auto;overscroll-behavior:contain;border:1px solid #c9d9e4;border-radius:18px;background:#f7fafc;color:#294354;box-shadow:0 24px 80px rgba(9,45,79,.35)}body.session-panel-open{overflow:hidden}.session-panel[hidden]{display:none}.session-panel>header{position:sticky;z-index:2;top:0;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:19px 24px;background:linear-gradient(135deg,#8f2932,#c75a45);color:#fff}.session-panel>header span{font-size:10px;font-weight:900;letter-spacing:.14em;text-transform:uppercase}.session-panel>header h2{margin:2px 0 0;color:#fff;font:700 27px Georgia,serif}.session-panel>header button{width:36px;height:36px;border:1px solid rgba(255,255,255,.5);border-radius:50%;background:transparent;color:#fff;font-size:24px;cursor:pointer}.session-controls{display:flex;align-items:end;justify-content:space-between;gap:14px;padding:18px 24px;border-bottom:1px solid var(--line);background:#fff;flex-wrap:wrap}.session-filters{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.session-controls label{margin:0;font-size:13px}.session-filter-year{min-width:130px}.session-filter-teacher{min-width:170px}.session-controls select{width:100%;margin-top:5px;border:1px solid #b9ccd8;border-radius:9px;padding:9px 10px;background:#fff;color:var(--ink);font:inherit;font-size:13px}.session-kind-filter{display:flex;gap:4px;padding:4px;border-radius:10px;background:#edf3f7}.session-kind-filter button{border:0;border-radius:7px;padding:7px 10px;background:transparent;color:#607484;font:inherit;font-size:11.5px;font-weight:850;cursor:pointer;white-space:nowrap}.session-kind-filter button[aria-pressed=true]{background:#fff;color:var(--navy);box-shadow:0 2px 8px rgba(9,45,79,.1)}.session-state{margin:0;padding:18px 24px;color:#6c8190;text-align:center}.session-list{display:grid;gap:18px;padding:0 24px 28px}.session-day{display:grid;gap:9px}.session-day>h3{margin:0;padding-bottom:8px;border-bottom:2px solid var(--navy);color:var(--navy);font:700 21px Georgia,serif}.session-entry{display:grid;grid-template-columns:95px 6px minmax(0,1fr) minmax(125px,180px);gap:14px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:14px;background:#fff}.session-entry.exam{border-color:#e4b1b4;background:#fff7f7}.session-entry.credit{border-color:#e6cf91;background:#fffaf0}.session-entry time{color:var(--navy);font-weight:900}.session-entry i{align-self:stretch;border-radius:6px;background:#c84b52}.session-entry.credit i{background:#d49a24}.session-entry h4{margin:0 0 5px;color:var(--ink);font-size:15px}.session-entry p{margin:2px 0;color:#627786;font-size:12px}.session-entry .session-room{color:var(--navy);font-weight:850;text-align:center}.session-badge{display:inline-block;margin-left:7px;border-radius:6px;padding:3px 7px;background:#f8dfe1;color:#9e2930;font-size:10px;font-weight:900;text-transform:uppercase}.session-entry.credit .session-badge{background:#f8ebc9;color:#835a00}
@media(max-width:700px){.session-panel{inset:12px;border-radius:14px}.session-controls{align-items:stretch;flex-direction:column}.session-filters{flex-direction:column;width:100%}.session-controls label{width:100%;min-width:0}.session-kind-filter{width:100%;overflow-x:auto}.session-entry{grid-template-columns:62px 5px minmax(0,1fr)}.session-entry time{display:block}.session-entry time span,.session-entry time small{display:block}.session-entry time small{margin-top:2px;color:#718492;font-size:11px;font-weight:700}.session-entry time small:before{content:"do "}.session-entry .session-room{grid-column:3;text-align:left}.quick-links .session-link{padding:7px 9px}}
.year-breakdown-panel{position:fixed;z-index:1010;inset:94px max(18px,calc((100vw - 900px)/2)) 28px;overflow:auto;overscroll-behavior:contain;border:1px solid #c9d9e4;border-radius:18px;background:#f7fafc;color:#294354;box-shadow:0 24px 80px rgba(9,45,79,.35)}
.year-breakdown-panel[hidden]{display:none}
.year-breakdown-panel>header{position:sticky;z-index:2;top:0;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:19px 24px;background:linear-gradient(135deg,#0e5fa7,#173d5b);color:#fff}
.year-breakdown-panel>header span{font-size:10px;font-weight:900;letter-spacing:.14em;text-transform:uppercase;opacity:.85}
.year-breakdown-panel>header h2{margin:2px 0 0;color:#fff;font:700 27px Georgia,serif}
.year-breakdown-panel>header button{width:36px;height:36px;border:1px solid rgba(255,255,255,.5);border-radius:50%;background:transparent;color:#fff;font-size:24px;cursor:pointer;flex:0 0 auto}
.year-breakdown-panel .session-state{margin:0;padding:18px 24px;color:#6c8190;text-align:center}
.year-breakdown-list{display:grid;gap:24px;padding:20px 24px 30px}
.year-breakdown-semester{display:grid;gap:11px}
.year-breakdown-semester>h3{margin:0;padding-bottom:8px;border-bottom:2px solid var(--navy);color:var(--navy);font:700 21px Georgia,serif}
.year-breakdown-items{display:grid;gap:10px}
.year-breakdown-entry{display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:center;border:1px solid #c7d2d9;border-left:5px solid #647681;border-radius:11px;padding:13px 16px;background:#f1f4f6;color:#314956}
.year-breakdown-entry time{white-space:nowrap}
.year-breakdown-entry time{font-weight:800;font-size:13px}
.year-breakdown-entry>div{display:grid;gap:2px}
.year-breakdown-entry span{font-size:10px;font-weight:900;letter-spacing:.1em;text-transform:uppercase}
.year-breakdown-entry strong{font-family:Georgia,serif;font-size:16px}
.year-breakdown-entry em{font-style:normal;justify-self:start;margin-top:2px;border-radius:999px;padding:2px 9px;background:rgba(255,255,255,.65);font-size:11px;font-weight:800}
.year-breakdown-entry p{margin:3px 0 0;font-size:12.5px}
.year-breakdown-entry.academic-holiday{border-color:#e1b9bb;border-left-color:#b52b32;background:#fff3f3;color:#79262a}.year-breakdown-entry.academic-holiday strong{color:#8e242a}
.year-breakdown-entry.academic-day_off{border-color:#dfc98c;border-left-color:#a66c00;background:#fff8e4;color:#6b4a0b}.year-breakdown-entry.academic-day_off strong{color:#76510b}
.year-breakdown-entry.academic-exam{border-color:#c5d0d7;border-left-color:#5d7381;background:#eef2f4}
.year-breakdown-entry.academic-intersemester{border-color:#c8c6d8;border-left-color:#706a96;background:#f3f2f8;color:#514d70}.year-breakdown-entry.academic-intersemester strong{color:#4d486f}
.year-breakdown-entry.academic-camp{border-color:#eec89a;border-left-color:#d9750d;background:#fff5e9;color:#7a3d05}.year-breakdown-entry.academic-camp strong{color:#8a4406}
.year-breakdown-entry.academic-classes{border-color:#a9cbe0;border-left-color:#1c86c9;background:#eaf6fd;color:#0d5a86}.year-breakdown-entry.academic-classes strong{color:#0b527a}
.year-breakdown-entry.academic-internship{border-color:#a9d1c7;border-left-color:#247862;background:#eff9f6;color:#265f52}.year-breakdown-entry.academic-internship strong{color:#1f6554}
.year-breakdown-entry.academic-summer_internship{border-color:#a9d1c7;border-left-color:#247862;background:#eff9f6;color:#265f52}.year-breakdown-entry.academic-summer_internship strong{color:#1f6554}
.year-breakdown-entry.academic-publication_pending{border-color:#e3accf;border-left-color:#b03e88;background:#fdeef6;color:#7a2350}.year-breakdown-entry.academic-publication_pending strong{color:#8a2a5c}
@media(max-width:700px){.year-breakdown-panel{inset:12px;border-radius:14px}.year-breakdown-entry{grid-template-columns:1fr}}
.session-mobile-link{display:none;border:1px solid #f4cf70;border-radius:7px;padding:7px 9px;background:linear-gradient(135deg,#f3c34f,#df8d2d);color:#382405;font:inherit;font-size:10px;font-weight:900;line-height:1.15;box-shadow:0 3px 10px rgba(232,157,46,.25);cursor:pointer}
.session-entry.past{opacity:.58;filter:grayscale(.35);background:#f1f3f4}
.session-entry.defense{border-color:#cdbce0;background:#faf7fd}.session-entry.defense i{background:#7a55a3}.session-entry.defense .session-badge{background:#e9def4;color:#59377d}.session-entry time{display:flex;white-space:nowrap}.session-entry time small{font:inherit}.session-entry time small:before{content:"–"}
@media(max-width:620px){.session-mobile-link{display:inline-flex;align-items:center;justify-content:center}}
@media(max-width:700px){.session-entry time{display:block}.session-entry time span,.session-entry time small{display:block}.session-entry time small:before{content:"do "}}
.session-link[hidden],.session-mobile-link[hidden]{display:none!important}
@media(max-width:620px){.header-main-row{width:auto;align-items:center;flex-direction:row;gap:6px}.archive-menu select{max-width:128px}.session-mobile-link{flex:0 0 auto;padding:7px 8px;font-size:10px;white-space:nowrap}.session-entry time span{font-size:16px;line-height:1.1}.session-entry time small{font-size:10px;line-height:1.2}}
@media(max-width:850px){
  .schedule-section{scroll-margin-top:110px}.output-actions{justify-content:flex-start}
}
@media(max-width:520px){
  .schedule-section{scroll-margin-top:145px}.output-actions{width:100%;gap:6px}
  .output-actions button{flex:1;padding:9px 8px;font-size:11px}
  .back-to-top{right:14px;bottom:14px;width:42px;height:42px}
}
@media print{.back-to-top{display:none!important}}
.accessibility-open{position:fixed;right:18px;bottom:78px;z-index:910;display:flex;align-items:center;gap:7px;border:1px solid #8fb2ca;border-radius:999px;padding:9px 13px;background:#fff;color:#074f82;font:inherit;font-size:12px;font-weight:850;box-shadow:0 8px 24px rgba(9,45,79,.16);cursor:pointer}.accessibility-open span:first-child{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#092d4f;color:#fff;font-size:12px}.accessibility-open:hover{background:#eaf4fb}.accessibility-panel{position:fixed;right:18px;bottom:128px;z-index:930;width:min(310px,calc(100vw - 36px));overflow:hidden;border:1px solid #b8ccd9;border-radius:15px;background:#fff;color:#203a4c;box-shadow:0 18px 50px rgba(9,45,79,.25)}.accessibility-panel header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;background:#092d4f;color:#fff}.accessibility-panel h2{margin:0;color:#fff;font:700 18px Georgia,serif}.accessibility-panel header button{width:32px;height:32px;border:1px solid rgba(255,255,255,.45);border-radius:50%;background:transparent;color:#fff;font-size:21px;line-height:1;cursor:pointer}.accessibility-options{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:14px}.accessibility-options button{min-height:42px;border:1px solid #b9ccd8;border-radius:8px;background:#f8fbfd;color:#27485e;font:inherit;font-size:12px;font-weight:750;cursor:pointer}.accessibility-options button[aria-pressed=true]{border-color:#0e5fa7;background:#0e5fa7;color:#fff}.accessibility-font{display:grid;grid-template-columns:1fr 1fr;gap:6px;grid-column:1/-1}.accessibility-reset{grid-column:1/-1}.a11y-font-1 body{zoom:1.1}.a11y-font-2 body{zoom:1.2}.a11y-contrast{--navy:#000;--blue:#0048ff;--sky:#fff;--ink:#000;--muted:#111;--line:#000;--white:#fff;--accent:#ff0;--shadow:none}.a11y-contrast body,.a11y-contrast main,.a11y-contrast .hero,.a11y-contrast .schedule-section,.a11y-contrast footer{background:#fff!important;color:#000!important}.a11y-contrast button,.a11y-contrast input,.a11y-contrast select,.a11y-contrast .finder,.a11y-contrast .course-card{border-color:#000!important;box-shadow:none!important}.a11y-grayscale{filter:grayscale(1)}.a11y-links a{text-decoration:underline!important;text-decoration-thickness:2px!important;text-underline-offset:3px}.a11y-spacing p,.a11y-spacing li,.a11y-spacing td,.a11y-spacing th,.a11y-spacing label{line-height:1.9!important;letter-spacing:.025em}.a11y-spacing .course-card,.a11y-spacing .entity-option{padding-top:1.35em;padding-bottom:1.35em}
.course-card.linked-course-target{position:relative;z-index:2;outline:4px solid rgba(14,95,167,.28);outline-offset:4px;box-shadow:0 12px 34px rgba(14,95,167,.24);animation:linkedCoursePulse 1.15s ease-in-out 2}@keyframes linkedCoursePulse{0%,100%{transform:scale(1)}50%{transform:scale(1.012)}}@media(prefers-reduced-motion:reduce){.course-card.linked-course-target{animation:none}}
@media(max-width:620px){.accessibility-open{right:14px;bottom:66px;padding:7px}.accessibility-open span:last-child{display:none}.accessibility-panel{right:12px;bottom:112px;width:min(310px,calc(100vw - 24px))}}
@media print{.accessibility-open,.accessibility-panel{display:none!important}.a11y-font-1 body,.a11y-font-2 body{zoom:1}.a11y-grayscale{filter:none}}
@media print{
  .changelog-open,.changelog-panel{display:none!important}
  body.printing-graphic{width:281mm!important;max-width:none!important;page:graphic}
  body.printing-graphic .graphic-print{display:block!important;width:281mm!important;max-width:none!important;page:graphic}
  .graphic-page{width:281mm!important;break-after:page;page-break-after:always;break-inside:avoid-page;page-break-inside:avoid}
  .graphic-page:last-child{break-after:auto;page-break-after:auto}
  .graphic-print .print-title{margin-bottom:3mm}
  .graphic-schedule{display:grid;width:281mm!important;max-width:none!important;border-top:1px solid #65727a;border-left:1px solid #65727a;background:#fff;break-inside:avoid-page;page-break-inside:avoid}
  .graphic-schedule>*{min-width:0}
  .graphic-corner,.graphic-day,.graphic-group,.graphic-time,.graphic-cell{display:flex;align-items:center;justify-content:center;border-right:1px solid #65727a;border-bottom:1px solid #65727a;text-align:center}
  .graphic-corner,.graphic-day,.graphic-group{background:#edf1f4}
  .graphic-day{font-weight:800;font-size:7.5pt}.graphic-group{padding:1mm;font-size:6.5pt}.graphic-time{padding:0 1mm;background:#f6f8f9;font-size:6.3pt;font-weight:700}
  .graphic-cell{background:#fff}
  .graphic-time.graphic-line-quarter,.graphic-cell.graphic-line-quarter{border-bottom-width:.35px;border-bottom-color:#c7cfd4}
  .graphic-time.graphic-line-half,.graphic-cell.graphic-line-half{border-bottom-width:1px;border-bottom-color:#7f8a91}
  .graphic-time.graphic-line-hour,.graphic-cell.graphic-line-hour{border-bottom-width:1.6px;border-bottom-color:#4c5961}
  .graphic-event{z-index:3;align-self:stretch;margin:.35mm;padding:.7mm;border:1px solid rgba(20,40,55,.35);border-radius:1.2mm;overflow:hidden;color:#10293a;text-align:center;font-size:6.3pt;line-height:1.15}
  .graphic-event strong,.graphic-event span{display:block}.graphic-event strong{font-size:6.6pt}.graphic-event span{margin-top:.4mm}.graphic-event .graphic-event-time{font-weight:800;color:#173d5b}
  .graphic-event.graphic-event-detailed{display:flex;flex-direction:column;align-items:stretch;justify-content:center}
  .graphic-event.graphic-event-detailed .graphic-event-time{margin-top:0}
  .graphic-event.graphic-event-with-legend{border-color:rgba(20,40,55,.5);-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .graphic-event.graphic-rector{border-color:#9a6b00!important}.graphic-event.graphic-rector-full{filter:grayscale(.65)}.graphic-event .graphic-rector-impact{margin:.5mm 0;padding:.35mm;background:#fff2c9;color:#684600;font-size:5.4pt;font-weight:900;line-height:1.05}
  .graphic-legend{display:grid;grid-template-columns:27mm 1fr;gap:2.5mm;margin-top:2mm;padding-top:1.8mm;border-top:1px solid #aebbc3;color:#233d4e;font-size:6pt;line-height:1.18;break-inside:avoid-page;page-break-inside:avoid}.graphic-legend>strong{font-size:6.7pt;color:#092d4f}.graphic-legend>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7mm 3mm}.graphic-legend span{min-width:0}.graphic-legend b{color:#092d4f}.graphic-legend small{grid-column:1/-1;margin-top:.4mm;padding-top:.5mm;border-top:.4px solid #d4dde2;color:#536b7b;font-size:5.5pt}
  .graphic-short-legend>div{grid-template-columns:repeat(2,minmax(0,1fr))}.graphic-short-legend span{display:flex;align-items:flex-start;gap:1mm}.graphic-short-legend i{flex:0 0 4mm;height:3mm;margin-top:.15mm;border:1px solid var(--legend-color);border-radius:.7mm;background-color:var(--legend-color)!important;box-shadow:inset 0 0 0 2mm var(--legend-color);-webkit-print-color-adjust:exact;print-color-adjust:exact}
}
@page graphic{
  size:A4 landscape;
  margin:9mm 8mm 14mm;
  @bottom-center{content:counter(page) " / " counter(pages);color:#536b7a;font:600 8pt Arial,sans-serif}
}

/* Wersja v23: finder pozostaje na stronie, a wybór tylko przewija do planu. */
.hero{min-height:0}

/* Wersja v24: prosty nagłówek i kafelki bez poziomego scrolla na telefonie. */
@media(max-width:620px){
  html,body{max-width:100%;overflow-x:clip}
  .site-header{position:sticky!important;top:0!important;z-index:1000;min-height:66px;align-items:center;padding:8px 12px}
  .brand{flex:0 0 auto}.brand>span{display:none}.brand-logo{display:block;width:auto;height:48px;max-width:120px;max-height:48px}
  .header-actions{margin-left:auto;align-items:flex-end}.header-main-row{width:auto;align-items:center}
  .quick-links,.faculty-links{display:none!important}
  .archive-menu{margin:0}.archive-menu span{display:none}.archive-menu select{max-width:150px;font-size:12px}
  .schedule-section,.schedule-list,.course-card,.course-main,.course-meta{min-width:0;max-width:100%}
  .schedule-section{padding-left:12px;padding-right:12px}
  .schedule-list{width:100%;overflow:visible}
  .course-card{width:100%;grid-template-columns:minmax(0,1fr) 4px;overflow:hidden}
  .course-time,.course-main,.course-meta{min-width:0;overflow-wrap:anywhere;word-break:normal}
  .course-main h3,.course-main p,.course-meta,.resource-link{max-width:100%;overflow-wrap:anywhere;white-space:normal}
  .course-meta span{max-width:100%}
}

/* Wersja v21: dwurzędowy nagłówek i lżejsza typografia nazwy uczelni. */
.site-header{min-height:116px}
.brand{flex:1 1 560px}.brand-logo{width:145px;height:auto;max-height:72px}
.brand strong{font-size:15px;font-weight:400;line-height:1.35}
.brand small{margin-top:6px;font-size:15px;font-weight:400;line-height:1.35;color:#fff}
.header-actions{display:flex;flex:0 1 auto;flex-direction:column;align-items:flex-end;gap:9px}
.header-main-row{display:flex;align-items:center;justify-content:flex-end;gap:14px}
.faculty-links{width:100%;justify-content:flex-end}
.archive-menu{padding:7px 9px;border-radius:9px;background:rgba(255,255,255,.08);color:#fff;font-size:12px}
.archive-menu span{font-weight:800;letter-spacing:.04em}
.archive-menu select{background:#1c527c;border-color:rgba(255,255,255,.42);font-size:13px}
@media(max-width:1050px){
  .site-header{align-items:flex-start}.brand{flex-basis:430px}.brand-logo{width:120px}
  .header-main-row{align-items:flex-end;flex-direction:column;gap:7px}
  .service-links,.faculty-links{max-width:420px;overflow-x:auto}
}
/* Na szerokich ekranach (desktop/laptop) rok akademicki i przyciski (Wolne sale,
   Terminy sesji) mają być w jednym wierszu, nie jeden nad drugim. */
@media(min-width:1051px){
  .header-actions{flex-direction:row;align-items:center;gap:16px}
  .header-main-row{order:2}
  .faculty-links{width:auto;order:1}
}
@media(max-width:620px){
  .site-header{min-height:0}.brand{flex-basis:auto}.brand-logo{width:92px;max-height:none}
  .brand strong,.brand small{font-size:10px}.header-actions{gap:6px}
  .header-main-row{width:100%}.archive-menu{padding:4px 6px}.service-links,.faculty-links{max-width:230px}
}

/* Wersja v20: czytelniejszy wydział, rok akademicki i jednorzędowe skróty. */
.brand small{color:#fff;font-size:13px;font-weight:800;letter-spacing:.01em}
#academic-year{display:inline-flex;align-items:center;margin-bottom:18px;padding:8px 13px;border-radius:999px;background:#dcecf8;color:#074d84;box-shadow:inset 0 0 0 1px rgba(14,95,167,.16);font-size:13px;letter-spacing:.1em}
.quick-links{flex-wrap:nowrap;white-space:nowrap}
.quick-links .institution-link{background:#e7f2fa;border-color:#e7f2fa;color:#08395f}
.quick-links .institution-link:hover{background:#fff;border-color:#fff}
.calendar-button{border:1px solid #34765d;border-radius:9px;background:#edf7f2;padding:9px 15px;color:#245b47;font:inherit;font-size:13px;font-weight:800;cursor:pointer}
.calendar-button:hover{background:#dcefe6}
@media(max-width:1050px){
  .quick-links{max-width:520px;overflow-x:auto;justify-content:flex-start;padding-bottom:2px}
}
@media(max-width:620px){
  .brand small{font-size:10px}.quick-links{max-width:230px}
  #academic-year{font-size:11px}
}

/* Czytelny, jednoliniowy zakres godzin na telefonach. */
@media(max-width:520px){
  .course-time{font-size:17px;line-height:1.25;white-space:nowrap}
  .course-time small{display:inline;margin:0 0 0 6px;font-size:13px;font-weight:500}
  .course-main h3{font-size:17px;line-height:1.3}
}
@media(max-width:620px){
  .changelog-open,.changelog-panel{display:none!important}
}

/* Lista sal pozostaje pozioma, a komentarz lokalizacji trafia pod nią. */
.course-meta .course-room{display:flex!important;flex-wrap:wrap;justify-content:center;gap:3px 5px;margin:0}
.course-meta .course-room>.resource-entry{display:inline-block!important;margin:0!important}
.course-meta .course-room>.resource-entry .resource-link{display:inline}
@media(max-width:850px){
  .course-meta .course-room{justify-content:flex-start}
}

/* Mobilny nagłówek: rok akademicki i terminy sesji zawsze w jednym rzędzie. */
@media(max-width:620px){
  .site-header{gap:7px}
  .brand-logo{width:72px!important;max-width:72px;max-height:40px}
  .header-actions{flex:1 1 auto;min-width:0;align-items:flex-end}
  .header-main-row{display:flex;width:auto;min-width:0;align-items:center;flex-direction:row!important;flex-wrap:nowrap;gap:4px}
  .archive-menu{flex:0 1 auto;min-width:0;padding:3px 4px}
  .archive-menu select{width:115px;max-width:115px;padding-left:5px;padding-right:18px;font-size:11px}
  .session-mobile-link{flex:0 0 auto;padding:7px 6px;font-size:9.5px;white-space:nowrap}
}

@media(max-width:700px){
  .session-kind-filter{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;overflow:visible;gap:4px}
  .session-kind-filter button{min-width:0;min-height:42px;padding:10px 7px;font-size:12px;line-height:1.2;white-space:normal}
}
@media(max-width:620px){
  .session-mobile-link{order:3}
  .archive-menu{order:2}
}

/* Wolne sale i boczny katalog portali AWF. */
.quick-links .free-rooms-link{border:1px solid #8bd0ad;border-radius:8px;padding:8px 14px;background:linear-gradient(135deg,#e8f7ef,#ccebdd);color:#174f3b;font:inherit;font-size:12px;font-weight:900;line-height:1.2;box-shadow:0 4px 13px rgba(29,105,77,.18);cursor:pointer}
.quick-links .free-rooms-link:hover{border-color:#b6e4cf;background:#fff;transform:translateY(-1px)}
.free-rooms-mobile-link{display:none;border:1px solid #8bd0ad;border-radius:7px;padding:7px 8px;background:#e8f7ef;color:#174f3b;font:inherit;font-size:10px;font-weight:900;line-height:1.15;white-space:nowrap;cursor:pointer}
body.overlay-panel-open{overflow:hidden}
.modal-backdrop{position:fixed;z-index:1005;inset:0;background:rgba(9,45,79,.12)}
.free-rooms-panel{position:fixed;z-index:1010;inset:94px max(18px,calc((100vw - 1040px)/2)) 28px;overflow:auto;overscroll-behavior:contain;border:1px solid #b9d7ca;border-radius:18px;background:#f5faf8;color:#294354;box-shadow:0 24px 80px rgba(9,45,79,.35)}
.free-rooms-panel>header{position:sticky;z-index:2;top:0;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:19px 24px;background:linear-gradient(135deg,#1b654c,#3d9874);color:#fff}
.free-rooms-panel>header span,.portals-panel>header span{font-size:10px;font-weight:900;letter-spacing:.14em;text-transform:uppercase}
.free-rooms-panel>header h2,.portals-panel>header h2{margin:2px 0 0;color:#fff;font:700 27px Georgia,serif}
.free-rooms-panel>header button,.portals-panel>header button{width:36px;height:36px;border:1px solid rgba(255,255,255,.5);border-radius:50%;background:transparent;color:#fff;font-size:24px;line-height:1;cursor:pointer}
.free-rooms-controls{display:grid;grid-template-columns:1.35fr .8fr .8fr 1.35fr .85fr auto;gap:12px;align-items:end;padding:20px 24px;border-bottom:1px solid #dbe9e3;background:#fff}
.free-rooms-controls label{min-width:0;margin:0;color:#36584b;font-size:12px}
.free-rooms-controls input,.free-rooms-controls select{width:100%;min-height:42px;margin-top:6px;border:1px solid #b7cec4;border-radius:9px;padding:9px 10px;background:#fff;color:var(--ink);font:inherit}
.free-rooms-controls button{min-height:42px;border:1px solid #236f54;border-radius:9px;padding:9px 16px;background:#236f54;color:#fff;font:inherit;font-size:13px;font-weight:850;white-space:nowrap;cursor:pointer}
.free-rooms-controls button:hover{background:#174f3b}
.free-rooms-state{margin:0;padding:18px 24px 10px;color:#60786e;text-align:center}
.free-rooms-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:10px 24px 28px}
.free-room-card{display:grid;grid-template-columns:46px minmax(0,1fr);gap:12px;align-items:center;border:1px solid #c8ddd4;border-radius:12px;padding:15px;background:#fff;box-shadow:0 5px 16px rgba(25,91,67,.06)}
.free-room-card>span{display:grid;place-items:center;width:46px;height:46px;border-radius:11px;background:#e5f5ed;color:#21684e;font-size:21px}
.free-room-card strong,.free-room-card small{display:block}.free-room-card strong{color:var(--navy);font-size:16px}.free-room-card small{margin-top:4px;color:#6d8178;font-size:11px;line-height:1.35}.free-room-card .free-room-capacity{margin-top:2px;color:#3f6657;font-weight:750}
.portals-open{position:fixed;z-index:990;right:0;top:48%;display:flex;align-items:center;gap:6px;border:1px solid #9db9cc;border-right:0;border-radius:11px 0 0 11px;padding:9px 7px;background:#fff;color:var(--navy);font:inherit;font-size:11px;font-weight:850;box-shadow:0 7px 20px rgba(9,45,79,.16);cursor:pointer;writing-mode:vertical-rl;transform:translateY(-50%) rotate(180deg)}
.portals-open span:first-child{font-size:16px}.portals-open:hover,.portals-open[aria-expanded=true]{background:var(--sky)}
.portals-backdrop{position:fixed;z-index:1040;inset:0;background:rgba(6,27,45,.34);backdrop-filter:blur(2px)}
.portals-panel{position:fixed;z-index:989;top:48%;right:43px;width:172px;overflow:hidden;border:1px solid #b8ccd9;border-radius:14px;background:#f6f9fb;color:#294354;box-shadow:0 14px 38px rgba(9,45,79,.22);opacity:0;transform:translate(16px,-50%);transition:opacity .18s ease,transform .18s ease}
.portals-panel.is-open{opacity:1;transform:translate(0,-50%)}
.portals-panel>header{display:none}
.portal-cards{display:grid;grid-template-columns:repeat(2,64px);justify-content:center;gap:9px;padding:13px}
.portal-cards>a{display:grid;place-items:center;width:64px;height:64px;border:1px solid #cbd9e2;border-radius:13px;padding:0;background:#fff;color:var(--navy);text-decoration:none;box-shadow:0 3px 10px rgba(9,45,79,.05);transition:transform .15s ease,border-color .15s ease,background .15s ease}
.portal-cards>a:hover,.portal-cards>a:focus-visible{border-color:#6fa2c5;background:#f4faff;outline:none;transform:translateY(-2px)}
.portal-cards>a>span:not(.portal-card-icon),.portal-cards>a>b{display:none}
.portal-card-icon{display:grid;place-items:center;width:43px;height:43px;overflow:hidden;border-radius:10px;background:#eaf4fb;color:#0e5fa7;font-size:18px;font-weight:900}.portal-card-icon img{display:block;width:100%;height:100%;object-fit:contain}
.portal-card-calendar{background:#fff}.portal-card-clb{background:#092d4f}.portal-card-clb img{width:43px;height:auto;max-height:38px;object-fit:contain;image-rendering:auto}.portal-card-dean,.portal-card-usos,.portal-card-learning,.portal-card-teams{background:#fff}
@media(max-width:900px){
  .free-rooms-controls{grid-template-columns:repeat(3,minmax(0,1fr))}
  .free-rooms-controls button{grid-column:3}
  .free-rooms-list{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:620px){
  .free-rooms-mobile-link{display:inline-flex;align-items:center;justify-content:center;order:1;padding:7px 6px;font-size:9px}
  .archive-menu{order:2}
  .free-rooms-panel{inset:10px;border-radius:14px}
  .free-rooms-controls{grid-template-columns:repeat(2,minmax(0,1fr));padding:16px}
  .free-rooms-controls label:nth-child(4),.free-rooms-controls button{grid-column:1/-1}
  .free-rooms-controls button{width:100%}
  .free-rooms-list{grid-template-columns:1fr;padding:8px 16px 22px}
  .free-rooms-state{padding-left:16px;padding-right:16px}
  .portals-open{top:auto;right:12px;bottom:116px;border-right:1px solid #9db9cc;border-radius:999px;padding:8px 10px;writing-mode:horizontal-tb;transform:none}
  .portals-open span:last-child{display:none}
  .portals-panel{top:auto;right:56px;bottom:106px;left:auto;width:172px;border-radius:14px;transform:translateX(14px)}
  .portals-panel.is-open{transform:translateX(0)}
}
/* Ten sam kompaktowy, jednoliniowy pasek również na szerszych telefonach (621-1050px),
   gdzie wcześniej belka rozjeżdżała się na dwa wiersze. */
@media(min-width:621px) and (max-width:1050px){
  .quick-links.faculty-links{display:none!important}
  .header-main-row{display:flex;width:auto;min-width:0;align-items:center;flex-direction:row!important;flex-wrap:nowrap;gap:6px}
  .archive-menu{order:2;padding:4px 6px}
  .archive-menu span{display:none}
  .session-mobile-link{display:inline-flex;align-items:center;justify-content:center;order:3;padding:7px 8px;font-size:10px;white-space:nowrap}
  .free-rooms-mobile-link{display:inline-flex;align-items:center;justify-content:center;order:1;padding:7px 8px;font-size:10px}
}
@media(max-width:390px){
  .brand-logo{width:58px!important;max-width:58px}
  .archive-menu select{width:102px;max-width:102px;font-size:10px}
  .session-mobile-link,.free-rooms-mobile-link{padding-left:5px;padding-right:5px;font-size:8.5px}
}
@media print{.free-rooms-panel,.free-rooms-mobile-link,.free-rooms-link,.portals-open,.portals-panel,.portals-backdrop{display:none!important}}

/* Prawy zestaw narzędzi: dostępność na dole, powrót nad nią. */
.accessibility-open{bottom:18px}
.accessibility-panel{bottom:68px}
.back-to-top{bottom:76px}
@media(max-width:620px){
  .accessibility-open{bottom:14px}
  .accessibility-panel{bottom:62px}
  .back-to-top{right:14px;bottom:66px}
}
