.tp-page{--tp-ground:#f5f7fa;--tp-surface:#fff;--tp-line:#e5e9ef;--tp-control:#b6bfca;--tp-ink:#202b3b;--tp-muted:#586779;--tp-accent:#2664a5;--tp-tint:#eef5fc;--tp-danger:#9e3030;--tp-danger-bg:#fff2f1;--tp-good:#216744;--tp-good-bg:#eaf6ee;color:var(--tp-ink);font:inherit;font-size:14px;line-height:1.5;max-width:1400px;margin:0 auto;min-width:0;font-variant-numeric:tabular-nums}
.tp-page *{box-sizing:border-box}.tp-page [hidden]{display:none!important}.tp-page h1,.tp-page h2,.tp-page h3,.tp-page p{margin:0}.tp-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 20px}.tp-heading h1{font-size:24px;line-height:1.3;font-weight:650;letter-spacing:0}.tp-heading p{margin-top:7px;color:var(--tp-muted)}.tp-heading>.tp-button{flex:none}.tp-page .tp-button{border:1px solid var(--tp-control);border-radius:6px;background:var(--tp-surface);color:var(--tp-ink);font:inherit;font-weight:500;padding:9px 14px;min-height:44px;cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s}.tp-page .tp-primary{background:var(--tp-ink);border-color:var(--tp-ink);color:#fff}.tp-page button:hover:not(:disabled){border-color:var(--tp-accent);background:var(--tp-tint);color:var(--tp-ink)}.tp-page .tp-primary:hover:not(:disabled){background:#34455d;border-color:#34455d;color:#fff}.tp-page button:disabled{cursor:not-allowed;color:#626d7a;background:#edf0f4;border-color:var(--tp-line)}.tp-page button:focus-visible,.tp-page input:focus-visible,.tp-page select:focus-visible,.tp-page summary:focus-visible,.tp-page [tabindex]:focus-visible{outline:3px solid var(--tp-accent);outline-offset:3px}.tp-tabs{display:flex;gap:6px;border-bottom:1px solid var(--tp-line);margin-bottom:20px;padding-bottom:0;overflow-x:auto}.tp-tabs .tp-button{border:0;border-bottom:3px solid transparent;border-radius:0;background:none;padding:10px 16px}.tp-tabs .tp-button[aria-pressed=true]{border-bottom-color:var(--tp-accent);font-weight:650}.tp-panel{background:var(--tp-surface);border:1px solid var(--tp-line);border-radius:8px;margin-bottom:20px;overflow:hidden;min-width:0}.tp-panel-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 22px}.tp-panel-head h2,.tp-policy h2{font-size:17px;font-weight:650}.tp-panel-head p,.tp-policy p{color:var(--tp-muted);font-size:13px;margin-top:5px}.tp-panel-body{padding:0 22px 22px}.tp-count{font-size:13px;white-space:nowrap;color:var(--tp-muted)}.tp-toolbar{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;padding:0 22px 18px}.tp-toolbar-spacer{flex:1}.tp-field{display:flex;flex-direction:column;gap:7px;min-width:0;font-size:13px}.tp-field>span{color:var(--tp-muted)}.tp-field input,.tp-field select{font:inherit;font-size:14px;color:var(--tp-ink);background:var(--tp-surface);border:1px solid var(--tp-control);border-radius:6px;min-height:44px;min-width:0;width:100%;padding:9px 11px}.tp-field select{padding-right:30px;max-width:100%}.tp-field input:disabled,.tp-field select:disabled{background:var(--tp-ground);color:var(--tp-muted)}.tp-toolbar .tp-field{min-width:135px;max-width:300px}.tp-toolbar .tp-field input[type=number]{width:95px}.tp-message{padding:12px 16px;margin:0 0 16px;border:1px solid var(--tp-line);border-radius:6px;background:var(--tp-tint);color:var(--tp-ink);overflow-wrap:anywhere}.tp-message.tp-error{color:var(--tp-danger);background:var(--tp-danger-bg);border-color:#e6b9b5}.tp-grid-wrap{width:100%;overflow:auto;border-top:1px solid var(--tp-line)}.tp-calendar{border-collapse:collapse;width:100%;min-width:640px;table-layout:fixed}.tp-calendar th,.tp-calendar td{border-right:1px solid var(--tp-line);border-bottom:1px solid var(--tp-line);padding:9px;text-align:center;vertical-align:middle}.tp-calendar th{font-size:13px;color:var(--tp-muted);font-weight:550}.tp-calendar thead th{height:58px;background:var(--tp-surface)}.tp-calendar th:first-child{width:76px}.tp-calendar tbody th{background:var(--tp-ground);position:sticky;left:0;z-index:1}.tp-calendar thead th:first-child{position:sticky;left:0;z-index:2;background:var(--tp-surface)}.tp-calendar th:last-child,.tp-calendar td:last-child{border-right:0}.tp-calendar tbody tr:last-child td,.tp-calendar tbody tr:last-child th{border-bottom:0}.tp-calendar td{height:78px;padding:6px}.tp-calendar small{display:block;margin-top:4px;font-size:12px;font-weight:400}.tp-calendar .tp-today{color:var(--tp-accent);box-shadow:inset 0 -2px var(--tp-accent)}.tp-lesson{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:2px;width:100%;min-height:64px;padding:8px 10px;border:0;border-left:3px solid var(--tp-accent);border-radius:4px;background:var(--tp-tint);color:var(--tp-ink);font:inherit;text-align:left;overflow-wrap:anywhere}.tp-page button.tp-lesson{cursor:pointer}.tp-lesson strong{font-size:14px;font-weight:600}.tp-lesson span,.tp-lesson small{font-size:12px;color:var(--tp-muted);line-height:1.45}.tp-lesson small{color:var(--tp-accent)}.tp-lesson+.tp-lesson{margin-top:5px}.tp-vacancy{font-size:12px;color:var(--tp-muted)}.tp-empty{text-align:center;padding:26px 22px;color:var(--tp-muted);font-size:14px;line-height:1.8}.tp-term-fields{display:grid;grid-template-columns:2fr 1.25fr 1.25fr 1fr 1fr;gap:14px}.tp-task-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:28px;margin-bottom:12px}.tp-task-head h3{font-size:16px;font-weight:600}.tp-task{display:grid;grid-template-columns:1fr 1fr 1fr 1.2fr 80px auto;align-items:end;gap:12px;padding:14px 0;border-bottom:1px solid var(--tp-line)}.tp-actions{display:flex;align-items:center;justify-content:flex-end;gap:14px;margin-top:20px;flex-wrap:wrap}.tp-actions>.tp-muted{margin-right:auto}.tp-muted,.tp-hint{font-size:13px;color:var(--tp-muted)}.tp-hint{padding:10px 0;line-height:1.7}.tp-policy{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px 22px}.tp-check{display:flex;align-items:center;gap:9px;min-height:44px;cursor:pointer;white-space:nowrap}.tp-check input{width:19px;height:19px;accent-color:var(--tp-accent)}.tp-request-list{padding:0 22px}.tp-request{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 0;border-top:1px solid var(--tp-line)}.tp-request-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.tp-request-title strong{font-size:14px;font-weight:600}.tp-request p{font-size:13px;color:var(--tp-muted);margin-top:6px;overflow-wrap:anywhere}.tp-row-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.tp-status{border-radius:4px;font-size:12px;font-weight:500;padding:3px 7px;white-space:nowrap;flex:none;background:var(--tp-ground);color:var(--tp-muted)}.tp-status-pending{background:#fff4d9;color:#76531b}.tp-status-approved{background:var(--tp-good-bg);color:var(--tp-good)}.tp-status-rejected{background:var(--tp-danger-bg);color:var(--tp-danger)}.tp-week-toolbar{align-items:center;gap:10px}.tp-week-toolbar strong{font-size:14px;font-weight:550}.tp-fields{display:grid;grid-template-columns:1fr 1fr 2fr;gap:14px}.tp-scope{font-size:13px;color:var(--tp-muted);margin:8px 0 24px;padding:0 4px}.tp-scope summary{cursor:pointer;min-height:32px}.tp-scope p{max-width:900px;line-height:1.8}.tp-seat-summary{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 22px;border-top:1px solid var(--tp-line);font-size:13px;color:var(--tp-muted)}.tp-seat-summary strong{color:var(--tp-ink)}.tp-printable{padding:4px 22px 0}.tp-print-title{display:none}.tp-stage{text-align:center;width:180px;max-width:60%;margin:0 auto 22px;padding:9px 20px;background:var(--tp-ground);color:var(--tp-muted);border-bottom:3px solid var(--tp-control);border-radius:6px 6px 0 0;font-size:14px}.tp-seat-wrap{max-width:100%;overflow:auto;padding:3px}.tp-seats{display:grid;grid-template-columns:repeat(var(--tp-columns),minmax(88px,1fr));gap:12px;min-width:calc(var(--tp-columns)*88px + (var(--tp-columns) - 1)*12px);margin:0 auto}.tp-seat{border:1px solid var(--tp-control);border-radius:6px;background:var(--tp-surface);min-width:0;overflow:hidden}.tp-seat-person{width:100%;min-height:82px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:4px;background:transparent;border:0;font:inherit;color:var(--tp-ink);cursor:pointer;padding:9px 6px}.tp-seat-person strong{font-size:14px;font-weight:600;overflow-wrap:anywhere}.tp-seat-person small,.tp-seat-person span{font-size:12px;color:var(--tp-muted)}.tp-seat .tp-button{width:100%;border:0;border-top:1px solid var(--tp-line);border-radius:0;min-height:44px;font-size:12px;padding:6px}.tp-seat.tp-fixed{border-color:var(--tp-accent);background:var(--tp-tint)}.tp-seat.tp-fixed .tp-button{color:var(--tp-accent);background:var(--tp-tint)}.tp-seat.tp-selected{outline:3px solid var(--tp-accent);outline-offset:1px}.tp-seat-hint{padding:12px 22px 0;color:var(--tp-muted);font-size:13px}.tp-seat-hint:last-child{padding-bottom:20px}
@media(max-width:1100px){.tp-term-fields{grid-template-columns:repeat(3,minmax(0,1fr))}.tp-term-fields>.tp-field:first-child{grid-column:1/-1}.tp-task{grid-template-columns:1fr 1fr 1fr;gap:8px}.tp-task .tp-button{padding:8px;justify-self:end}.tp-policy{align-items:flex-start;flex-wrap:wrap}.tp-fields{grid-template-columns:1fr 1fr}.tp-fields>.tp-field:last-child{grid-column:1/-1}}
@media(max-width:640px){.tp-heading{align-items:flex-start;margin-bottom:16px}.tp-heading h1{font-size:22px}.tp-heading p{font-size:13px}.tp-heading .tp-button{padding:9px 11px}.tp-panel{margin-bottom:16px}.tp-panel-head{padding:16px;align-items:flex-start;flex-wrap:wrap;gap:12px}.tp-panel-head .tp-count{white-space:normal}.tp-toolbar{padding:0 16px 16px;gap:10px}.tp-toolbar .tp-field{flex:1;min-width:120px;max-width:none}.tp-toolbar-spacer{display:none}.tp-toolbar>.tp-button{flex:auto}.tp-panel-body{padding:0 16px 16px}.tp-term-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.tp-term-fields>.tp-field:first-child{grid-column:1/-1}.tp-task{grid-template-columns:1fr 1fr;padding:16px 0;gap:12px}.tp-task>.tp-button{grid-column:2;justify-self:end}.tp-actions{align-items:flex-end}.tp-actions>.tp-muted{width:100%}.tp-tabs{gap:0;margin-bottom:16px}.tp-tabs .tp-button{flex:1;padding:10px 9px}.tp-calendar{min-width:600px}.tp-calendar th:first-child{width:62px}.tp-calendar td{padding:4px}.tp-lesson{padding:7px}.tp-week-toolbar{gap:8px}.tp-week-toolbar strong{order:-1;width:100%;text-align:center}.tp-week-toolbar>.tp-muted{width:100%}.tp-policy{padding:16px}.tp-request-list{padding:0 16px}.tp-request{align-items:flex-start;flex-wrap:wrap}.tp-request .tp-row-actions{margin-left:auto}.tp-seat-summary{padding:14px 16px;flex-wrap:wrap}.tp-seat-summary>.tp-row-actions{width:100%}.tp-seat-summary>.tp-row-actions .tp-button{flex:1}.tp-printable{padding:4px 13px 0}.tp-seat-hint{padding-left:16px;padding-right:16px}.tp-seats{gap:8px;min-width:calc(var(--tp-columns)*88px + (var(--tp-columns) - 1)*8px)}.tp-stage{margin-bottom:16px}.tp-scope{margin-bottom:20px}}
@media(prefers-reduced-motion:reduce){.tp-page *{transition:none!important;scroll-behavior:auto!important}}
@media print{body:has(.tp-page[data-mode=seating]) *{visibility:hidden!important}body:has(.tp-page[data-mode=seating]) .tp-printable,body:has(.tp-page[data-mode=seating]) .tp-printable *{visibility:visible!important}.tp-page[data-mode=seating] .tp-printable{position:absolute;inset:0 auto auto 0;width:100%;padding:12mm;background:white}.tp-page .tp-print-title{display:block;font-size:20px;margin-bottom:20px;text-align:center}.tp-page .tp-seat .tp-button{display:none}.tp-page .tp-seat-wrap{overflow:visible}.tp-page .tp-seats{min-width:0;grid-template-columns:repeat(var(--tp-columns),minmax(0,1fr));gap:7px}.tp-page .tp-seat{break-inside:avoid;border:1px solid #777}.tp-page .tp-seat-person{min-height:65px}.tp-page .tp-seat-person strong{font-size:12px}.tp-page .tp-seat-person small,.tp-page .tp-seat-person span{font-size:10px}.tp-page .tp-seat.tp-selected{outline:0}}
