.pub{min-height:100vh;background:radial-gradient(1200px 480px at 8% -10%,rgba(201,162,39,.16),transparent 50%),radial-gradient(900px 500px at 100% 0,rgba(29,79,145,.18),transparent 46%),#f4f0e8;color:#122033}.pub-top{background:linear-gradient(135deg,#071628,#0e2340 58%,#1d4f91);color:#eef3f8;padding:22px 28px 26px;border-bottom:3px solid #c9a227}.pub-brand{max-width:1180px;margin:0 auto;display:flex;align-items:center;gap:18px}.pub-brand img{width:92px;height:auto;filter:drop-shadow(0 8px 16px rgba(0,0,0,.35))}.pub-kicker{margin:0 0 4px;letter-spacing:.18em;text-transform:uppercase;font-size:11px;color:#f0d36b;font-weight:700}.pub-brand h1{margin:0;font-size:clamp(1.4rem,3vw,2rem);letter-spacing:.02em}.pub-brand p{margin:4px 0 0;color:#c5d4e6;font-size:.95rem}.pub-main{max-width:1180px;margin:0 auto;padding:22px 20px 48px}.pub-err{background:#fee2e2;color:#991b1b;padding:12px 14px;border-radius:12px}.pub-muted{color:#5b6b80}.pub-programs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.pub-programs button{border:1px solid #d5dbe3;background:#fff;border-radius:999px;padding:8px 12px;cursor:pointer;display:inline-flex;align-items:center;gap:8px;color:#122033}.pub-programs button span{background:#eef3f8;border-radius:999px;font-size:12px;padding:1px 7px;color:#1d4f91;font-weight:700}.pub-programs button.on{background:var(--accent,#1d4f91);color:#fff;border-color:transparent}.pub-programs button.on span{background:hsla(0,0%,100%,.18);color:#fff}.pub-filters{display:grid;grid-gap:12px;gap:12px;background:hsla(0,0%,100%,.78);border:1px solid #e4e0d6;border-radius:18px;padding:14px;margin-bottom:14px}.pub-search{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid #d5dbe3;border-radius:12px;padding:0 12px}.pub-search input{border:0;width:100%;padding:10px 0;background:transparent;outline:none}.pub-chips,.pub-views{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.pub-chips span{font-size:12px;font-weight:700;color:#5b6b80;margin-right:4px}.pub-chips button,.pub-views button{border:1px solid #d5dbe3;background:#fff;border-radius:10px;padding:6px 10px;cursor:pointer}.pub-chips button.on,.pub-views button.on{background:#1d4f91;color:#fff;border-color:#1d4f91}.pub-views button:disabled{opacity:.45;cursor:not-allowed}.pub-week-empty{background:#fff;border:1px dashed #d5dbe3;border-radius:18px;padding:28px 16px;text-align:center}.pub-count{display:flex;align-items:center;gap:8px;color:#5b6b80;font-size:.92rem;margin:0 0 14px}.pub-groups{display:grid;grid-gap:18px;gap:18px}.pub-group{background:#fff;border-radius:18px;border:1px solid #e4e0d6;overflow:hidden}.pub-group header{padding:14px 16px 10px;border-bottom:1px solid #eef1f5}.pub-group h2{margin:0;font-size:1.15rem;color:#1d4f91}.pub-group header p{margin:4px 0 0;color:#5b6b80;font-size:.88rem}.pub-group ul{list-style:none;margin:0;padding:0}.pub-group li{padding:0;border-top:1px solid #f1eee6}.pub-when{display:flex;flex-direction:column;gap:2px;color:#1d4f91;font-size:.86rem}.pub-when b{font-size:.98rem}.pub-what{display:grid;grid-gap:4px;gap:4px}.pub-what strong{font-size:1rem}.pub-what em,.pub-what small{display:flex;align-items:center;gap:6px;font-style:normal;color:#5b6b80;font-size:.86rem}.pub-week{display:grid;grid-template-columns:52px repeat(6,1fr);grid-gap:6px;gap:6px;min-height:520px;background:#fff;border:1px solid #e4e0d6;border-radius:18px;padding:10px;overflow-x:auto}.pub-hours{position:relative}.pub-hours div{position:absolute;right:4px;font-size:11px;color:#5b6b80;transform:translateY(-6px)}.pub-col h2{margin:0 0 6px;text-align:center;font-size:.82rem;color:#1d4f91}.pub-track{position:relative;height:480px;background:repeating-linear-gradient(180deg,#f7f5ef 0,#f7f5ef 1px,transparent 0,transparent calc(100% / 14));border-radius:10px}.pub-track i{position:absolute;left:0;right:0;border-top:1px dashed #ece7db}.pub-block{position:absolute;border-radius:8px;color:#fff;padding:4px 6px;overflow:hidden;font-size:11px;line-height:1.25;box-shadow:0 6px 14px rgba(7,22,40,.18);border:0;text-align:left;font-family:inherit;cursor:pointer}.pub-block.on,.pub-block:hover{outline:2px solid #fff;z-index:3;filter:brightness(1.08)}.pub-block.compact{padding:3px 2px;font-size:10px;font-weight:700;letter-spacing:.02em}.pub-block.compact em,.pub-block.compact span{display:none}.pub-row{display:grid;grid-template-columns:160px 1fr;grid-gap:12px;gap:12px;width:100%;border:0;background:transparent;padding:12px 16px;text-align:left;font-family:inherit;color:inherit;cursor:pointer}.pub-row:hover{background:#f7f5ef}.pub-modal-bg{position:fixed;inset:0;z-index:50;background:rgba(7,22,40,.58);display:flex;align-items:center;justify-content:center;padding:16px}.pub-modal{position:relative;width:min(480px,100%);background:#fff;border-radius:18px;padding:22px 22px 18px;box-shadow:0 24px 60px rgba(7,22,40,.28);border-top:4px solid #c9a227}.pub-modal-close{position:absolute;top:12px;right:12px;border:0;background:#eef3f8;width:34px;height:34px;border-radius:999px;cursor:pointer;color:#122033}.pub-modal-kicker{margin:0 0 6px;color:#1d4f91;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.pub-modal h2{margin:0 28px 16px 0;font-size:1.2rem;color:#071628}.pub-modal dl{margin:0;display:grid;grid-gap:10px;gap:10px}.pub-modal dl div{display:grid;grid-gap:2px;gap:2px;border-top:1px solid #eef1f5;padding-top:10px}.pub-modal dt{font-size:11px;font-weight:700;color:#5b6b80;text-transform:uppercase;letter-spacing:.06em}.pub-modal dd{margin:0;font-size:.98rem}.pub-block em,.pub-block span,.pub-block strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pub-block em{font-style:normal;font-weight:700}.pub-foot{text-align:center;padding:18px 16px 28px;color:#5b6b80;font-size:.82rem}.pub-foot a{color:#1d4f91;font-weight:700}@media (max-width:800px){.pub-brand{flex-direction:column;text-align:center}.pub-row{grid-template-columns:1fr}.pub-week{grid-template-columns:40px repeat(6,minmax(120px,1fr))}}@media print{.pub-filters,.pub-programs{page-break-inside:avoid;break-inside:avoid}.pub-top{background:#071628!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}}