:root{--control-height:45px;--control-height-sm:34px;color:#111;--color-primary:#111;--color-primary-dark:#000;--color-primary-gradient:#111;--color-text:#111;--color-text-secondary:#5d6d7e;--color-text-muted:#667085;--color-muted:#667085;--color-border:#e3e6ea;--color-border-soft:#ededf0;--color-surface:#fff;--color-surface-soft:#f7f7f5;--color-bg:#f7f7f5;--color-success-bg:#f0fdf4;--color-success-text:#15803d;--color-success-border:#bbf7d0;--color-pending-bg:#fff7ed;--color-pending-text:#b45309;--color-pending-border:#f0b84b;--color-danger-bg:#fee2e2;--color-danger-text:#991b1b;--color-danger-border:#e2a2a2;--color-neutral-bg:#f1f5f9;--color-neutral-text:#475569;--accent-indigo:#c5b0f4;--accent-teal:#dceeb1;--accent-amber:#f4ecd6;--accent-rose:#f3c9b6;--accent-violet:#efd4d4;--accent-sky:#c8e6cd;--accent-blue:#cfe3f7;--accent-navy:#45517c;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-7:32px;--radius-sm:6px;--radius-md:8px;--radius-lg:24px;--radius-pill:999px;--shadow-sm:0 1px 2px #1118270d;--shadow-md:0 8px 24px #11182714;--shadow-lg:0 18px 45px #1118271f;--panel-padding:var(--space-4);--panel-radius:var(--radius-md);--panel-border:1px solid var(--color-border);--panel-bg:var(--color-surface);background:#f7f7f5;font-family:Inter,Pretendard,Noto Sans KR,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:linear-gradient(180deg, #ffffffb8, #f7f7f5e0 240px), var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;line-height:1.5}button,input,select,textarea{font:inherit;min-width:0}h1,h2,h3,p{margin-top:0}h1{margin-bottom:12px;font-size:34px}h2{font-size:22px;font-weight:800}h3{font-size:16px;font-weight:800}.intro{color:var(--color-text-secondary);line-height:1.7}.login-form{gap:16px;display:grid}label{width:100%;min-width:0;max-width:100%;color:var(--color-text);gap:7px;font-size:14px;font-weight:700;display:grid}input,select,textarea{width:100%;min-height:var(--control-height);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);background:#fff;padding:12px 13px;transition:border-color .16s,box-shadow .16s,background .16s;box-shadow:inset 0 1px #11182705}input[type=date],input[type=time],input[type=datetime-local]{width:100%;inline-size:100%;max-width:100%;max-inline-size:100%;flex:1;min-width:0;padding-inline:0;display:block}input[type=date]::-webkit-date-and-time-value{min-width:0}input[type=time]::-webkit-date-and-time-value{min-width:0}input[type=datetime-local]::-webkit-date-and-time-value{min-width:0}input[type=date]::-webkit-datetime-edit{min-width:0}input[type=time]::-webkit-datetime-edit{min-width:0}input[type=datetime-local]::-webkit-datetime-edit{min-width:0}input:hover,select:hover,textarea:hover{border-color:#cbd5e1}select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%235d6d7e' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:right 13px center;background-repeat:no-repeat;padding-right:32px}input:focus,select:focus,textarea:focus{border-color:var(--color-primary);outline:3px solid #1111111a;box-shadow:0 0 0 1px #1111110a}button{border-radius:var(--radius-pill);min-height:var(--control-height);padding:0 var(--space-5);background:var(--color-primary-gradient);color:#fff;cursor:pointer;box-shadow:none;-webkit-tap-highlight-color:transparent;border:1px solid #0000;justify-content:center;align-items:center;font-weight:800;transition:background .16s,box-shadow .16s,filter .16s,transform .16s;display:inline-flex}button:disabled{color:var(--color-text-muted);cursor:not-allowed;filter:none;box-shadow:none;background:#d3dae6;transform:none}button:not(:disabled):not(.lesson-block):not(.help-section-toggle):hover{filter:none;transform:translateY(-1px);box-shadow:0 6px 18px #1118271f}button:not(:disabled):not(.lesson-block):not(.help-section-toggle):active{filter:brightness(.97);box-shadow:none;transform:translateY(0)}button:focus-visible{outline-offset:2px;outline:3px solid #1111113d}input[type=checkbox],input[type=radio]{accent-color:var(--color-primary)}button.secondary:not(:disabled):hover{background:var(--color-surface-soft);box-shadow:none}button.danger:not(:disabled):hover{box-shadow:none;background:#fecaca}.error{color:#c0392b;margin:0;font-size:14px}button.secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border);box-shadow:none}button.danger{background:var(--color-danger-bg);color:var(--color-danger-text);border-color:var(--color-danger-border);box-shadow:none}.screen{min-height:100vh;padding:28px}.login-screen{place-items:center;display:grid}.login-panel{background:var(--panel-bg);border:var(--panel-border);border-radius:var(--panel-radius);width:min(920px,100%);box-shadow:var(--shadow-md);grid-template-columns:1fr 360px;align-items:center;gap:48px;padding:40px;display:grid}.eyebrow{color:var(--color-primary);margin:0 0 8px;font-size:13px;font-weight:700}.version-badge{border:1px solid var(--color-border);background:var(--color-surface-soft);color:var(--color-text);border-radius:999px;align-items:center;margin-left:6px;padding:2px 7px;font-size:12px;font-weight:800;display:inline-flex}.topbar{border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);background:#ffffffe6;justify-content:space-between;align-items:center;gap:18px;margin-bottom:22px;padding:14px 16px;display:flex}.topbar>div:first-child{min-width:0}.topbar h1{overflow-wrap:anywhere}.userbox{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;display:flex}.help-label-compact{display:none}.ui-scale{min-height:var(--control-height);border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface);padding:0 var(--space-4);color:var(--color-text-secondary);white-space:nowrap;align-items:center;gap:8px;font-size:12px;font-weight:800;display:inline-flex}.ui-scale input[type=range]{width:96px;min-height:0;box-shadow:none;accent-color:var(--color-primary);cursor:pointer;background:0 0;border:0;margin:0;padding:0}.ui-scale input[type=range]:focus{box-shadow:none;outline:none}.ui-scale input[type=range]:focus-visible{outline-offset:2px;border-radius:var(--radius-pill);outline:3px solid #1111113d}.ui-scale-value{min-width:34px;color:var(--color-text);text-align:right;font-variant-numeric:tabular-nums}.floating-home-button{right:clamp(14px,2vw,28px);bottom:calc(clamp(14px, 2vw, 28px) + env(safe-area-inset-bottom,0px));z-index:35;border:1px solid color-mix(in srgb, var(--color-primary) 78%, #fff);border-radius:var(--radius-pill);background:var(--color-primary);color:#fff;justify-content:center;align-items:center;gap:8px;min-height:46px;padding:0 16px 0 13px;display:inline-flex;position:fixed;box-shadow:0 14px 32px #11182738}.floating-home-button:hover{transform:translateY(-1px);box-shadow:0 18px 38px #11182747}.floating-home-button.current{color:var(--color-primary);background:#fff}.floating-home-icon{border-radius:var(--radius-pill);background:#ffffff2e;place-items:center;width:24px;height:24px;font-size:20px;font-weight:900;line-height:1;display:grid}.floating-home-button.current .floating-home-icon{background:var(--color-surface-soft)}.floating-home-label{white-space:nowrap;font-size:13px;font-weight:900}.user-menu{position:relative}.user-menu-button{align-items:center;gap:8px;max-width:220px;display:inline-flex}.user-menu-button span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.user-menu-button strong{font-size:14px;line-height:1}.user-menu-button.selected{background:var(--color-primary);color:#fff}.user-menu-panel{z-index:30;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);width:180px;box-shadow:var(--shadow-md);gap:4px;padding:8px;display:grid;position:absolute;top:calc(100% + 8px);right:0}.user-menu-panel button{border-radius:var(--radius-sm);width:100%;min-height:38px;color:var(--color-text);box-shadow:none;text-align:left;background:0 0;border:0;justify-content:flex-start}.user-menu-panel button:hover{background:var(--color-surface-soft);transform:none}.user-menu-panel .danger-menu-item{color:var(--color-danger-text)}.user-menu-panel .danger-menu-item:hover{background:var(--color-danger-bg)}.notification-button.has-unread{border-color:var(--color-danger-text);background:var(--color-danger-text);color:#fff;position:relative}.notification-badge{color:#b91c1c;background:#fff;border:1px solid #ffffff9e;border-radius:999px;place-items:center;min-width:20px;height:20px;margin-left:6px;font-size:11px;font-weight:900;line-height:1;display:inline-grid}.notification-panel{z-index:20;border:1px solid var(--color-border);width:min(460px,100vw - 32px);box-shadow:var(--shadow-lg);background:#fff;border-radius:8px;gap:12px;padding:14px;display:grid;position:absolute;top:84px;right:32px}.notification-panel-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.notification-list{gap:8px;max-height:420px;display:grid;overflow:auto}.notification-item{text-align:left;border:1px solid var(--color-border);width:100%;color:var(--color-text);border-radius:var(--radius-sm);background:#fff;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:8px;display:grid}.notification-item.unread{border-left:4px solid var(--color-danger-text);background:#fff}.notification-item:hover{border-color:var(--color-primary);background:var(--color-surface-soft)}.notification-item.unread:hover{background:snow}.notification-item-main{min-height:0;color:inherit;text-align:left;box-shadow:none;background:0 0;border:0;justify-items:start;gap:4px;padding:2px 4px;display:grid}.notification-item-main:hover{box-shadow:none;background:0 0}.notification-item span,.notification-item small{color:var(--color-text-secondary)}.notification-read-button{color:#fff;border-radius:var(--radius-sm);background:#b91c1c;border:1px solid #b91c1c;min-height:34px;padding:0 12px;font-size:12px;font-weight:900}.notification-read-button:hover{background:#991b1b}.notification-read-state{border:1px solid var(--color-border);color:var(--color-text-secondary);white-space:nowrap;background:#fff;border-radius:999px;align-self:center;padding:5px 9px;font-size:12px;font-weight:800}.notification-item-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;display:flex}.notification-hide-button{color:#991b1b;border-radius:var(--radius-sm);background:#fff7f7;border:1px solid #e2a2a2;min-height:34px;padding:0 10px;font-size:12px;font-weight:900}.notification-hide-button:hover{background:#fee2e2}.help-backdrop{z-index:50;background:#17202a73;place-items:start center;padding:72px 24px 24px;display:grid;position:fixed;inset:0;overflow:auto}.help-modal{border:1px solid var(--color-border);background:#fff;border-radius:8px;gap:18px;width:min(760px,100%);padding:22px;display:grid;box-shadow:0 24px 70px #17202a47}.help-head{border-bottom:1px solid var(--color-border-soft);justify-content:space-between;align-items:flex-start;gap:18px;padding-bottom:14px;display:flex}.help-head h2{margin:0;font-size:24px}.help-content{gap:12px;display:grid}.help-section{border:1px solid var(--color-border);background:var(--color-surface-soft);border-radius:var(--radius-sm);display:grid;overflow:hidden}.help-section-toggle{width:100%;color:var(--color-text);text-align:left;box-shadow:none;background:0 0;justify-content:space-between;align-items:center;gap:12px;padding:14px;display:flex}.help-section-toggle span{font-size:16px;font-weight:900}.help-section-toggle strong{color:var(--color-primary);flex:none;font-size:12px}.help-section ul{color:var(--color-text);gap:7px;margin:0 14px 14px;padding-left:20px;line-height:1.6;display:grid}.portal-home{gap:18px;display:grid}.portal-dashboard{border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);background:#fff;gap:14px;padding:16px;display:grid}.portal-dashboard-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.portal-dashboard-head h2{margin:0}.portal-dashboard-count{border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-neutral-bg);min-width:72px;min-height:34px;color:var(--color-neutral-text);justify-content:center;align-items:center;padding:0 12px;font-size:13px;font-weight:900;display:inline-flex}.portal-dashboard-count.active{border-color:var(--color-danger-border);background:var(--color-danger-bg);color:var(--color-danger-text)}.portal-task-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.portal-task-card{border:1px solid var(--color-border);border-radius:var(--radius-md);min-height:104px;color:var(--color-text);text-align:left;box-shadow:none;background:#fff;grid-template-rows:minmax(0,1fr) auto;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:8px 10px;padding:12px;display:grid}.portal-task-card:hover:not(:disabled){border-color:var(--color-primary);background:var(--color-surface-soft)}.portal-task-card:disabled{opacity:.62}.portal-task-card.danger{border-left:4px solid var(--color-danger-text)}.portal-task-card.pending{border-left:4px solid var(--color-pending-text)}.portal-task-card.info{border-left:4px solid var(--color-primary)}.portal-task-card.neutral{border-left:4px solid var(--color-neutral-text)}.portal-task-count{border-radius:var(--radius-sm);background:var(--color-neutral-bg);min-width:34px;height:34px;color:var(--color-text);grid-row:1/span 2;place-items:center;font-size:15px;font-weight:900;display:inline-grid}.portal-task-card.danger .portal-task-count{background:var(--color-danger-bg);color:var(--color-danger-text)}.portal-task-card.pending .portal-task-count{background:var(--color-pending-bg);color:var(--color-pending-text)}.portal-task-card.info .portal-task-count{background:var(--color-surface-soft);color:var(--color-primary)}.portal-task-card strong,.portal-task-card small,.portal-task-card em{display:block}.portal-task-card strong{line-height:1.25}.portal-task-card small{color:var(--color-text-secondary);margin-top:4px;font-size:12px;line-height:1.4}.portal-task-card em{color:var(--color-primary);grid-column:2;align-self:end;font-size:12px;font-style:normal;font-weight:900}.portal-tools{border:1px solid var(--color-border);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);background:#fff;grid-template-columns:minmax(0,1fr);align-items:end;gap:10px;padding:12px;display:grid}.portal-search{min-width:0}.portal-search input{width:100%}.app-grid{gap:var(--space-5);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.app-card{--app-accent:var(--color-primary);align-content:space-between;gap:var(--space-2);border:1px solid var(--color-border);border-top:4px solid color-mix(in srgb, var(--app-accent) 62%, #fff);border-radius:var(--panel-radius);min-height:230px;padding:var(--space-6);box-shadow:var(--shadow-sm);background:#fff;transition:background .16s,box-shadow .16s,transform .16s;display:grid;position:relative;overflow:hidden}.app-card.openable{cursor:pointer}.app-card:hover{border-color:color-mix(in srgb, var(--app-accent) 46%, var(--color-border));box-shadow:var(--shadow-md);background:#fff;transform:translateY(-2px)}.app-card h2{margin-bottom:var(--space-2)}.card-head{justify-content:space-between;gap:var(--space-3);align-items:center;display:flex}.app-card-live-status{gap:var(--space-2);align-items:center;display:flex}.app-presence-count{min-height:var(--control-height-sm);padding:0 var(--space-3);border:1px solid var(--color-border-soft);border-radius:var(--radius-pill);background:var(--color-surface-soft);color:var(--color-text-secondary);white-space:nowrap;align-items:center;font-size:.78rem;font-weight:800;display:inline-flex}.app-card-icon{border-radius:var(--radius-md);border:1px solid color-mix(in srgb, var(--app-accent) 36%, var(--color-border));background:color-mix(in srgb, var(--app-accent) 22%, white);place-items:center;width:44px;height:44px;font-size:22px;line-height:1;display:grid}.app-status{border-radius:var(--radius-pill);flex:none;padding:5px 10px;font-size:12px;font-weight:800}.app-status.available{background:var(--color-success-bg);color:var(--color-success-text)}.app-status.preparing{background:var(--color-neutral-bg);color:var(--color-neutral-text)}.app-status.maintenance{background:var(--color-pending-bg);color:var(--color-pending-text)}.app-card p{color:var(--color-text-secondary);line-height:1.6}.app-card-tasks{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.app-card-tasks span{border:1px solid color-mix(in srgb, var(--app-accent) 30%, var(--color-border));border-radius:var(--radius-pill);background:color-mix(in srgb, var(--app-accent) 10%, white);color:var(--color-text-secondary);padding:4px 8px;font-size:12px;font-weight:800}.portal-version-panel{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff;padding:10px 12px}.portal-version-panel summary{cursor:pointer;color:var(--color-text);font-size:13px;font-weight:900}.portal-version-list{gap:8px;margin-top:10px;display:grid}.portal-version-item{border-top:1px solid var(--color-border-soft);grid-template-columns:minmax(150px,.24fr) minmax(0,1fr);align-items:start;gap:12px;padding-top:8px;display:grid}.portal-version-item div{gap:3px;display:grid}.portal-version-item strong{color:var(--color-text);font-size:13px}.portal-version-item span,.portal-version-item p{color:var(--color-text-secondary);font-size:12px;line-height:1.5}.portal-version-item p{margin:0}.account-settings{gap:var(--space-4);width:min(100%,880px);margin:0 auto;display:grid}.account-panel{background:var(--panel-bg);border:var(--panel-border);border-radius:var(--panel-radius);padding:var(--panel-padding);gap:14px;display:grid}.account-head{justify-content:space-between;gap:var(--space-3);align-items:start;display:flex}.account-head h2,.account-head p,.account-details-summary h2,.account-details-summary p{margin:0}.account-head p,.account-details-summary p,.account-security-note{color:var(--color-text-secondary);line-height:1.5}.account-mfa-form,.account-mfa-recovery{gap:var(--space-3);align-items:end;display:grid}.account-mfa-form label{gap:var(--space-2);font-size:13px;font-weight:800;display:grid}.account-mfa-form p,.account-mfa-recovery strong{color:var(--color-text-secondary);margin:0;line-height:1.5}.account-mfa-secret,.account-mfa-recovery code{overflow-wrap:anywhere;white-space:pre-wrap;border:1px solid var(--color-border-soft);border-radius:var(--radius-md);background:var(--color-surface-soft);padding:var(--space-3);display:block}.account-password-form{gap:var(--space-3);grid-template-columns:repeat(3,minmax(0,1fr));align-items:end;display:grid}.account-password-form label{gap:var(--space-2);min-width:0;color:var(--color-text);font-size:13px;font-weight:800;display:grid}.account-password-form .error,.account-password-form .notice,.account-form-actions{grid-column:1/-1}.account-form-actions{gap:var(--space-3);justify-content:space-between;align-items:center;display:flex}.account-security-note{margin:0;font-size:13px}.account-details{gap:0}.account-details-summary{justify-content:space-between;gap:var(--space-3);cursor:pointer;align-items:start;list-style:none;display:flex}.account-details-summary::-webkit-details-marker{display:none}.account-details-state{min-height:var(--control-height-sm);border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface-soft);color:var(--color-text);padding:0 var(--space-3);white-space:nowrap;justify-content:center;align-items:center;font-size:12px;font-weight:900;display:inline-flex}.account-details[open] .account-details-state{background:var(--color-text);color:var(--color-surface)}.account-details[open] .account-details-state:before{content:"접기"}.account-details[open] .account-details-state{font-size:0}.account-details[open] .account-details-state:before{font-size:12px}.account-details-body{gap:var(--space-3);margin-top:var(--space-4);border-top:1px solid var(--color-border-soft);padding-top:var(--space-4);display:grid}.account-timetable-scroll{overflow-x:auto}.account-timetable table{border-collapse:separate;border-spacing:0;table-layout:fixed;width:100%;min-width:560px}.account-timetable th,.account-timetable td{border-bottom:1px solid var(--color-border-soft);border-right:1px solid var(--color-border-soft);padding:var(--space-2) var(--space-2);text-align:center;vertical-align:middle}.account-timetable thead th{background:var(--color-surface-soft);border-top:1px solid var(--color-border-soft);font-size:13px;font-weight:800}.account-timetable thead th span{color:var(--color-text-muted);margin-top:2px;font-size:11px;font-weight:600;display:block}.account-timetable th:first-child,.account-timetable td:first-child{border-left:1px solid var(--color-border-soft)}.account-timetable thead tr th:first-child{border-top-left-radius:var(--radius-sm)}.account-timetable thead tr th:last-child{border-top-right-radius:var(--radius-sm)}.account-timetable tbody tr:last-child th:first-child{border-bottom-left-radius:var(--radius-sm)}.account-timetable tbody tr:last-child td:last-child{border-bottom-right-radius:var(--radius-sm)}.account-timetable-period{background:var(--color-surface-soft);width:44px;color:var(--color-text-secondary);font-size:12px;font-weight:800}.account-timetable tbody td{background:var(--color-surface);height:52px}.account-timetable tbody td strong{font-size:13px;line-height:1.3;display:block}.account-timetable tbody td>span{color:var(--color-text-muted);font-size:11px;display:block}.account-timetable-changed{border:1px solid var(--color-pending-border);border-radius:var(--radius-pill);background:var(--color-pending-bg);color:var(--color-pending-text);padding:0 var(--space-2);margin-top:2px;font-size:10px;font-style:normal;font-weight:700;display:inline-block}.account-timetable thead th.today{background:var(--accent-blue)}.account-timetable thead th.today span{color:var(--color-text-secondary)}.account-timetable tbody td.today{background:color-mix(in srgb, var(--accent-blue) 32%, var(--color-surface))}.account-order-toolbar{justify-content:flex-end;display:flex}.account-order-list{gap:var(--space-2);display:grid}.account-order-item{gap:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);padding:var(--space-3);grid-template-columns:auto 34px minmax(0,1fr) auto;align-items:center;display:grid}.account-order-item.dragging{border-color:var(--color-primary);background:var(--color-surface-soft);opacity:.76}.account-order-handle{min-height:var(--control-height-sm);cursor:grab;touch-action:none}.account-order-handle:active{cursor:grabbing}.account-order-number{border-radius:var(--radius-pill);background:var(--color-neutral-bg);width:28px;height:28px;color:var(--color-neutral-text);place-items:center;font-size:12px;font-weight:900;display:grid}.account-order-item div{gap:3px;min-width:0;display:grid}.account-order-item strong{color:var(--color-text)}.account-order-item div span{color:var(--color-text-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.loading{min-height:calc(100vh - 64px);color:var(--color-text-secondary);place-items:center;display:grid}.workbench{gap:16px;display:grid}.app-task-chooser,.app-subpage-nav{gap:var(--space-4);border:var(--panel-border);border-radius:var(--panel-radius);background:var(--panel-bg);padding:var(--panel-padding);box-shadow:var(--shadow-sm);display:grid}.app-task-chooser-head,.app-subpage-copy{gap:var(--space-1);display:grid}.app-task-chooser-head h2,.app-task-chooser-head p,.app-subpage-copy h2,.app-subpage-copy p{margin:0}.app-subpage-copy>p:not(.eyebrow){color:var(--color-text-secondary);line-height:1.55}.app-task-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));display:grid}button.app-task-card{gap:var(--space-2) var(--space-4);border-color:var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);min-height:116px;color:var(--color-text);padding:var(--space-4);text-align:left;grid-template-columns:minmax(0,1fr) auto;place-content:center stretch;display:grid;position:relative}button.app-task-card:not(:disabled):hover{border-color:var(--color-primary);background:var(--color-surface-soft);box-shadow:var(--shadow-sm)}.app-task-card-copy{gap:var(--space-2);min-width:0;display:grid}.app-task-card-copy strong{font-size:17px}.app-task-card-copy>span,.app-task-card small{color:var(--color-text-secondary);font-size:13px;line-height:1.5}.app-task-card small{grid-column:1}.app-task-card-arrow{grid-area:1/2/span 2;align-self:center;font-size:20px}.app-subpage-nav{grid-template-columns:auto minmax(0,1fr);align-items:start}.app-subpage-back{min-height:var(--control-height-sm);padding:0 var(--space-3)}.app-task-switcher{gap:var(--space-2);padding-bottom:var(--space-1);grid-column:1/-1;display:flex;overflow-x:auto}.app-task-switcher button{min-height:var(--control-height-sm);padding:0 var(--space-3);flex:none;font-size:13px}.app-task-switcher button.selected,.app-task-switcher button[aria-current=page]{border-color:var(--color-primary);background:var(--color-text);color:var(--color-surface)}.app-task-busy{color:var(--color-pending-text);grid-column:1/-1;margin:0;font-size:13px;font-weight:800}.app-task-panel{gap:var(--space-4);min-width:0;display:grid}.app-task-panel[hidden]{display:none}.notice{border:1px solid #e6e9ee;border-left:4px solid var(--color-primary);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-sm);margin:0;padding:12px 14px}.notice.danger{border-color:var(--color-danger-border);border-left-color:var(--color-danger-text);background:var(--color-danger-bg);color:var(--color-danger-text)}.action-feedback{grid-template-columns:var(--space-6) minmax(0, 1fr);gap:var(--space-2);white-space:pre-wrap;align-items:start;line-height:1.55;display:grid}.action-feedback:before{content:attr(data-symbol);width:var(--space-6);height:var(--space-6);border-radius:var(--radius-pill);background:var(--color-neutral-bg);color:var(--color-neutral-text);place-items:center;font-weight:900;line-height:1;display:grid}.field-hint{border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface-soft);width:17px;min-width:17px;max-width:17px;height:17px;min-height:17px;color:var(--color-text-secondary);cursor:help;box-shadow:none;white-space:nowrap;flex:none;place-items:center;padding:0;font-size:11px;font-weight:900;line-height:1;display:inline-grid}.field-hint:hover{border-color:var(--color-primary);color:var(--color-primary);box-shadow:none;background:#fff}.field-hint:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.action-feedback.danger:before{background:var(--color-danger-border);color:var(--color-danger-text)}.pending-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.pending-header h2{margin:0;font-size:16px}.pending-header button{min-height:var(--control-height-sm);padding:0 var(--space-3);flex:none;font-size:13px}.selected-summary{margin:0;line-height:1.5}.candidate-list{gap:8px;display:grid}.candidate-block{background:var(--color-text);text-align:left;justify-items:start;gap:4px;display:grid}.empty{color:var(--color-text-secondary);margin:0;line-height:1.6}.status-badge{border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-neutral-bg);width:fit-content;min-height:24px;color:var(--color-neutral-text);white-space:nowrap;justify-content:center;align-items:center;padding:3px 9px;font-size:12px;font-weight:900;line-height:1;display:inline-flex}.status-badge.danger{border-color:var(--color-danger-border);background:var(--color-danger-bg);color:var(--color-danger-text)}.status-badge.success{border-color:var(--color-success-border);background:var(--color-success-bg);color:var(--color-success-text)}.status-badge.pending{border-color:var(--color-pending-border);background:var(--color-pending-bg);color:var(--color-pending-text)}.clearable-field{min-width:0;display:block;position:relative}.clearable-field input,.clearable-field textarea{padding-right:42px}.clearable-field .clearable-button{z-index:1;border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface-soft);width:28px;min-width:28px;height:28px;min-height:28px;color:var(--color-muted);box-shadow:none;place-items:center;padding:0;font-size:13px;font-weight:900;line-height:1;display:inline-grid;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.clearable-field.textarea .clearable-button{top:10px;transform:none}.clearable-field .clearable-button:hover{border-color:var(--color-primary);color:var(--color-primary);background:#fff;transform:translateY(-50%)}.clearable-field.textarea .clearable-button:hover{transform:none}.clearable-field .clearable-button:disabled{opacity:0;pointer-events:none}.confirm-dialog-backdrop{z-index:100;background:#17202a85;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.confirm-dialog{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:#fff;gap:18px;width:min(420px,100%);padding:20px;display:grid;box-shadow:0 24px 70px #0f172a47}.confirm-dialog-copy{gap:8px;display:grid}.confirm-dialog-copy h2,.confirm-dialog-copy p{margin:0}.confirm-dialog-copy h2{color:var(--color-text);font-size:18px;line-height:1.35}.confirm-dialog-copy p{color:var(--color-muted);line-height:1.55}.confirm-dialog-actions{justify-content:flex-end;gap:8px;display:flex}.inline-x-button{border-radius:var(--radius-pill);place-items:center;width:34px;min-width:34px;height:34px;min-height:34px;padding:0;font-size:14px;font-weight:900;display:inline-grid}@media (width<=560px){.confirm-dialog-actions{flex-direction:column-reverse}.confirm-dialog-actions button{width:100%}}.teacher-picker{border:1px solid var(--color-border);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);background:#fff;gap:10px;padding:12px;display:grid}.teacher-picker-head,.teacher-picker-actions,.feature-showcase-actions,.showcase-mock-toolbar,.showcase-mock-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.teacher-picker-head>div,.feature-showcase-copy{gap:4px;min-width:0;display:grid}.teacher-picker-head strong{font-size:13px}.teacher-picker-head span,.teacher-picker-option small,.feature-showcase-copy span,.feature-showcase-copy p{color:var(--color-text-secondary);font-size:12px}.teacher-picker-search{min-width:0}.teacher-picker-select{min-height:var(--control-height);border:1px solid var(--color-border);color:var(--color-text);border-radius:var(--radius-pill);background:#fff;padding:0 14px;font-size:13px;font-weight:800}.teacher-picker-select:hover{border-color:var(--color-primary);background:var(--color-surface-soft)}.teacher-picker-select.selected{border-color:var(--color-primary);background:var(--color-primary);color:#fff;box-shadow:none}.teacher-picker-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:260px;padding-right:2px;display:grid;overflow:auto}.teacher-picker-option{border:1px solid var(--color-border);border-radius:var(--radius-sm);min-height:52px;color:var(--color-text);text-align:left;background:#fff;grid-template-columns:minmax(0,1fr);align-items:center;padding:9px 10px;display:grid}.teacher-picker-option:hover{border-color:var(--color-primary);background:var(--color-surface-soft)}.teacher-picker-option.selected{border-color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 8%, white);box-shadow:inset 4px 0 0 var(--color-primary)}.teacher-picker-option.selected strong,.teacher-picker-option.selected small{color:var(--color-primary)}.teacher-picker-option span{gap:2px;min-width:0;display:grid}.teacher-picker-option strong,.teacher-picker-option small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.feature-showcase-backdrop{z-index:80;background:#17202a8a;place-items:center;padding:28px;display:grid;position:fixed;inset:0;overflow:auto}.feature-showcase{border:1px solid var(--color-border);border-radius:var(--radius-md);background:#fff;grid-template-columns:minmax(240px,.55fr) minmax(440px,1.45fr);align-items:stretch;gap:16px;width:min(1080px,100%);max-height:calc(100vh - 56px);padding:18px;display:grid;overflow:hidden;box-shadow:0 24px 70px #0f172a52}.feature-showcase-copy h2,.feature-showcase-copy p{margin:0}.feature-showcase-copy h2{font-size:15px}.feature-showcase-copy strong{color:var(--color-text);font-size:14px}.feature-showcase-preview{border:1px solid var(--color-border-soft);border-radius:var(--radius-sm);background:var(--color-surface-soft);min-width:0;max-height:min(64vh,620px);padding:12px;overflow:auto}.feature-showcase-actions{border-top:1px solid var(--color-border-soft);grid-column:1/-1;padding-top:10px}.feature-showcase-actions>div{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.showcase-mock{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-soft);gap:10px;padding:12px;display:grid}.showcase-mock-toolbar span,.showcase-mock-actions span{border:1px solid var(--color-border);color:var(--color-text);background:#fff;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:800}.showcase-mock-toolbar strong{color:var(--color-primary);font-size:12px}.showcase-mock-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.showcase-mock-list span,.showcase-paper{border:1px solid var(--color-border);border-radius:var(--radius-sm);text-align:center;background:#fff;padding:10px;font-size:13px;font-weight:800}.showcase-mock table{border-collapse:collapse;table-layout:fixed;background:#fff;width:100%}.showcase-mock th,.showcase-mock td{border:1px solid var(--color-border);text-align:center;padding:7px;font-size:12px}.mock-signature{color:#1d4ed8;font-family:cursive;font-weight:900}.mock-signature.muted{color:#94a3b8;font-family:inherit}.showcase-paper{place-items:center;gap:5px;min-height:78px;display:grid}.showcase-paper.realistic{border-color:var(--color-text);border-radius:0;min-height:116px;box-shadow:0 8px 18px #1f2d3d14}.showcase-paper span{color:var(--color-text-secondary);font-size:12px}.showcase-document{border:1px solid var(--color-border);color:#111827;background:#fff;gap:10px;width:760px;max-width:100%;margin:0 auto;padding:18px;font-family:Nanum Gothic,Malgun Gothic,sans-serif;display:grid;box-shadow:0 10px 24px #1f2d3d1f}.showcase-document-head{text-align:center;gap:4px;display:grid}.showcase-document-head h3{color:#111827;margin:0;font-size:18px}.showcase-document-head span{color:var(--color-text);font-size:12px}.showcase-document-lines{color:#111827;gap:3px;margin:0;padding-left:20px;font-size:12px;line-height:1.45;display:grid}.showcase-document-section{gap:5px;display:grid}.showcase-document-section-box{background:#fff;border:1px solid #111827;gap:5px;padding:8px 7px;display:grid}.showcase-document-section p,.showcase-document-section h4{color:#111827;margin:0;font-size:12px}.showcase-document-section h4{font-size:13px}.showcase-document-table{border-collapse:collapse;table-layout:fixed;color:#111827;background:#fff;width:100%;font-size:10px}.showcase-document-table th,.showcase-document-table td{text-align:center;vertical-align:middle;word-break:keep-all;overflow-wrap:anywhere;border:1px solid #111827;padding:5px 4px}.showcase-document-table th{background:var(--color-surface-soft);font-weight:900}.showcase-document-table .empty-template-row td,.showcase-document-table tr.empty-template-row td{color:#0000}.showcase-document-approval th{width:120px}.timetable-type1 th,.timetable-type1 td{padding:4px 3px;font-size:9px}.signature-showcase-document{gap:8px;width:760px;padding:16px}.signature-showcase-meta{border:1px solid #111827;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;font-size:10px;display:grid}.signature-showcase-meta span{color:#111827;text-align:center;border-right:1px solid #111827;padding:5px 6px}.signature-showcase-meta span:last-child{border-right:0}.signature-showcase-columns{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:14px;display:grid}.signature-showcase-table{font-size:8px}.signature-showcase-table th,.signature-showcase-table td{height:22px;padding:2px 3px}.signature-showcase-table th:first-child{width:32px}.signature-showcase-table th:nth-child(2){width:68px}.signature-showcase-table th:nth-child(4){width:44px}.signature-showcase-table td:nth-child(2){font-weight:900}.signature-showcase-table small{color:#64748b;margin-top:1px;font-size:7px;font-weight:700;display:block}.signature-showcase-ink{color:#172554;font-family:Brush Script MT,Nanum Pen Script,cursive;font-size:15px;font-weight:900;line-height:1;display:block;transform:rotate(-5deg)}.signature-showcase-pending{color:#94a3b8;font-size:7.5px;font-weight:800}.signature-showcase-footer{text-align:center;color:#111827;padding-top:4px;font-size:11px;font-weight:900}.signature-showcase-dashboard{gap:14px}.signature-showcase-progress{border-radius:var(--radius-pill);background:#e5e7eb;height:12px;overflow:hidden}.signature-showcase-progress span{border-radius:inherit;background:linear-gradient(90deg,#2563eb,#16a34a);height:100%;display:block}.signature-showcase-status-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.signature-showcase-status-grid article{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff;align-content:start;gap:5px;min-height:98px;padding:12px;display:grid}.signature-showcase-status-grid strong{color:var(--color-text);font-size:13px}.signature-showcase-status-grid span{color:var(--color-text-secondary);font-size:12px;line-height:1.45}@media (width<=720px){.teacher-picker-list{grid-template-columns:1fr;max-height:320px}.feature-showcase-backdrop{place-items:start center;padding:12px}.feature-showcase{grid-template-columns:1fr;width:min(460px,100%);max-height:calc(100dvh - 24px);padding:14px;overflow:auto}.feature-showcase-preview{max-height:min(52vh,520px);padding:8px}.showcase-document{width:100%;min-width:0;max-width:100%;padding:12px}.showcase-document-head h3{font-size:15px}.showcase-document-lines{padding-left:16px;font-size:10px}.showcase-document-section p,.showcase-document-section h4,.showcase-document-table{font-size:9px}.showcase-document-table th,.showcase-document-table td{padding:3px 2px}.signature-showcase-columns{grid-template-columns:1fr;gap:8px}.signature-showcase-meta,.signature-showcase-status-grid{grid-template-columns:1fr}.signature-showcase-meta span{border-bottom:1px solid #111827;border-right:0}.signature-showcase-meta span:last-child{border-bottom:0}}.approvals-app{gap:16px}.approvals-head{border:var(--panel-border);border-radius:var(--panel-radius);background:var(--panel-bg);padding:var(--panel-padding);justify-content:space-between;align-items:center;gap:16px;display:flex}.approvals-head h2,.approvals-head p{margin:0}.approvals-head p:not(.eyebrow){color:var(--color-text-secondary);line-height:1.5}.approvals-summary-count{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-soft);place-items:center;min-width:86px;min-height:72px;display:grid}.approvals-summary-count strong{color:var(--color-text);font-size:24px;line-height:1}.approvals-summary-count span{color:var(--color-text-secondary);font-size:12px;font-weight:900}.approvals-toolbar{border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);background:#fff;justify-content:space-between;align-items:end;gap:12px;padding:12px;display:flex}.approvals-toolbar label{width:min(280px,100%)}.approvals-list{gap:10px;display:grid}.approvals-item{border:1px solid var(--color-border);border-left:4px solid var(--color-primary);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);background:#fff;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;padding:14px;display:grid}.approvals-item.poll{border-left-color:var(--color-pending-text)}.approvals-item.signature{border-left-color:var(--accent-violet)}.approvals-item.special_room{border-left-color:var(--accent-indigo)}.approvals-item-main{gap:7px;min-width:0;display:grid}.approvals-item-kicker,.approvals-meta{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.approvals-item-kicker span{border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-neutral-bg);color:var(--color-neutral-text);padding:3px 8px;font-size:12px;font-weight:900}.approvals-item h3,.approvals-item p{margin:0}.approvals-item h3{overflow-wrap:anywhere;color:var(--color-text);font-size:16px;line-height:1.35}.approvals-item p{color:var(--color-text-secondary);line-height:1.45}.approvals-meta{color:var(--color-text-secondary);font-size:12px;font-weight:800}@media (width<=720px){.approvals-head,.approvals-toolbar,.approvals-item{flex-direction:column;grid-template-columns:1fr;align-items:stretch}.approvals-toolbar label,.approvals-toolbar button,.approvals-item>button{width:100%}}.board-workbench{gap:18px}.board-panel{background:var(--panel-bg);border:var(--panel-border);border-radius:var(--panel-radius);min-width:0;padding:var(--panel-padding);gap:14px;display:grid}.board-page{width:min(100%,1120px);margin:0 auto}.board-header,.board-page-head,.board-detail-head,.board-list-meta,.board-pagination,.board-actions,.board-delete-box,.board-comment>div{justify-content:space-between;align-items:center;gap:10px;display:flex}.board-header h2,.board-page-head h2,.board-detail-head h2,.board-comments h3{margin:0}.board-header p,.board-page-head p,.board-detail-head p,.board-list-meta,.board-row span,.board-row time,.board-comment span{color:var(--color-text-secondary);margin:0;font-size:13px}.board-kicker{color:var(--color-primary);margin:0 0 4px;font-size:13px;font-weight:700}.board-table{border-radius:var(--radius-sm);background:#fff;border:1px solid #cbd5e1;overflow:hidden}.board-table-head,.board-row{grid-template-columns:72px minmax(0,1fr) 76px 140px 178px;align-items:center;gap:12px;display:grid}.board-table-head{min-height:42px;color:var(--color-text-secondary);background:#f1f5f9;border-bottom:1px solid #cbd5e1;padding:0 14px;font-size:13px;font-weight:700}.board-table-head span:not(:nth-child(2)){text-align:center}.board-list{display:grid}.board-row{width:100%;min-height:52px;color:var(--color-text);text-align:left;background:#fff;border:0;border-bottom:1px solid #e2e8f0;border-radius:0;padding:0 14px}.board-row:last-child{border-bottom:0}.board-row:hover:not(:disabled){background:var(--color-surface-soft);box-shadow:inset 3px 0 0 var(--color-primary)}.board-row.secret{background:#fbfcff}.board-row strong{overflow-wrap:anywhere;align-items:center;gap:7px;min-width:0;font-size:15px;font-weight:700;display:flex}.board-row em{border-radius:var(--radius-pill);color:#3730a3;background:#eef2ff;border:1px solid #c7d2fe;flex:none;padding:2px 7px;font-size:12px;font-style:normal}.board-no{color:#667085;font-variant-numeric:tabular-nums;text-align:center}.board-row>span:not(.board-no),.board-row>time{text-align:center}.board-form{border:1px solid var(--color-border);background:var(--color-surface-soft);border-radius:var(--radius-sm);gap:12px;padding:12px;display:grid}.board-form-page{padding:16px}.board-form-row{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:12px;display:grid}.board-check{grid-auto-flow:column;justify-content:start;align-items:center;min-height:44px}.board-check input{width:18px;height:18px}.board-detail-card{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff}.board-content{white-space:pre-wrap;overflow-wrap:anywhere;min-height:260px;padding:14px;line-height:1.7}.board-delete-box{justify-content:end}.board-delete-box input{max-width:260px}.board-comments{gap:10px;display:grid}.board-comment{border:1px solid var(--color-border);background:var(--color-surface-soft);border-radius:var(--radius-sm);gap:8px;padding:12px;display:grid}.board-comment.deleted{color:#667085;background:#f1f5f9}.board-comment p{white-space:pre-wrap;overflow-wrap:anywhere;margin:0;line-height:1.6}.board-comment-form .board-form-row{grid-template-columns:minmax(0,1fr) auto}@media (width<=980px){.board-table-head,.board-row{grid-template-columns:64px minmax(0,1fr) 64px 110px 142px;gap:8px}}@media (width<=680px){.board-header,.board-page-head,.board-detail-head,.board-delete-box,.board-comment>div{flex-direction:column;align-items:stretch}.board-actions,.board-pagination{width:100%}.board-actions button,.board-pagination button,.board-delete-box button,.board-delete-box input{width:100%;max-width:none}.board-table{background:0 0;border:0}.board-table-head{display:none}.board-list{gap:8px}.board-row{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff;grid-template-columns:minmax(0,1fr);gap:6px;min-height:auto;padding:12px}.board-no:before{content:"번호 "}.board-row span:nth-of-type(2):before{content:"댓글 "}.board-row span:nth-of-type(3):before{content:"작성자 "}.board-row time:before{content:"작성 시각 "}.board-no,.board-row>span:not(.board-no),.board-row>time{text-align:left}}.resource-workbench{gap:18px}.resource-panel{background:var(--panel-bg);border:var(--panel-border);border-radius:var(--panel-radius);min-width:0;padding:var(--panel-padding);gap:14px;display:grid}.resource-board,.resource-page{width:min(100%,1120px);margin:0 auto}.resource-header,.resource-page-head,.resource-detail-head,.resource-list-meta,.resource-pagination,.resource-actions,.resource-form-row,.resource-upload-meta,.resource-attachment,.resource-attachment>div{justify-content:space-between;align-items:center;gap:10px;display:flex}.resource-header h2,.resource-page-head h2,.resource-detail-head h2,.resource-attachments h3{margin:0}.resource-header p,.resource-page-head p,.resource-detail-head p,.resource-list-meta,.resource-upload-meta,.resource-selected-files,.resource-attachment span{color:var(--color-text-secondary);margin:0;font-size:13px}.resource-kicker{color:var(--color-primary);margin:0 0 4px;font-size:13px;font-weight:700}.resource-form{border:1px solid var(--color-border);background:var(--color-surface-soft);border-radius:var(--radius-sm);gap:12px;padding:12px;display:grid}.resource-form-page{padding:16px}.resource-drop-zone{border-radius:var(--radius-sm);background:#fff;border:1px dashed #9ca3af;gap:10px;padding:14px;transition:border-color .15s,background .15s,box-shadow .15s;display:grid}.resource-drop-zone.active{border-color:var(--color-primary);background:var(--color-surface-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--color-primary) 20%, transparent)}.resource-drop-zone strong{margin-bottom:3px;display:block}.resource-drop-zone span{color:var(--color-text-secondary);font-size:13px}.resource-upload-meta,.resource-selected-files{flex-wrap:wrap;justify-content:flex-start}.resource-selected-files{gap:6px;display:flex}.resource-selected-files span{border:1px solid var(--color-border);border-radius:var(--radius-pill);background:#fff;padding:5px 9px}.resource-search{grid-template-columns:minmax(110px,140px) minmax(0,1fr) auto auto;align-items:end;gap:8px;display:grid}.resource-table{border-radius:var(--radius-sm);background:#fff;border:1px solid #cbd5e1;overflow:hidden}.resource-table-head,.resource-row{grid-template-columns:72px minmax(0,1fr) 86px 140px 178px;align-items:center;gap:12px;display:grid}.resource-table-head{min-height:42px;color:var(--color-text-secondary);background:#f1f5f9;border-bottom:1px solid #cbd5e1;padding:0 14px;font-size:13px;font-weight:700}.resource-table-head span:not(:nth-child(2)){text-align:center}.resource-table-body{display:grid}.resource-row{width:100%;min-height:52px;color:var(--color-text);text-align:left;background:#fff;border:0;border-bottom:1px solid #e2e8f0;border-radius:0;padding:0 14px}.resource-row:last-child{border-bottom:0}.resource-row:hover:not(:disabled){background:var(--color-surface-soft);box-shadow:inset 3px 0 0 var(--color-primary)}.resource-row.secret{background:#fbfcff}.resource-row strong{overflow-wrap:anywhere;align-items:center;gap:7px;min-width:0;font-size:15px;font-weight:700;display:flex}.resource-row em{border-radius:var(--radius-pill);color:#3730a3;background:#eef2ff;border:1px solid #c7d2fe;flex:none;padding:2px 7px;font-size:12px;font-style:normal}.resource-no{color:#667085;font-variant-numeric:tabular-nums;text-align:center}.resource-row span,.resource-row time{color:var(--color-text-secondary);font-size:13px}.resource-row>span:not(.resource-no),.resource-row>time{text-align:center}.resource-detail-card{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff}.resource-content{white-space:pre-wrap;overflow-wrap:anywhere;min-height:260px;padding:14px;line-height:1.7}.resource-attachments{gap:10px;display:grid}.resource-trash{border:1px solid var(--color-border-soft);border-radius:var(--radius-sm);background:var(--color-surface-soft);padding:var(--space-3)}.resource-trash summary{cursor:pointer;font-weight:800}.resource-trash[open] summary{margin-bottom:var(--space-3)}.resource-trash .resource-attachment+.resource-attachment{margin-top:var(--space-2)}.resource-attachment{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-soft);padding:10px}.resource-attachment>div{flex-direction:column;align-items:flex-start;min-width:0}.resource-attachment strong{overflow-wrap:anywhere}@media (width<=980px){.resource-table-head,.resource-row{grid-template-columns:64px minmax(0,1fr) 72px 110px 142px;gap:8px}}@media (width<=680px){.resource-header,.resource-page-head,.resource-detail-head,.resource-form-row,.resource-attachment{flex-direction:column;align-items:stretch}.resource-actions,.resource-pagination{width:100%}.resource-actions button,.resource-pagination button{flex:1}.resource-search{grid-template-columns:1fr}.resource-table{background:0 0;border:0}.resource-table-head{display:none}.resource-table-body{gap:8px}.resource-row{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff;grid-template-columns:minmax(0,1fr);gap:6px;min-height:auto;padding:12px}.resource-row:hover:not(:disabled){box-shadow:inset 3px 0 0 var(--color-primary)}.resource-no:before{content:"번호 "}.resource-row span:nth-of-type(2):before{content:"첨부 "}.resource-row span:nth-of-type(3):before{content:"게시자 "}.resource-row time:before{content:"게시 시각 "}.resource-no,.resource-row>span:not(.resource-no),.resource-row>time{text-align:left}}.teacher-apps-workbench{gap:var(--space-4)}.teacher-apps-panel,.teacher-apps-card,.teacher-apps-list-section{border:var(--panel-border);border-radius:var(--panel-radius);background:var(--panel-bg);min-width:0;padding:var(--panel-padding)}.teacher-apps-panel,.teacher-apps-list-section,.teacher-apps-card,.teacher-apps-form,.teacher-apps-resources,.teacher-apps-selected-files,.teacher-apps-existing-files{gap:var(--space-3);display:grid}.teacher-apps-hero,.teacher-apps-page-head,.teacher-apps-list-head,.teacher-apps-card-actions,.teacher-apps-list-options,.teacher-apps-form-actions{justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.teacher-apps-reports-panel{gap:var(--space-4);border-left:var(--space-1) solid var(--color-pending-border)}.teacher-apps-reports-head,.teacher-apps-reports-meta,.teacher-apps-report-actions,.teacher-apps-scanner-health{justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.teacher-apps-scanner-health{border:1px solid var(--color-border-soft);border-radius:var(--radius-sm);background:var(--color-surface-soft);padding:var(--space-3)}.teacher-apps-scanner-health>span:nth-child(2){color:var(--color-text-secondary);flex:320px;font-size:13px}.teacher-apps-scanner-health button{min-height:var(--control-height-sm);padding-inline:var(--space-3);font-size:13px}.teacher-apps-reports-head>div,.teacher-apps-reports-body,.teacher-apps-report-list,.teacher-apps-report-row>div:first-child{gap:var(--space-2);min-width:0;display:grid}.teacher-apps-reports-head h3,.teacher-apps-reports-head p,.teacher-apps-report-row p{margin:0}.teacher-apps-reports-head p,.teacher-apps-report-row span{color:var(--color-text-secondary);font-size:13px}.teacher-apps-report-row{gap:var(--space-3);border:1px solid var(--color-border-soft);border-radius:var(--radius-sm);background:var(--color-surface-soft);padding:var(--space-3);grid-template-columns:minmax(0,1fr) auto;align-items:center;display:grid}.teacher-apps-report-row p{overflow-wrap:anywhere;white-space:pre-wrap}.teacher-apps-report-actions{justify-content:flex-end}.teacher-apps-report-actions button,.teacher-apps-reports-meta button{min-height:var(--control-height-sm);padding-inline:var(--space-3);font-size:13px}.teacher-apps-hero{border-top-color:var(--accent-sky);border-top-width:var(--space-1)}.teacher-apps-hero-copy{align-items:center;gap:var(--space-4);min-width:0;display:flex}.teacher-apps-icon{width:var(--control-height);height:var(--control-height);border:1px solid color-mix(in srgb, var(--accent-sky) 70%, var(--color-border));border-radius:var(--radius-md);background:color-mix(in srgb, var(--accent-sky) 34%, var(--color-surface));color:var(--color-text);font-size:var(--space-5);flex:none;place-items:center;font-weight:900;display:grid}.teacher-apps-hero h2,.teacher-apps-page-head h2,.teacher-apps-card h3,.teacher-apps-list-head h3,.teacher-apps-hero p,.teacher-apps-page-head p,.teacher-apps-card p,.teacher-apps-list-head span{margin:0}.teacher-apps-hero-copy>div,.teacher-apps-page-head>div,.teacher-apps-card-head{gap:var(--space-1);min-width:0;display:grid}.teacher-apps-hero-copy>div>p:last-child,.teacher-apps-page-head>div>p:last-child,.teacher-apps-card-head p,.teacher-apps-meta,.teacher-apps-resource-row span,.teacher-apps-optional,.teacher-apps-existing-files>div:first-child span,.teacher-apps-drop-zone span,.teacher-apps-safety-note span,.teacher-apps-empty span{color:var(--color-text-secondary);font-size:13px}.teacher-apps-kicker{color:var(--color-text-secondary);letter-spacing:.04em;text-transform:uppercase;margin:0;font-size:12px;font-weight:900}.teacher-apps-controls{gap:var(--space-4)}.teacher-apps-search{gap:var(--space-2);grid-template-columns:minmax(0,1fr) minmax(0,.4fr) auto;align-items:end;display:grid}.teacher-apps-search-actions{gap:var(--space-2);display:flex}.teacher-apps-list-options{padding-top:var(--space-3);border-top:1px solid var(--color-border-soft)}.teacher-apps-sort{gap:var(--space-1);border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface-soft);padding:var(--space-1);display:inline-flex}.teacher-apps-sort button{min-height:var(--control-height-sm);padding-inline:var(--space-4)}.teacher-apps-list-section{gap:var(--space-4)}.teacher-apps-list-head>div{align-items:baseline;gap:var(--space-2);display:flex}.teacher-apps-grid{gap:var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.teacher-apps-card{border-top:var(--space-1) solid color-mix(in srgb, var(--accent-sky) 76%, var(--color-border));box-shadow:var(--shadow-sm);align-content:start}.teacher-apps-card.hidden{border-top-color:var(--color-pending-border);background:color-mix(in srgb, var(--color-pending-bg) 25%, var(--color-surface))}.teacher-apps-card-badges,.teacher-apps-meta,.teacher-apps-card-actions{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.teacher-apps-card-head h3,.teacher-apps-card-head p,.teacher-apps-instructions p,.teacher-apps-resource-row strong,.teacher-apps-resource-row span{overflow-wrap:anywhere}.teacher-apps-card-head h3{margin-top:var(--space-1);font-size:18px}.teacher-apps-meta span+span:before{content:"·";margin-right:var(--space-2);color:var(--color-border)}.teacher-apps-instructions{border:1px solid var(--color-border-soft);border-radius:var(--radius-sm);background:var(--color-surface-soft);padding:var(--space-3)}.teacher-apps-instructions summary{cursor:pointer;font-size:13px;font-weight:800}.teacher-apps-instructions p{margin:var(--space-3) 0 0;color:var(--color-text);white-space:pre-wrap;line-height:1.7}.teacher-apps-resource-row,.teacher-apps-existing-file,.teacher-apps-selected-files>div{gap:var(--space-2);border:1px solid var(--color-border-soft);border-radius:var(--radius-sm);background:var(--color-surface-soft);min-width:0;padding:var(--space-3);grid-template-columns:minmax(0,1fr) auto auto;align-items:center;display:grid}.teacher-apps-resource-row>div,.teacher-apps-existing-files>div:first-child,.teacher-apps-drop-zone>div,.teacher-apps-safety-note{gap:var(--space-1);min-width:0;display:grid}.teacher-apps-resource-row button,.teacher-apps-existing-file button,.teacher-apps-selected-files button{min-height:var(--control-height-sm);padding-inline:var(--space-3);font-size:13px}.teacher-apps-card-actions{padding-top:var(--space-1);margin-top:auto}.teacher-apps-card-actions button{min-height:var(--control-height-sm);padding-inline:var(--space-3);font-size:13px}.teacher-apps-empty{justify-items:center;gap:var(--space-2);border:1px dashed var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-soft);padding:var(--space-7);text-align:center;display:grid}.teacher-apps-form-page{width:100%}.teacher-apps-form{border-top:1px solid var(--color-border-soft);padding-top:var(--space-4)}.teacher-apps-form-grid{gap:var(--space-3);grid-template-columns:minmax(0,1.5fr) minmax(0,.5fr);display:grid}.teacher-apps-optional{font-weight:500}.teacher-apps-existing-files{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);padding:var(--space-3)}.teacher-apps-drop-zone{gap:var(--space-3);border:1px dashed var(--color-text-muted);border-radius:var(--radius-md);background:var(--color-surface);padding:var(--space-4);grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;transition:border-color .16s,background .16s,box-shadow .16s;display:grid}.teacher-apps-drop-zone.active{border-color:var(--color-primary);background:var(--color-surface-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--color-primary) 18%, transparent)}.teacher-apps-safety-note{border:1px solid var(--color-pending-border);border-radius:var(--radius-md);background:var(--color-pending-bg);padding:var(--space-3)}.teacher-apps-form-actions{padding-top:var(--space-1);justify-content:flex-end}@media (width<=900px){.teacher-apps-grid{grid-template-columns:minmax(0,1fr)}.teacher-apps-search{grid-template-columns:minmax(0,1fr) minmax(0,.6fr)}.teacher-apps-search-actions{grid-column:1/-1}}@media (width<=620px){.teacher-apps-hero,.teacher-apps-page-head,.teacher-apps-list-options,.teacher-apps-reports-head,.teacher-apps-scanner-health,.teacher-apps-form-actions{flex-direction:column;align-items:stretch}.teacher-apps-hero>button,.teacher-apps-page-head>button,.teacher-apps-form-actions button,.teacher-apps-search-actions button,.teacher-apps-empty button{width:100%}.teacher-apps-hero-copy{align-items:flex-start}.teacher-apps-search,.teacher-apps-form-grid,.teacher-apps-drop-zone{grid-template-columns:minmax(0,1fr)}.teacher-apps-search-actions{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.teacher-apps-sort{grid-template-columns:repeat(2,minmax(0,1fr));width:100%;display:grid}.teacher-apps-list-options>button{width:100%}.teacher-apps-resource-row,.teacher-apps-existing-file,.teacher-apps-report-row,.teacher-apps-selected-files>div{grid-template-columns:minmax(0,1fr) auto}.teacher-apps-resource-row>div,.teacher-apps-existing-file>span:first-child,.teacher-apps-report-row>div,.teacher-apps-selected-files>div>span{grid-column:1/-1}.teacher-apps-report-actions,.teacher-apps-report-actions button{width:100%}}.documents-workbench{gap:var(--space-4);display:grid}.documents-panel{padding:var(--panel-padding);border:var(--panel-border);border-radius:var(--panel-radius);background:var(--panel-bg)}.documents-upload,.documents-calendar{gap:var(--space-3);grid-template-columns:minmax(220px,2fr) minmax(150px,1fr) auto auto;align-items:end;display:grid}.documents-upload label,.documents-calendar label{gap:var(--space-2);display:grid}.documents-upload .documents-retain{min-height:var(--control-height);align-items:center;display:flex}.documents-upload-files,.documents-search-results,.documents-attachments,.documents-wiki{gap:var(--space-3);margin-top:var(--space-4);display:grid}.documents-upload-files>div,.documents-attachments article{justify-content:space-between;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--color-border-soft);border-radius:var(--radius-sm);background:var(--color-surface-soft);align-items:center;display:flex}.documents-attachments article>div:first-child{gap:var(--space-1);min-width:0;display:grid}.documents-attachments article span,.documents-attachments article small,.documents-search-results span,.documents-search-results small{color:var(--color-text-secondary)}.documents-trash{padding:var(--space-3);border:1px solid var(--color-border-soft);border-radius:var(--radius-sm);background:var(--color-surface-soft)}.documents-trash summary{cursor:pointer;font-weight:800}.documents-trash[open] summary{margin-bottom:var(--space-3)}.documents-trash article+article{margin-top:var(--space-2)}.danger-text{color:var(--color-danger-text)!important}.documents-knowledge-search form{gap:var(--space-2);grid-template-columns:minmax(0,1fr) auto;align-items:end;display:grid}.documents-pipeline-form{gap:var(--space-3);grid-template-columns:minmax(180px,1fr) auto auto auto;align-items:end;display:grid}.documents-pipeline-form label{gap:var(--space-1);display:grid}.documents-pipeline-form .documents-retain{min-height:var(--control-height);align-items:center;display:flex}.documents-knowledge-search label,.documents-wiki label,.documents-ai-form label{gap:var(--space-1);display:grid}.documents-search-results{grid-template-columns:repeat(3,minmax(0,1fr))}.documents-search-results button{gap:var(--space-1);height:auto;padding:var(--space-3);text-align:left;background:var(--color-surface-soft);color:var(--color-text);display:grid}.documents-layout{gap:var(--space-4);grid-template-columns:minmax(260px,.8fr) minmax(0,2fr);align-items:start;display:grid}.documents-list{gap:var(--space-2);max-height:70vh;display:grid;overflow:auto}.documents-list-tools{gap:var(--space-2);margin-bottom:var(--space-3);grid-template-columns:minmax(0,2fr) minmax(0,1fr);display:grid}.documents-list-tools label,.documents-workflow-form label{gap:var(--space-1);display:grid}.documents-row{justify-items:start;gap:var(--space-1);width:100%;min-height:auto;padding:var(--space-3);border:1px solid var(--color-border-soft);border-radius:var(--radius-sm);background:var(--color-surface-soft);color:var(--color-text);text-align:left;display:grid}.documents-row.selected{border-color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 7%, white)}.documents-row span,.documents-row small{color:var(--color-text-secondary)}.documents-meta{gap:var(--space-2);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.documents-meta div{padding:var(--space-3);border-radius:var(--radius-sm);background:var(--color-surface-soft)}.documents-meta dt{color:var(--color-text-secondary);font-size:.82rem}.documents-meta dd{margin:var(--space-1) 0 0}.documents-meta-form label{gap:var(--space-1);display:grid}.documents-meta-form .documents-summary-field{grid-column:1/-1}.documents-tags{gap:var(--space-2);flex-wrap:wrap;display:flex}.documents-detail-actions{gap:var(--space-2);align-items:center;display:flex}.documents-tags span{padding:var(--space-1) var(--space-2);border-radius:var(--radius-pill);background:var(--color-neutral-bg);color:var(--color-text-secondary)}.documents-workflow{margin-top:var(--space-4);padding:var(--space-4);border:1px solid var(--color-border-soft);border-radius:var(--radius-sm);background:var(--color-surface-soft)}.documents-workflow-form{gap:var(--space-2);grid-template-columns:minmax(0,2fr) minmax(0,1fr) auto;align-items:end;display:grid}.documents-pdf{width:100%;min-height:720px;margin-top:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.documents-text{white-space:pre-wrap;max-height:420px;color:var(--color-text-secondary);overflow:auto}.documents-wiki{padding:var(--space-4);border:1px solid var(--color-border-soft);border-radius:var(--radius-sm);background:var(--color-surface-soft)}.documents-wiki-editor{min-height:360px}.documents-wiki-actions{gap:var(--space-2);display:flex}.documents-wiki blockquote{margin:var(--space-3) 0;padding:var(--space-3);border-left:3px solid var(--color-primary);background:var(--color-surface)}.documents-external-ai{padding:var(--space-3);border:1px solid var(--color-border-soft);border-radius:var(--radius-sm);background:var(--color-surface)}.documents-ai-form{gap:var(--space-2);grid-template-columns:repeat(3,minmax(0,1fr));align-items:end;display:grid}.documents-ai-instructions,.documents-external-confirm{grid-column:1/-1}.documents-ai-form .documents-external-confirm{align-items:center;display:flex}@media (width<=900px){.documents-upload,.documents-calendar,.documents-layout,.documents-list-tools,.documents-workflow-form,.documents-knowledge-search form,.documents-search-results,.documents-ai-form,.documents-pipeline-form,.documents-meta{grid-template-columns:1fr}.documents-upload-files>div,.documents-attachments article,.documents-wiki-actions{flex-direction:column;align-items:stretch}}.knowledge-wiki-workbench{gap:var(--space-5);display:grid}.knowledge-wiki-panel{padding:var(--panel-padding);border:var(--panel-border);border-radius:var(--panel-radius);background:var(--panel-bg)}.knowledge-wiki-search{gap:var(--space-3);grid-template-columns:minmax(280px,1fr) auto auto;align-items:end;display:grid}.knowledge-wiki-search label{min-width:0}.knowledge-wiki-question-panel{gap:var(--space-3);display:grid}.knowledge-wiki-question-form{gap:var(--space-3);grid-template-columns:minmax(280px,1fr) auto auto;align-items:end;display:grid}.knowledge-wiki-question-form label{min-width:0}.knowledge-wiki-answer{gap:var(--space-3);padding:var(--space-4);border:1px solid var(--color-border-soft);border-radius:var(--radius-sm);background:var(--color-surface-soft);display:grid}.knowledge-wiki-answer .knowledge-wiki-content{border:0;padding:0}.knowledge-wiki-question-sources,.knowledge-wiki-staff-matches{gap:var(--space-2);display:grid}.knowledge-wiki-question-sources>div{gap:var(--space-2);flex-wrap:wrap;display:flex}.knowledge-wiki-staff-matches span{padding:var(--space-3);border-radius:var(--radius-sm);background:var(--color-surface-soft);color:var(--color-text-secondary)}.knowledge-wiki-layout{gap:var(--space-5);grid-template-columns:minmax(280px,.8fr) minmax(0,1.7fr);align-items:start;display:grid}.knowledge-wiki-list{gap:var(--space-2);max-height:72vh;display:grid;overflow:auto}.knowledge-wiki-row{gap:var(--space-2);width:100%;min-height:0;padding:var(--space-4);border:1px solid var(--color-border-soft);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);text-align:left;justify-content:stretch;display:grid}.knowledge-wiki-row:hover,.knowledge-wiki-row.selected{border-color:var(--color-primary);background:var(--color-surface-soft)}.knowledge-wiki-row span,.knowledge-wiki-row small{color:var(--color-text-secondary)}.knowledge-wiki-summary{padding:var(--space-4);border-left:3px solid var(--accent-violet);background:var(--color-surface-soft);line-height:1.7}.knowledge-wiki-source-meta{gap:var(--space-3);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.knowledge-wiki-source-meta div{padding:var(--space-3);border-radius:var(--radius-sm);background:var(--color-surface-soft)}.knowledge-wiki-source-meta dt{color:var(--color-text-secondary);font-size:.82rem}.knowledge-wiki-source-meta dd{margin:var(--space-1) 0 0}.knowledge-wiki-actions{margin:var(--space-4) 0;justify-content:flex-end;display:flex}.knowledge-wiki-content{padding:var(--space-5);border:1px solid var(--color-border-soft);border-radius:var(--radius-sm);overflow-wrap:anywhere;line-height:1.75}.knowledge-wiki-content h2,.knowledge-wiki-content h3,.knowledge-wiki-content h4{margin:var(--space-5) 0 var(--space-3)}.knowledge-wiki-content p{margin:var(--space-2) 0;white-space:pre-wrap}.knowledge-wiki-spacer{height:var(--space-3)}.knowledge-wiki-bullet,.knowledge-wiki-number{padding-left:var(--space-5)}.knowledge-wiki-bullet:before{content:"•";margin-left:calc(-1 * var(--space-4));margin-right:var(--space-2)}.knowledge-wiki-citations{margin-top:var(--space-5)}.knowledge-wiki-citations blockquote{margin:var(--space-3) 0;padding:var(--space-4);border-left:3px solid var(--color-border);background:var(--color-surface-soft)}@media (width<=900px){.knowledge-wiki-layout,.knowledge-wiki-search,.knowledge-wiki-question-form,.knowledge-wiki-source-meta{grid-template-columns:1fr}.knowledge-wiki-list{max-height:none}}.meeting-workbench{gap:var(--space-5);min-width:0;overflow-x:hidden}.meeting-workbench h2,.meeting-workbench h3,.meeting-workbench p,.meeting-workbench label,.meeting-workbench button,.meeting-workbench input,.meeting-workbench select,.meeting-workbench textarea,.meeting-workbench summary{overflow-wrap:anywhere;max-width:100%}.meeting-panel{gap:var(--space-4);border:var(--panel-border);border-radius:var(--panel-radius);background:var(--panel-bg);width:min(100%,1120px);min-width:0;padding:var(--panel-padding);margin:0 auto;display:grid}.meeting-status-panel,.meeting-section-head,.meeting-result-actions{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.meeting-status-panel>div,.meeting-section-head>div,.meeting-admin-details>summary>div{min-width:0}.meeting-form-actions{justify-items:end;gap:var(--space-2);min-width:0;max-width:100%;display:grid}.meeting-form-actions .notice{text-align:left;width:min(100%,360px);margin:0}.meeting-status-panel p,.meeting-section-head p,.meeting-upload-file{margin:var(--space-1) 0 0;color:var(--color-text-secondary);font-size:13px}.meeting-status-panel{width:min(100%,1120px);padding-block:var(--space-3);justify-content:flex-start}.meeting-step-heading{align-items:center;gap:var(--space-3);margin-top:var(--space-2);display:flex}.meeting-step-heading>span{background:var(--color-primary);color:#fff;border-radius:50%;flex:0 0 32px;place-items:center;width:32px;height:32px;font-weight:900;display:grid}.meeting-step-heading div{gap:2px;display:grid}.meeting-step-heading small{color:var(--color-text-secondary)}.meeting-kicker{margin:0 0 var(--space-1);color:var(--color-primary);font-size:13px;font-weight:800}.meeting-runtime-grid{gap:var(--space-2);grid-template-columns:repeat(3,minmax(0,1fr));width:min(100%,520px);min-width:0;display:grid}.meeting-runtime-card{gap:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-soft);min-width:0;padding:var(--space-2) var(--space-3);grid-template-columns:14px minmax(0,1fr);align-items:center;display:grid}.meeting-runtime-card strong,.meeting-runtime-card span{overflow-wrap:anywhere;min-width:0;display:block}.meeting-runtime-card strong{font-size:16px;line-height:1.2}.meeting-runtime-card span{color:var(--color-text-secondary);font-size:12px;font-weight:800}.meeting-runtime-icon{border-radius:var(--radius-pill);background:var(--color-neutral-text);width:10px;height:10px;box-shadow:0 0 0 4px var(--color-neutral-bg);display:inline-block}.meeting-runtime-icon.online{background:var(--color-success-text);box-shadow:0 0 0 4px var(--color-success-bg)}.meeting-runtime-icon.running,.meeting-runtime-icon.queued{background:var(--color-pending-text);box-shadow:0 0 0 4px var(--color-pending-bg)}.meeting-runtime-icon.paused{background:var(--color-neutral-text);box-shadow:0 0 0 4px var(--color-neutral-bg)}.meeting-runtime-icon.offline{background:var(--color-danger-text);box-shadow:0 0 0 4px var(--color-danger-bg)}.meeting-layout{align-items:start;gap:var(--space-5);grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);width:min(100%,1120px);margin:0 auto;display:grid}.meeting-layout>.meeting-panel{width:100%}.meeting-form,.meeting-list-panel{align-content:start}.meeting-form-grid{gap:var(--space-3);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.meeting-preset-grid{gap:var(--space-2);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.meeting-preset-option{min-width:0;display:grid;position:relative}.meeting-preset-button{justify-items:start;gap:var(--space-1);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-soft);min-width:0;min-height:76px;color:var(--color-text);padding:var(--space-3) var(--space-6) var(--space-3) var(--space-3);text-align:left;box-shadow:none;white-space:normal;display:grid}.meeting-preset-option>.field-hint{top:var(--space-2);right:var(--space-2);position:absolute}.meeting-preset-button strong,.meeting-preset-button span{overflow-wrap:anywhere;min-width:0}.meeting-preset-button span{color:var(--color-text-secondary);font-size:12px;font-weight:700}.meeting-preset-button.selected,.meeting-preset-button:hover{border-color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 8%, white)}.meeting-advanced-options{gap:var(--space-3);border:1px solid var(--color-border-soft);border-radius:var(--radius-sm);background:var(--color-surface-soft);min-width:0;padding:var(--space-3);display:grid}.meeting-advanced-options>summary{cursor:pointer;color:var(--color-text-secondary);font-size:13px;font-weight:900}.meeting-advanced-options[open]>summary{margin-bottom:var(--space-3)}.meeting-mask-toggle{justify-content:start}.meeting-label-row,.meeting-heading-row,.meeting-profile-note{align-items:center;gap:var(--space-1);min-width:0;display:inline-flex}.meeting-heading-row{flex-wrap:wrap}.meeting-profile-note{margin-top:var(--space-1);color:var(--color-text-secondary);font-size:12px;line-height:1.5}.meeting-upload{border:1px dashed var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-soft);padding:var(--space-3)}.meeting-upload input,.meeting-upload-file{min-width:0;max-width:100%}.meeting-upload-primary{border-color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 5%, white)}.meeting-create-button{width:100%;min-height:48px;font-size:16px}.meeting-optional-inputs{gap:var(--space-3);display:grid}.meeting-job-list{gap:var(--space-2);align-content:start;display:grid}.meeting-draft-list{gap:var(--space-2);border:1px solid var(--color-success-border);border-radius:var(--radius-sm);background:var(--color-success-bg);padding:var(--space-3);display:grid}.meeting-draft-list-head,.meeting-draft-item{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.meeting-draft-list-head span,.meeting-draft-item span{color:var(--color-success-text);font-size:12px;font-weight:800}.meeting-draft-item{border:1px solid var(--color-success-border);width:100%;color:var(--color-text);text-align:left;box-shadow:none;background:#fff}.meeting-draft-item:hover{border-color:var(--color-success-text);color:var(--color-text);box-shadow:none;background:#fff}.meeting-job-draft-badge{border:1px solid var(--color-success-border);border-radius:var(--radius-pill);background:var(--color-success-bg);color:var(--color-success-text);padding:2px 8px;font-size:11px;font-weight:900}.meeting-job{gap:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);min-width:0;color:var(--color-text);padding:var(--space-2);box-shadow:none;background:#fff;grid-template-columns:minmax(0,1fr) auto;display:grid}.meeting-job-open{gap:var(--space-2);border-radius:var(--radius-sm);width:100%;min-width:0;min-height:72px;color:var(--color-text);padding:var(--space-1);text-align:left;white-space:normal;box-shadow:none;background:0 0;border:0;justify-content:stretch;display:grid}.meeting-job-main,.meeting-job-meta{justify-content:space-between;align-items:center;gap:var(--space-2);min-width:0;display:flex}.meeting-job-main strong{overflow-wrap:anywhere;min-width:0}.meeting-job-meta{color:var(--color-text-secondary);flex-wrap:wrap;justify-content:flex-start;font-size:12px}.meeting-job-meta span{border:1px solid var(--color-border-soft);border-radius:var(--radius-pill);background:var(--color-surface-soft);overflow-wrap:anywhere;align-items:center;max-width:100%;min-height:22px;padding:2px 8px;display:inline-flex}.meeting-job-note{color:var(--color-text-secondary);margin:0;font-size:12px;line-height:1.5}.meeting-job:hover,.meeting-job.selected,.meeting-job-open:hover{border-color:var(--color-primary);background:var(--color-surface-soft)}.meeting-job-actions{align-self:center;gap:var(--space-2);display:grid}.meeting-job-delete{min-height:var(--control-height-sm);padding-inline:var(--space-3);align-self:center}.meeting-pagination{justify-content:center;align-items:center;gap:var(--space-3);border-top:1px solid var(--color-border-soft);padding-top:var(--space-3);display:flex}.meeting-pagination span{min-width:64px;color:var(--color-text-secondary);text-align:center;font-size:13px;font-weight:800}.meeting-result-panel{align-content:start}.meeting-profile-list{gap:var(--space-3);display:grid}.meeting-profile-card{gap:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-soft);padding:var(--space-3);display:grid}.meeting-profile-title{justify-content:space-between;align-items:center;gap:var(--space-3);min-width:0;display:flex}.meeting-profile-title>strong{overflow-wrap:anywhere;min-width:0}.meeting-model-inventory{gap:var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.meeting-model-inventory h3{margin:0 0 var(--space-2);font-size:15px}.meeting-model-inventory ul,.meeting-model-defaults{gap:var(--space-2);margin:0;padding:0;display:grid}.meeting-model-inventory li,.meeting-model-defaults div{gap:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-soft);min-width:0;padding:var(--space-2) var(--space-3);grid-template-columns:minmax(0,1fr) auto;align-items:center;display:grid}.meeting-model-inventory li{list-style:none}.meeting-model-inventory strong,.meeting-model-defaults dd{overflow-wrap:anywhere;min-width:0}.meeting-model-inventory span,.meeting-model-defaults dt{color:var(--color-text-secondary);font-size:12px;font-weight:800}.meeting-model-defaults dt,.meeting-model-defaults dd{margin:0}.meeting-admin-details{align-content:start}.meeting-admin-details>summary{justify-content:space-between;align-items:center;gap:var(--space-3);cursor:pointer;list-style:none;display:flex}.meeting-admin-details>summary::-webkit-details-marker{display:none}.meeting-admin-details>summary:after{content:"펼치기";border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface-soft);color:var(--color-text-secondary);padding:5px 10px;font-size:12px;font-weight:900}.meeting-admin-details[open]>summary:after{content:"접기"}.meeting-api-key-modal{gap:var(--space-4);border:var(--panel-border);border-radius:var(--panel-radius);background:var(--panel-bg);width:min(92vw,440px);padding:var(--space-5);box-shadow:var(--shadow-lg);display:grid}.meeting-workbench .modal-backdrop{z-index:50;padding:var(--space-4);background:#11111152;place-items:center;display:grid;position:fixed;inset:0}.meeting-result-actions{flex-wrap:wrap;justify-content:flex-end}.meeting-result-more,.meeting-other-results{min-width:0}.meeting-result-more>summary,.meeting-other-results>summary{color:var(--color-text-secondary);cursor:pointer;font-size:13px;font-weight:800}.meeting-result-more[open] .meeting-result-actions,.meeting-other-results[open] .meeting-tabs{margin-top:var(--space-3)}.meeting-result-actions button,.meeting-form-actions button,.meeting-job-delete,.meeting-tabs button:not(.field-hint),.meeting-pagination button{white-space:normal;min-width:0}.meeting-term-row{gap:var(--space-2);flex-wrap:wrap;display:flex}.meeting-term-row span{border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface-soft);color:var(--color-text-secondary);padding:5px 9px;font-size:12px;font-weight:800}.meeting-tabs{gap:var(--space-2);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.meeting-tab-option{gap:var(--space-1);grid-template-columns:minmax(0,1fr) auto;align-items:center;min-width:0;display:grid}.meeting-tab-option>button:not(.field-hint){width:100%}.meeting-result-text{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-soft);min-height:280px;max-height:560px;padding:var(--space-4);color:var(--color-text);font:inherit;white-space:pre-wrap;overflow-wrap:anywhere;margin:0;line-height:1.7;overflow:auto}.meeting-review-panel,.meeting-review-disabled{gap:var(--space-3);min-width:0;display:grid}.meeting-review-simple-guide,.meeting-review-finalize{gap:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-soft);min-width:0;padding:var(--space-3);display:grid}.meeting-review-simple-guide>span,.meeting-review-finalize p{color:var(--color-text-secondary);margin:0;line-height:1.6}.meeting-review-finalize{bottom:var(--space-2);z-index:3;box-shadow:var(--shadow-md);background:#fff;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;position:sticky}.meeting-review-finalize .inline-toggle{margin:0}.meeting-review-player,.meeting-review-savebar,.meeting-review-segment{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-soft);min-width:0;padding:var(--space-3)}.meeting-review-shortcuts{gap:var(--space-2) var(--space-3);border:1px solid var(--color-border-soft);border-radius:var(--radius-sm);background:var(--color-surface-soft);min-width:0;padding:var(--space-2) var(--space-3);grid-template-columns:auto minmax(0,1fr);align-items:center;display:grid}.meeting-review-shortcuts strong{color:var(--color-text);font-size:13px}.meeting-review-shortcuts div{gap:var(--space-2);flex-wrap:wrap;min-width:0;display:flex}.meeting-review-shortcuts span{align-items:center;gap:var(--space-1);min-height:26px;color:var(--color-text-secondary);font-size:12px;font-weight:800;display:inline-flex}.meeting-review-shortcuts kbd{border:1px solid var(--color-border);border-radius:var(--radius-sm);min-height:22px;color:var(--color-text);white-space:nowrap;background:#fff;align-items:center;padding:2px 7px;font-family:inherit;font-size:11px;font-weight:900;display:inline-flex}.meeting-review-player{gap:var(--space-3);display:grid}.meeting-review-audio{width:100%;min-width:0;display:block}.meeting-review-controls,.meeting-review-savebar,.meeting-review-segment-head{align-items:center;gap:var(--space-2);min-width:0;display:flex}.meeting-review-controls,.meeting-review-segment-head{flex-wrap:wrap}.meeting-review-speed{align-items:center;gap:var(--space-1);min-width:0;display:inline-flex}.meeting-review-speed span{color:var(--color-text-secondary);white-space:nowrap;font-size:12px;font-weight:800}.meeting-review-speed select{min-height:var(--control-height-sm);width:7ch;padding-block:var(--space-1)}.meeting-review-findbar{gap:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-soft);min-width:0;padding:var(--space-3);grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto auto auto;align-items:end;display:grid}.meeting-review-speakerbar{gap:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-soft);min-width:0;padding:var(--space-3);grid-template-columns:minmax(0,180px) minmax(0,1fr) auto auto;align-items:end;display:grid}.meeting-review-speakerbar label,.meeting-review-segment-speaker{gap:var(--space-1);min-width:0;display:grid}.meeting-review-speakerbar label span,.meeting-review-segment-speaker span{color:var(--color-text-secondary);font-size:12px;font-weight:800}.meeting-review-speakerbar button:not(.field-hint){min-height:var(--control-height-sm)}.meeting-review-findbar label{gap:var(--space-1);min-width:0;display:grid}.meeting-review-findbar label span,.meeting-review-find-status{color:var(--color-text-secondary);font-size:12px;font-weight:800}.meeting-review-find-status{min-height:var(--control-height-sm);border:1px solid var(--color-border-soft);border-radius:var(--radius-pill);padding-inline:var(--space-3);white-space:nowrap;background:#fff;align-items:center;display:inline-flex}.meeting-review-findbar button:not(.field-hint){min-height:var(--control-height-sm)}.meeting-review-savebar{flex-wrap:wrap;justify-content:space-between}.meeting-review-savebar span,.meeting-review-time,.meeting-review-current{min-width:0;color:var(--color-text-secondary);overflow-wrap:anywhere;font-size:12px;font-weight:800}.meeting-review-time,.meeting-review-current{border:1px solid var(--color-border-soft);border-radius:var(--radius-pill);background:#fff;align-items:center;min-height:28px;padding:3px 9px;display:inline-flex}.meeting-review-actions{justify-content:flex-end;gap:var(--space-2);flex-wrap:wrap;min-width:0;display:flex}.meeting-review-actions button{min-height:var(--control-height-sm);padding-inline:var(--space-3)}.meeting-review-draft-status,.meeting-review-confidence-status,.meeting-review-confidence-badge,.meeting-review-pending-status,.meeting-review-pending-badge,.meeting-review-edited-status,.meeting-review-edited-badge,.meeting-review-last-badge,.meeting-review-speaker-status,.meeting-review-speaker-badge{border:1px solid var(--color-pending-border);border-radius:var(--radius-pill);background:var(--color-pending-bg);min-height:24px;color:var(--color-pending-text);align-items:center;padding:2px 8px;display:inline-flex}.meeting-review-edited-status,.meeting-review-edited-badge{border-color:var(--color-success-border);background:var(--color-success-bg);color:var(--color-success-text)}.meeting-review-last-badge{border-color:var(--color-primary);color:var(--color-primary);background:#fff}.meeting-review-speaker-status,.meeting-review-speaker-badge{border-color:var(--color-border-soft);background:var(--color-surface);color:var(--color-text-secondary)}.meeting-review-segments{gap:var(--space-2);min-width:0;max-height:620px;padding-right:var(--space-1);display:grid;overflow:auto}.meeting-review-scroll-controls{z-index:2;justify-content:flex-end;align-items:center;gap:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:color-mix(in srgb, var(--color-surface) 92%, transparent);box-shadow:var(--shadow-sm);padding:var(--space-2);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);flex-wrap:wrap;display:flex;position:sticky;top:0}.meeting-review-scroll-controls span{color:var(--color-text-secondary);margin-right:auto;font-size:12px;font-weight:800}.meeting-review-scroll-controls button{min-height:var(--control-height-sm);padding-inline:var(--space-3)}.meeting-review-segment{gap:var(--space-2);background:#fff;display:grid}.meeting-review-segment.saved-edit{border-color:var(--color-success-border);background:var(--color-success-bg)}.meeting-review-segment.pending-edit{border-color:var(--color-pending-border);background:var(--color-pending-bg)}.meeting-review-segment.last-edited{box-shadow:inset 4px 0 0 var(--color-primary)}.meeting-review-segment.active{border-color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 8%, white)}.meeting-review-segment.repeating{box-shadow:inset 0 0 0 2px var(--color-pending-border)}.meeting-review-segment.repeat-window:not(.repeating){border-color:var(--color-pending-border)}.meeting-review-segment.low-confidence{border-color:var(--color-pending-border);background:color-mix(in srgb, var(--color-pending-bg) 65%, white)}.meeting-review-segment-head{justify-content:space-between}.meeting-review-segment-actions{justify-content:flex-end;align-items:center;gap:var(--space-2);flex-wrap:wrap;min-width:0;display:flex}.meeting-review-seek,.meeting-review-repeat,.meeting-review-next{min-height:var(--control-height-sm);padding-inline:var(--space-3)}.meeting-review-segment-speaker{width:min(100%,160px)}.meeting-review-segment-speaker input{min-height:var(--control-height-sm);padding-block:var(--space-1)}.meeting-review-segment textarea{resize:vertical;min-height:88px}.meeting-review-bundle-editor{gap:var(--space-2);border:1px solid var(--color-pending-border);border-radius:var(--radius-sm);background:var(--color-surface-soft);padding:var(--space-3);display:grid}.meeting-review-bundle-head,.meeting-review-bundle-meta{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.meeting-review-bundle-head{justify-content:space-between}.meeting-review-bundle-head span{color:var(--color-text-secondary);font-size:12px;font-weight:700}.meeting-review-bundle-speaker{align-items:end;gap:var(--space-2);flex-wrap:wrap;width:100%;display:flex}.meeting-review-bundle-speaker label{flex:220px;min-width:0}.meeting-review-bundle-speaker input{width:100%}.meeting-review-bundle-row{gap:var(--space-2);border:1px solid var(--color-border-soft);border-radius:var(--radius-sm);background:var(--color-surface);padding:var(--space-2);display:grid}.meeting-review-bundle-row.active{border-color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 8%, white)}.meeting-review-bundle-row.low-confidence{border-color:var(--color-pending-border)}.meeting-profile-note.danger{color:var(--color-danger-text)}@media (width<=960px){.meeting-layout,.meeting-form-grid,.meeting-preset-grid,.meeting-model-inventory{grid-template-columns:1fr}}@media (width<=620px){.meeting-panel{padding:var(--space-3)}.meeting-status-panel,.meeting-section-head{flex-direction:column;align-items:stretch}.meeting-runtime-grid{grid-template-columns:1fr;width:100%}.meeting-form-actions,.meeting-form-actions .notice,.meeting-form-actions button,.meeting-result-actions,.meeting-result-actions button,.meeting-review-findbar button:not(.field-hint),.meeting-review-speakerbar button:not(.field-hint),.meeting-review-controls button:not(.field-hint),.meeting-review-scroll-controls button,.meeting-review-bundle-speaker button,.meeting-review-savebar button:not(.field-hint),.meeting-review-segment-head button:not(.field-hint){width:100%}.meeting-job{grid-template-columns:1fr}.meeting-draft-item{flex-direction:column;align-items:flex-start}.meeting-job-actions,.meeting-job-delete,.meeting-pagination button{width:100%}.meeting-admin-details>summary{flex-direction:column;align-items:stretch}.meeting-tabs,.meeting-review-findbar,.meeting-review-speakerbar{grid-template-columns:1fr}.meeting-review-find-status,.meeting-review-speakerbar select,.meeting-review-speakerbar input,.meeting-review-speed,.meeting-review-speed select{width:100%}.meeting-pagination{grid-template-columns:1fr;display:grid}.meeting-review-savebar,.meeting-review-segment-head{flex-direction:column;align-items:stretch}.meeting-review-shortcuts{grid-template-columns:1fr}.meeting-review-actions,.meeting-review-segment-speaker{width:100%}.meeting-review-finalize{grid-template-columns:1fr;position:static}.meeting-review-finalize button{width:100%}}.notification-center{gap:14px}.notification-center-toolbar{background:var(--panel-bg);border:var(--panel-border);border-radius:var(--panel-radius);padding:var(--panel-padding);gap:12px;display:grid}.notification-search{grid-template-columns:minmax(120px,150px) minmax(140px,190px) minmax(130px,150px) minmax(130px,150px) minmax(200px,1fr) auto;align-items:end;gap:10px;display:grid}.notification-search-keyword{min-width:0}.notification-search-actions{justify-content:flex-end;align-items:center;gap:8px;display:flex}.notification-center-list{gap:10px;display:grid}.notification-center-item{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;padding:14px;display:grid}.notification-center-item.unread{background:#fff7f7;border-color:#e2a2a2;box-shadow:inset 4px 0 #b91c1c}.notification-center-main{gap:8px;min-width:0;display:grid}.notification-center-main h2{overflow-wrap:anywhere;margin:0;font-size:16px;line-height:1.35}.notification-center-main p{color:var(--color-text);overflow-wrap:anywhere;margin:0;line-height:1.5}.notification-center-main .notification-pruned-text{color:#7a869a;font-size:13px;font-style:italic}.notification-center-meta,.notification-center-badges,.notification-center-actions{flex-wrap:wrap;align-items:center;gap:7px;display:flex}.notification-center-meta{color:var(--color-text-secondary);font-size:12px;font-weight:800}.notification-center-meta span{border:1px solid var(--color-border);background:var(--color-surface-soft);color:var(--color-text);border-radius:999px;padding:3px 8px}.notification-center .status-badge{border:1px solid var(--color-border);background:var(--color-surface-soft);min-height:24px;color:var(--color-text-secondary);border-radius:999px;align-items:center;padding:0 8px;font-size:12px;font-weight:900;display:inline-flex}.notification-center .status-badge.danger{color:#991b1b;background:#fee2e2;border-color:#e2a2a2}.notification-center-actions{justify-content:flex-end}.notification-center-actions button{min-height:var(--control-height-sm);padding:0 12px;font-size:13px}.notification-center-actions .danger-lite{color:#991b1b;background:#fff7f7;border-color:#e2a2a2}@media (width<=1040px){.notification-search{grid-template-columns:repeat(2,minmax(0,1fr))}.notification-search-actions{justify-content:stretch}.notification-search-actions button{flex:1 1 0}}@media (width<=720px){.notification-search,.notification-center-item{grid-template-columns:1fr}.notification-center-actions{justify-content:stretch}.notification-center-actions button{flex:110px}}.messages-app{gap:16px;display:grid}.messages-toolbar,.messages-search,.messages-compose .section-head,.messages-compose-actions,.messages-detail-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.messages-tabs{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.messages-search{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);padding:14px}.messages-search label{flex:220px;min-width:180px}.messages-search-actions{align-items:flex-end;gap:8px;display:flex}.messages-compose{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-sm);padding:18px}.messages-compose form{gap:14px;display:grid}.messages-layout{grid-template-columns:minmax(0,1fr) minmax(320px,.8fr);align-items:start;gap:16px;display:grid}.messages-list,.messages-detail{gap:10px;display:grid}.messages-row{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);grid-template-columns:minmax(0,1fr) auto;align-items:stretch;display:grid;overflow:hidden}.messages-row.unread{border-color:var(--color-danger-border);background:color-mix(in srgb, var(--color-danger-bg) 45%, var(--color-surface))}.messages-row.admin-row{border-color:var(--color-pending-border)}.messages-row-open{width:100%;min-height:0;color:inherit;box-shadow:none;text-align:left;background:0 0;border:0;border-radius:0;grid-template-columns:minmax(0,1fr) auto;gap:14px;padding:14px;display:grid}.messages-row-open:hover{background:color-mix(in srgb, var(--color-primary) 7%, transparent);transform:none}.messages-row-dismiss{align-self:center;margin-right:12px}.messages-row-main{gap:5px;min-width:0;display:grid}.messages-row-main strong,.messages-detail-head h2{color:var(--color-text);line-height:1.25}.messages-row-main p,.messages-body{color:var(--color-muted);white-space:pre-wrap;margin:0;line-height:1.55}.messages-row-side{flex-direction:column;align-items:flex-end;gap:6px;min-width:108px;display:flex}.messages-row-side time,.messages-detail-head time,.messages-meta{color:var(--color-muted);font-size:.86rem}.messages-detail{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-sm);padding:18px;position:sticky;top:16px}.messages-detail-head{border-bottom:1px solid var(--color-border);gap:5px;padding-bottom:12px;display:grid}.messages-recipients{border-top:1px solid var(--color-border);gap:10px;padding-top:12px;display:grid}.messages-recipients>div{flex-wrap:wrap;gap:6px;display:flex}@media (width<=980px){.messages-layout{grid-template-columns:1fr}.messages-detail{position:static}}@media (width<=640px){.messages-toolbar,.messages-search,.messages-compose .section-head,.messages-compose-actions,.messages-detail-actions{align-items:stretch}.messages-toolbar>button,.messages-tabs,.messages-tabs button,.messages-search-actions,.messages-search-actions button,.messages-compose-actions button,.messages-detail-actions button{width:100%}.messages-row,.messages-row-open{grid-template-columns:1fr}.messages-row-dismiss{width:calc(100% - 24px);margin:0 12px 12px}.messages-row-side{align-items:flex-start;min-width:0}}.emergency-workbench{gap:18px}.emergency-panel{background:var(--panel-bg);border:var(--panel-border);border-radius:var(--panel-radius);width:min(100%,1120px);min-width:0;padding:var(--panel-padding);gap:14px;margin:0 auto;display:grid}.emergency-head,.emergency-section-head,.emergency-results-head,.emergency-result{justify-content:space-between;align-items:center;gap:12px;display:flex}.emergency-head h2,.emergency-section-head h3,.emergency-result h3{margin:0}.emergency-head p,.emergency-section-head p,.emergency-updated,.emergency-admin-note,.emergency-results-head span,.emergency-result p{color:var(--color-text-muted);margin:0;font-size:13px;line-height:1.5}.emergency-summary{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.emergency-summary span,.emergency-badge{border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface-soft);color:var(--color-text);padding:5px 9px;font-size:12px;font-weight:800}.emergency-import,.emergency-search{align-items:end;gap:10px;display:grid}.emergency-import{grid-template-columns:minmax(0,1fr) auto auto auto}.emergency-search{grid-template-columns:minmax(120px,160px) minmax(0,1fr) auto}.emergency-results{gap:10px;display:grid}.emergency-preview{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-soft);gap:14px;padding:14px;display:grid}.emergency-preview-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.emergency-preview-head>div{gap:4px;display:grid}.emergency-preview-head span,.emergency-preview-row small{color:var(--color-text-muted);font-size:12px;line-height:1.5}.emergency-preview-grid{grid-template-columns:repeat(auto-fit,minmax(108px,1fr));gap:8px;display:grid}.emergency-preview-grid span{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff;padding:9px 10px;font-size:12px;font-weight:800}.emergency-preview-section{gap:8px;display:grid}.emergency-preview-list{gap:8px;max-height:320px;display:grid;overflow:auto}.emergency-preview-list.compact{max-height:360px}.emergency-preview-row{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff;gap:4px;padding:10px 11px;display:grid}.emergency-preview-row.warning{border-color:var(--color-pending-border);background:var(--color-pending-bg)}.emergency-preview-row.danger{border-color:var(--color-danger-border);background:var(--color-danger-bg)}.emergency-result{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff;min-height:82px;padding:13px 14px}.emergency-result:hover{border-color:var(--color-primary);background:var(--color-surface-soft)}.emergency-result>div{gap:5px;min-width:0;display:grid}.emergency-badge{justify-self:start}.emergency-result.student .emergency-badge{border-color:var(--color-pending-border);background:var(--color-pending-bg)}.emergency-result.teacher .emergency-badge{border-color:var(--color-success-border);background:var(--color-success-bg)}.emergency-extension{color:var(--color-text);white-space:nowrap;font-size:18px}@media (width<=720px){.emergency-head,.emergency-section-head,.emergency-results-head,.emergency-result{flex-direction:column;align-items:stretch}.emergency-summary{justify-content:flex-start}.emergency-import,.emergency-search{grid-template-columns:1fr}.emergency-preview-head{flex-direction:column;align-items:stretch}.emergency-extension{white-space:normal}}.polls-workbench{gap:18px}.polls-layout{grid-template-columns:minmax(340px,.9fr) minmax(420px,1.1fr);align-items:start;gap:16px;display:grid}.polls-panel{background:var(--panel-bg);border:var(--panel-border);border-radius:var(--panel-radius);min-width:0;padding:var(--panel-padding);gap:14px;display:grid}.polls-header,.polls-detail-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.polls-header h2,.polls-detail-head h2,.polls-voter-status h3{margin:0}.polls-header p,.polls-detail-head p{color:var(--color-text-secondary);margin:0;font-size:13px}.polls-form{border:1px solid var(--color-border);background:var(--color-surface-soft);border-radius:var(--radius-sm);gap:12px;padding:12px;display:grid}.polls-list{gap:8px;display:grid}.polls-row{border:1px solid var(--color-border);background:var(--color-surface-soft);border-radius:var(--radius-sm);width:100%;min-width:0;color:var(--color-text);text-align:left;gap:10px;padding:14px;transition:border-color .16s,background-color .16s,box-shadow .16s,transform .16s;display:grid}.polls-row.selected{border-color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 6%, white);box-shadow:inset 3px 0 0 var(--color-primary)}.polls-row:not(.selected):not(:disabled):hover{background:#eef1f7;border-color:#b7c5dc;transform:translateY(-1px);box-shadow:0 8px 18px #1f2d3d14}.polls-row-head{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:10px;display:grid}.polls-row-title{overflow-wrap:anywhere;min-width:0;color:var(--color-text);font-size:15px;line-height:1.35}.polls-row .polls-status{white-space:nowrap;justify-self:end;margin:0}.polls-row-meta{color:var(--color-text-secondary);gap:3px;font-size:13px;line-height:1.45;display:grid}.polls-row-meta span{overflow-wrap:anywhere;min-width:0}.polls-row-stats{flex-wrap:wrap;gap:6px;display:flex}.polls-row-stats span{border:1px solid var(--color-border);border-radius:var(--radius-sm);color:#425466;background:#fff;padding:4px 7px;font-size:12px;font-weight:800;line-height:1.2}.polls-row.selected .polls-row-stats span{border-color:#c7d7ff}.polls-detail-head{border-bottom:1px solid var(--color-border-soft);padding-bottom:12px}.polls-status{background:var(--color-surface-soft);width:max-content;color:var(--color-primary);border-radius:999px;margin-bottom:8px;padding:4px 8px;font-size:12px;font-weight:900;display:inline-flex}.polls-status.pending{color:#b45309;background:#fff7ed}.polls-status.rejected{color:#991b1b;background:#fee2e2}.polls-status.closed{color:#475569;background:#f1f5f9}.polls-review-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.polls-result-list{gap:8px;display:grid}.polls-meta{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.polls-meta span{border:1px solid var(--color-border);background:var(--color-surface-soft);border-radius:var(--radius-sm);color:#425466;padding:4px 7px;font-size:12px;font-weight:800}.polls-option-row{grid-template-columns:minmax(150px,.8fr) minmax(180px,1.2fr);align-items:stretch;gap:8px;min-width:0;display:grid}.polls-option{border:1px solid var(--color-border);background:var(--color-surface-soft);border-radius:var(--radius-sm);color:var(--color-text);text-align:left;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:9px;padding:10px;display:grid}.polls-option:hover:not(:disabled){border-color:var(--color-primary);background:var(--color-surface-soft)}.polls-option.selected{border-color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 8%, white);box-shadow:inset 4px 0 0 var(--color-primary)}.polls-option:disabled{opacity:.72;cursor:not-allowed}.polls-option strong{color:#425466;background:#fff;border:1px solid #b7c5dc;border-radius:999px;place-items:center;min-width:54px;padding:4px 8px;font-size:12px;font-weight:900;display:inline-grid}.polls-option.selected strong{border-color:var(--color-primary);background:var(--color-primary);color:#fff}.polls-option span{overflow-wrap:anywhere}.polls-bar-wrap{border:1px solid var(--color-border);background:#fff;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;padding:10px;display:grid}.polls-bar-wrap:before{content:"";background:#e7edf5;border-radius:999px;grid-area:1/1;height:10px}.polls-bar{z-index:1;background:var(--color-primary);border-radius:999px;grid-area:1/1;min-width:4px;height:10px}.polls-bar-wrap strong{color:var(--color-text);grid-area:1/2;font-size:13px}.polls-response-list{gap:8px;display:grid}.polls-response-list h3{margin:0}.polls-response{border:1px solid var(--color-border);background:var(--color-surface-soft);border-radius:var(--radius-sm);gap:6px;padding:10px;display:grid}.polls-response>div{color:var(--color-text-secondary);flex-wrap:wrap;justify-content:space-between;gap:8px;font-size:12px;display:flex}.polls-response strong{color:var(--color-text)}.polls-response small{color:var(--color-primary);font-weight:800}.polls-response p{white-space:pre-wrap;overflow-wrap:anywhere;margin:0;line-height:1.6}.polls-voter-status{gap:10px;display:grid}.polls-voter-status>div{flex-wrap:wrap;gap:6px;display:flex}.polls-voter-status span{border:1px solid var(--color-border);background:var(--color-surface-soft);border-radius:var(--radius-sm);color:var(--color-text-secondary);padding:6px 8px;font-size:12px}.polls-voter-status span.submitted{color:#15803d;background:#f0fdf4;border-color:#bbf7d0}@media (width<=620px){.polls-voter-option-list{grid-template-columns:1fr;max-height:320px}.polls-row-head{grid-template-columns:1fr;gap:7px}.polls-row .polls-status{justify-self:start}}.signature-workbench{gap:16px;display:grid}.signature-admin-grid{grid-template-columns:minmax(280px,360px) minmax(0,1fr);align-items:start;gap:16px;display:grid}.signature-panel{background:var(--panel-bg);border:var(--panel-border);border-radius:var(--panel-radius);padding:var(--panel-padding);gap:14px;display:grid}.signature-panel h2{margin:0}.field-label-with-help{align-items:center;gap:6px;display:inline-flex}.field-label-with-help span{width:18px;height:18px;color:var(--color-text-secondary);cursor:help;border:1px solid #b7c5dc;border-radius:50%;place-items:center;font-size:11px;font-weight:900;display:inline-grid}.signature-list,.signature-result-grid{gap:8px;display:grid}.signature-row{border:1px solid var(--color-border);background:var(--color-surface-soft);border-radius:var(--radius-sm);color:var(--color-text);text-align:left;justify-items:start;gap:4px;padding:12px;display:grid}.signature-row.signed{background:#eaf7ef;border-color:#51a36d}.signature-row:not(.signed):not(:disabled):hover{background:#eef1f7;border-color:#b7c5dc}.signature-row.signed:not(:disabled):hover{background:#ddf0e4}.signature-row strong,.signature-result-card strong{font-size:14px}.signature-row span,.signature-row small,.signature-result-card span,.signature-result-card small{color:var(--color-text-secondary);font-size:12px}.signature-pad{justify-items:start;gap:10px;display:grid}.signature-pad canvas{border:1px solid var(--color-border);touch-action:none;background:#fff;border-radius:6px;width:100%;max-width:720px;height:240px}.signature-attendance-choice{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.signature-absence-confirm{border-radius:var(--radius-sm);background:#fff7db;border:1px solid #d8b655;gap:10px;padding:12px;display:grid}.signature-absence-confirm p{color:var(--color-text);margin:0;font-size:13px;line-height:1.5}.signature-absence-confirm label{color:var(--color-text);gap:6px;font-size:13px;font-weight:800;display:grid}.signature-result-grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}.signature-result-card{border:1px solid var(--color-border);background:var(--color-surface-soft);border-radius:var(--radius-sm);gap:4px;padding:10px;display:grid}.signature-result-card.signed,.signature-result-card.attended{background:#eaf7ef;border-color:#51a36d}.signature-result-card.absent{background:#fff7db;border-color:#d8b655}.signature-result-card img{object-fit:contain;border:1px solid var(--color-border);background:#fff;width:100%;max-height:90px}.signature-manager-list{border:1px solid var(--color-border);background:var(--color-surface-soft);border-radius:var(--radius-sm);gap:4px;padding:10px;display:grid}.signature-manager-list strong{font-size:13px}.signature-manager-list span{color:var(--color-text-secondary);overflow-wrap:anywhere;font-size:12px}.print-only{display:none}.signature-result-overview{gap:14px;display:grid}.signature-result-head{border-bottom:2px solid var(--color-text);gap:10px;padding-bottom:12px;display:grid}.signature-result-head h2{text-align:center;font-size:22px}.signature-result-head dl{grid-template-columns:repeat(4,1fr);gap:8px;margin:0;display:grid}.signature-result-head div{border:1px solid var(--color-border);gap:3px;padding:8px;display:grid}.signature-result-head dt{color:var(--color-text-secondary);font-size:11px;font-weight:800}.signature-result-head dd{color:var(--color-text);margin:0;font-size:13px;font-weight:800}.print-signature-report{color:#000;background:#fff;font-family:Nanum Gothic,Malgun Gothic,Apple SD Gothic Neo,sans-serif}.signature-print-page{grid-template-rows:auto auto 1fr auto;gap:9px;display:grid}.signature-print-page-head{gap:7px;display:grid}.signature-print-page-head h2{text-align:center;margin:0;font-size:23px;font-weight:900}.signature-print-page-head span{justify-self:center;padding-right:0;font-size:13px;font-weight:700}.signature-print-meta{border:1px solid #000;grid-template-columns:repeat(3,minmax(0,1fr));font-size:10px;font-weight:700;display:grid}.signature-print-meta span{text-align:center;overflow-wrap:anywhere;border-right:1px solid #000;min-height:25px;padding:5px 6px}.signature-print-meta span:last-child{border-right:0}.signature-print-columns{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:14px;display:grid}.signature-print-form-table{table-layout:fixed;border-collapse:collapse;background:#fff;border:1px solid #000;width:100%}.signature-print-col-order{width:10%}.signature-print-col-name{width:21%}.signature-print-col-signature{width:50%}.signature-print-col-remark{width:19%}.signature-print-form-table th,.signature-print-form-table td{text-align:center;vertical-align:middle;color:#000;border:1px solid #000;overflow:hidden}.signature-print-form-table th{background:#fff8cc;height:32px;font-size:10px;font-weight:900}.signature-print-form-table td{height:39px;padding:2px 3px;font-size:8.8px;line-height:1.2}.signature-print-form-table td:nth-child(2) strong{font-weight:800;display:block}.signature-print-form-table td:nth-child(2) small{color:#444;margin-top:2px;font-size:7px;font-weight:700;display:block}.signature-print-form-table img{object-fit:contain;width:100%;height:35px;display:block}.signature-print-pending{color:#777;font-size:8.8px;font-weight:800}.signature-print-page footer{text-align:center;gap:2px;font-size:12px;font-weight:900;display:grid}.signature-print-page footer small{color:#000;font-size:10px;font-weight:900}@media (width<=720px){.signature-target-option-list{grid-template-columns:1fr;max-height:320px}}@media print{@page{size:A4 portrait;margin:12mm}body.signature-print-mode{background:#fff}body.signature-print-mode .screen{min-height:auto;padding:0}body.signature-print-mode .screen>:not(.signature-workbench),body.signature-print-mode .signature-workbench>:not(.signature-print-task-panel),body.signature-print-mode .signature-print-task-panel>:not(.signature-print-section),body.signature-print-mode .signature-print-section>:not(.print-signature-report){display:none!important}body.signature-print-mode .signature-workbench,body.signature-print-mode .signature-print-task-panel{display:block}body.signature-print-mode .signature-print-section{background:#fff;border:0;border-radius:0;padding:0;display:block}body.signature-print-mode .no-print{display:none!important}body.signature-print-mode .print-only{display:block!important}body.signature-print-mode .print-signature-report{margin:0;padding:0;display:block}body.signature-print-mode .signature-print-page{page-break-inside:avoid;break-inside:avoid;page-break-after:always;break-after:page;grid-template-rows:21mm 8mm 203mm 8mm;gap:0;width:186mm;max-width:186mm;overflow:hidden}body.signature-print-mode .signature-print-page:last-child{page-break-after:auto;break-after:auto}body.signature-print-mode .signature-print-form-table tr{page-break-inside:avoid;page-break-after:auto}body.signature-print-mode .signature-print-page-head h2{font-size:18px}body.signature-print-mode .signature-print-page-head{align-content:center;gap:2mm}body.signature-print-mode .signature-print-page-head span{font-size:12px}body.signature-print-mode .signature-print-meta{font-size:9px}body.signature-print-mode .signature-print-meta span{place-items:center;min-height:auto;padding:2mm 1.5mm;display:grid}body.signature-print-mode .signature-print-columns{height:203mm}body.signature-print-mode .signature-print-form-table{height:100%}body.signature-print-mode .signature-print-form-table th{height:11mm;font-size:10px}body.signature-print-mode .signature-print-form-table td{height:12.8mm;font-size:8.8px}body.signature-print-mode .signature-print-form-table img{height:10mm}body.signature-print-mode .signature-print-page footer{align-content:center}}.admin-tools{gap:16px;max-width:960px;display:grid}.admin-section-tabs{gap:var(--space-2);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.admin-section-tab{text-align:left;background:var(--color-surface);border:1px solid var(--color-border);min-height:72px;color:var(--color-text);justify-items:start;gap:4px;display:grid}.admin-section-tab span{color:var(--color-text-secondary);font-size:12px;font-weight:600;line-height:1.35}.admin-section-tab.active{border-color:var(--color-primary);background:var(--color-neutral-bg);color:var(--color-primary-strong)}.admin-section-hidden{display:none!important}.admin-panel{background:var(--panel-bg);border:var(--panel-border);border-radius:var(--panel-radius);padding:var(--panel-padding);gap:16px;display:grid}.admin-members-panel{order:1}.admin-sync-panel{order:2}.admin-operations-panel{order:3}.admin-system-dashboard{gap:var(--space-5);overflow:hidden}.dashboard-head{align-items:center}.dashboard-eyebrow{margin-bottom:var(--space-1);color:var(--accent-navy);letter-spacing:.08em;font-size:11px;font-weight:900;display:block}.dashboard-head-actions{gap:var(--space-3);align-items:center;display:flex}.dashboard-updated{color:var(--color-text-secondary);white-space:nowrap;font-size:12px;font-weight:700}.server-health-hero{gap:var(--space-4);padding:var(--space-5);border:1px solid var(--color-success-border);border-left:5px solid var(--color-success-text);border-radius:var(--radius-md);background:var(--color-success-bg);grid-template-columns:116px minmax(190px,.7fr) minmax(0,1.8fr);align-items:center;display:grid}.server-health-hero.watch{border-color:var(--color-border);border-left-color:var(--accent-navy);background:var(--color-neutral-bg)}.server-health-hero.warning{border-color:var(--color-pending-border);border-left-color:var(--color-pending-text);background:var(--color-pending-bg)}.server-health-hero.critical{border-color:var(--color-danger-border);border-left-color:var(--color-danger-text);background:var(--color-danger-bg)}.server-health-score{border:5px solid var(--color-success-text);border-radius:var(--radius-pill);background:var(--color-surface);align-content:center;justify-items:center;width:104px;height:104px;display:grid}.server-health-hero.watch .server-health-score{border-color:var(--accent-navy)}.server-health-hero.warning .server-health-score{border-color:var(--color-pending-text)}.server-health-hero.critical .server-health-score{border-color:var(--color-danger-text)}.server-health-score strong{color:var(--color-text);font-size:31px;line-height:1}.server-health-score span{margin-top:var(--space-1);color:var(--color-text-secondary);font-size:11px;font-weight:800}.server-health-summary{gap:var(--space-1);display:grid}.server-health-status{border-radius:var(--radius-pill);background:var(--color-success-text);color:var(--color-surface);justify-self:start;padding:4px 9px;font-size:11px;font-weight:900}.server-health-hero.watch .server-health-status{background:var(--accent-navy)}.server-health-hero.warning .server-health-status{background:var(--color-pending-text)}.server-health-hero.critical .server-health-status{background:var(--color-danger-text)}.server-health-summary h3{margin:var(--space-1) 0 0;color:var(--color-text);font-size:20px}.server-health-summary p{font-size:12px;line-height:1.5}.server-health-checks{gap:var(--space-2);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.server-health-checks article{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);gap:3px;min-width:0;padding:10px;display:grid}.server-health-checks article>div{align-items:center;gap:5px;min-width:0;display:flex}.health-check-dot{border-radius:var(--radius-pill);background:var(--color-success-text);flex:none;width:8px;height:8px}.server-health-checks article.watch .health-check-dot,.server-health-checks article.unknown .health-check-dot{background:var(--accent-navy)}.server-health-checks article.warning .health-check-dot{background:var(--color-pending-text)}.server-health-checks article.critical .health-check-dot{background:var(--color-danger-text)}.server-health-checks article strong{color:var(--color-text-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.server-health-checks article small{color:var(--color-text-secondary);margin-left:auto;font-size:9px;font-weight:800}.server-health-checks article b{color:var(--color-text);font-size:14px}.server-health-checks article p{text-overflow:ellipsis;white-space:nowrap;font-size:9px;line-height:1.35;overflow:hidden}.system-dashboard-grid{gap:var(--space-3);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.system-metric-card{gap:var(--space-2);min-height:132px;padding:var(--space-4);border:1px solid var(--color-border);border-top:3px solid var(--accent-navy);border-radius:var(--radius-md);background:var(--color-surface);display:grid}.system-metric-card.accent{background:var(--color-neutral-bg)}.system-metric-card.good{border-top-color:var(--color-success-text)}.system-metric-card.pending{border-top-color:var(--color-pending-border);background:var(--color-pending-bg)}.system-metric-card.danger{border-top-color:var(--color-danger-border);background:var(--color-danger-bg)}.system-metric-card>span{color:var(--color-text-secondary);font-size:12px;font-weight:800}.system-metric-card>strong{color:var(--color-text);font-size:27px;line-height:1.1}.system-metric-card>strong small{margin-left:var(--space-1);color:var(--color-text-secondary);font-size:12px}.system-metric-card>p{align-self:end;font-size:12px;line-height:1.45}.system-dashboard-columns{gap:var(--space-3);grid-template-columns:minmax(0,1.45fr) minmax(260px,1fr);display:grid}.system-dashboard-block{gap:var(--space-4);min-width:0;padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-soft);display:grid}.system-block-head>div{gap:var(--space-1);display:grid}.system-block-head strong{color:var(--color-text);font-size:14px}.system-block-head span{color:var(--color-text-secondary);font-size:12px}.activity-chart{gap:var(--space-2);grid-template-columns:repeat(7,minmax(38px,1fr));min-height:166px;display:grid}.activity-day{color:var(--color-text-secondary);grid-template-rows:96px auto auto auto;justify-items:center;gap:2px;font-size:11px;display:grid}.activity-bar-track{border-radius:var(--radius-pill);background:var(--color-border-soft);align-items:end;width:20px;height:96px;display:flex;overflow:hidden}.activity-bar{border-radius:var(--radius-pill);background:var(--accent-navy);width:100%}.activity-day strong{color:var(--color-text);font-size:12px}.activity-day small{color:var(--color-text-secondary);font-size:10px}.dashboard-status-list{gap:0;margin:0;display:grid}.dashboard-status-list>div{gap:var(--space-3);border-bottom:1px solid var(--color-border);justify-content:space-between;padding:10px 0;display:flex}.dashboard-status-list>div:last-child{border-bottom:0}.dashboard-status-list dt{color:var(--color-text-secondary);font-size:12px}.dashboard-status-list dd{color:var(--color-text);text-align:right;margin:0;font-size:12px;font-weight:800}.spark-worker-status-row dt{gap:var(--space-1);display:grid}.spark-worker-title{color:var(--color-text-secondary)}.spark-worker-status-row dt small{color:var(--color-text-secondary);font-size:11px;font-weight:600}.dashboard-status-list .danger dd{color:var(--color-danger-text)}.security-check-grid{gap:var(--space-2);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.security-check-grid>div{gap:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);align-items:center;padding:10px;display:flex}.security-check-grid>div>span{border-radius:var(--radius-pill);background:var(--color-success-bg);width:22px;height:22px;color:var(--color-success-text);place-items:center;font-weight:900;display:grid}.security-check-grid>div.pending>span{background:var(--color-pending-bg);color:var(--color-pending-text)}.security-check-grid>div.danger>span{background:var(--color-danger-bg);color:var(--color-danger-text)}.security-check-grid strong{color:var(--color-text);font-size:11px}.dashboard-measurement-notes{padding-top:var(--space-2);border-top:1px solid var(--color-border-soft)}.dashboard-measurement-notes summary{cursor:pointer;color:var(--color-text-secondary);font-size:12px;font-weight:800}.dashboard-measurement-notes ul{gap:var(--space-1);padding-left:var(--space-5);color:var(--color-text-secondary);margin-bottom:0;font-size:12px;line-height:1.5;display:grid}.admin-operations-panel>.admin-section-head{order:1}.admin-operations-panel>.operation-status-grid{order:2}.admin-operations-panel>.admin-summary-panel{order:3}.admin-operations-panel>.teacher-stats-foldout{order:4}.admin-operations-panel>.admin-storage-foldout{order:5}.admin-operations-panel>.operation-actions{order:6}.admin-operations-panel>.deploy-progress{order:7}.admin-operations-panel>.app-status-foldout{order:8}.admin-operations-panel>.backup-foldout{order:9}.admin-operations-panel>.notification-cleanup-foldout{order:10}.admin-operations-panel>.operational-cleanup-foldout{order:11}.admin-panel h2{margin-bottom:8px}.admin-panel p{color:var(--color-text-secondary);margin-bottom:0;line-height:1.6}.admin-section-head{justify-content:space-between;align-items:start;gap:12px;display:flex}.operation-status-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.operation-status-grid div{border:1px solid var(--color-border);background:var(--color-surface-soft);border-radius:var(--radius-sm);gap:5px;min-height:76px;padding:12px;display:grid}.operation-status-grid span,.backup-item span{color:var(--color-text-secondary);font-size:12px}.operation-status-grid strong,.backup-item strong{color:var(--color-text);overflow-wrap:anywhere;font-size:14px}.operation-actions{flex-wrap:wrap;gap:10px;display:flex}.admin-summary-panel,.admin-storage-panel{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fbfcff;gap:12px;padding:12px;display:grid}.admin-foldout{gap:0;display:grid}.admin-foldout>summary{min-height:var(--control-height-sm);cursor:pointer;justify-content:space-between;align-items:start;gap:12px;list-style:none;display:flex}.admin-foldout>summary::-webkit-details-marker{display:none}.admin-foldout>summary:after{border:1px solid var(--color-border);border-radius:var(--radius-pill);min-width:52px;color:var(--color-text);content:"열기";text-align:center;background:#fff;flex:none;align-self:center;padding:5px 10px;font-size:12px;font-weight:800}.admin-foldout[open]>summary:after{content:"접기"}.admin-foldout-heading{gap:4px;min-width:0;display:grid}.admin-foldout>summary>span:not(.admin-foldout-heading){align-self:center}.admin-foldout>summary strong{color:var(--color-text);font-size:14px}.admin-foldout>summary span{color:var(--color-text-secondary);font-size:12px;line-height:1.5}.admin-foldout-body{border-top:1px solid var(--color-border-soft);gap:12px;margin-top:12px;padding-top:12px;display:grid}.admin-foldout-body>button:first-child{justify-self:end}.admin-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.admin-summary-grid.compact{grid-template-columns:repeat(3,minmax(0,1fr))}.admin-summary-card{border:1px solid #dce3ee;border-top:3px solid var(--accent-navy);border-radius:var(--radius-sm);min-height:108px;box-shadow:var(--shadow-soft);background:#fff;gap:6px;padding:14px;display:grid}.admin-summary-card.pending{border-top-color:var(--color-warning)}.admin-summary-card.info{border-top-color:var(--accent-teal)}.admin-summary-card span{color:var(--color-text-secondary);font-size:12px;font-weight:700}.admin-summary-card strong{color:var(--color-text);font-size:24px;line-height:1.1}.admin-summary-card small{color:var(--color-text-secondary);font-size:12px;line-height:1.45}.admin-teacher-stats{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fbfcff;gap:10px;padding:12px;display:grid}.admin-teacher-stats-table{gap:6px;padding-bottom:2px;display:grid;overflow-x:auto}.admin-teacher-stats-row{border:1px solid var(--color-border-soft);border-radius:var(--radius-sm);background:#fff;grid-template-columns:minmax(132px,1.4fr) minmax(92px,.9fr) minmax(64px,.6fr) minmax(82px,.8fr) minmax(88px,.8fr) minmax(70px,.7fr) minmax(82px,.8fr) minmax(82px,.8fr) minmax(78px,.7fr);align-items:center;gap:8px;min-width:860px;padding:10px 12px;display:grid}.admin-teacher-stats-row.head{border-color:var(--color-border);color:#506176;background:#eef3f9;font-size:12px;font-weight:800}.admin-teacher-stats-row.inactive{opacity:.68}.admin-teacher-stats-row span{min-width:0;color:var(--color-text);gap:3px;font-size:13px;display:grid}.admin-teacher-stats-row strong,.admin-teacher-stats-row small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.admin-teacher-stats-row small{color:#6a7788;font-size:11px}.admin-ops-stats-table .admin-teacher-stats-row{grid-template-columns:minmax(150px,1.25fr) minmax(120px,.95fr) minmax(146px,1fr) minmax(112px,.85fr) minmax(104px,.8fr) minmax(102px,.8fr);min-width:760px}.notifier-session-table .admin-teacher-stats-row{grid-template-columns:minmax(150px,1.2fr) minmax(112px,.7fr) minmax(176px,1.15fr) minmax(154px,1fr) minmax(132px,.9fr);min-width:760px}.notifier-state{border-radius:var(--radius-pill);letter-spacing:0;justify-content:center;align-items:center;width:fit-content;min-width:50px;min-height:28px;padding:4px 12px;font-size:12px;font-weight:900;display:inline-flex}.notifier-state.on{border:1px solid var(--color-success-border);background:var(--color-success-bg);color:var(--color-success-text)}.notifier-state.off{border:1px solid var(--color-border);background:var(--color-neutral-bg);color:var(--color-neutral-text)}.admin-storage-paths{border-top:1px solid var(--color-border-soft);gap:8px;padding-top:10px;display:grid}.admin-storage-paths div{gap:4px;min-width:0;display:grid}.admin-storage-paths strong{color:var(--color-text);font-size:13px}.admin-storage-paths span{color:var(--color-text-secondary);overflow-wrap:anywhere;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:12px}.notification-cleanup-box{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-soft);gap:12px;padding:12px;display:grid}.notification-cleanup-grid{grid-template-columns:minmax(130px,160px) minmax(150px,180px) minmax(110px,140px) minmax(180px,1fr);gap:10px;display:grid}.notification-cleanup-preview{border-top:1px solid var(--color-border-soft);gap:10px;padding-top:12px;display:grid}.notification-cleanup-samples{gap:7px;display:grid}.notification-cleanup-samples article{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px;display:grid}.notification-cleanup-samples article>div{gap:3px;min-width:0;display:grid}.notification-cleanup-samples strong{overflow-wrap:anywhere;font-size:13px}.notification-cleanup-samples span{color:var(--color-text-secondary);font-size:12px}.notification-cleanup-confirm{grid-template-columns:minmax(160px,1fr) auto;align-items:end;gap:10px;display:grid}.production-reset-dialog{max-height:calc(100vh - (var(--space-7) * 2));overflow-y:auto}.production-reset-fields{gap:var(--space-3);display:grid}.production-reset-fields label{gap:var(--space-2);display:grid}.deploy-progress{background:#eff6ff;border:1px solid #bfdbfe;gap:12px;padding:14px;display:grid}.deploy-progress-failed{background:#fef2f2;border-color:#fecaca}.deploy-progress-done{background:#f0fdf4;border-color:#bbf7d0}.deploy-progress-head{justify-content:space-between;align-items:start;gap:12px;display:flex}.deploy-progress-head div{gap:4px;display:grid}.deploy-progress-head strong{color:var(--color-text)}.deploy-progress-head span,.deploy-progress-meta dt{color:var(--color-text-secondary);font-size:12px}.deploy-progress-track{background:var(--color-surface-soft);height:8px;overflow:hidden}.deploy-progress-track div{background:var(--color-primary);height:100%;transition:width .25s}.deploy-progress-done .deploy-progress-track div{background:#16a34a}.deploy-progress-failed .deploy-progress-track div{background:#dc2626}.deploy-progress-meta{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:0;display:grid}.deploy-progress-meta div{gap:3px;min-width:0;display:grid}.deploy-progress-meta dt,.deploy-progress-meta dd{margin:0}.deploy-progress-meta dd{color:var(--color-text);overflow-wrap:anywhere;font-size:13px;font-weight:700}.backup-list{gap:10px;display:grid}.app-status-admin{border:1px solid var(--color-border);background:var(--color-surface-soft);border-radius:var(--radius-sm);gap:12px;padding:14px;display:grid}.app-status-admin-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.app-status-admin-item{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:12px;display:grid}.app-status-admin-item.maintenance{background:#fff7ed;border-color:#f0b84b}.app-status-admin-item.preparing{opacity:.72}.app-status-admin-item>div{gap:4px;min-width:0;display:grid}.app-status-admin-item strong{color:var(--color-text);font-size:14px}.app-status-admin-item span:not(.app-status){color:var(--color-text-secondary);overflow-wrap:anywhere;font-size:12px}.app-status-toggle{justify-content:flex-end;min-width:92px}.backup-item{border:1px solid var(--color-border);background:var(--color-surface-soft);border-radius:var(--radius-sm);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:12px;display:grid}.backup-item div{gap:4px;display:grid}.teacher-create-form,.teacher-csv-form{border:1px solid var(--color-border);background:var(--color-surface-soft);border-radius:var(--radius-sm);gap:12px;padding:14px;display:grid}.school-data-import-steps{gap:var(--space-2);grid-template-columns:repeat(3,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.school-data-import-steps li{align-items:center;gap:var(--space-2);border:var(--panel-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-muted);padding:var(--space-2) var(--space-3);display:flex}.school-data-import-steps li.active,.school-data-import-steps li.done{border-color:var(--color-success-border);background:var(--color-success-bg);color:var(--color-success-text)}.school-data-import-steps strong{min-width:var(--space-5);min-height:var(--space-5);border-radius:var(--radius-pill);background:var(--color-neutral-bg);place-items:center;display:grid}.school-data-import-controls{gap:var(--space-2);grid-template-columns:minmax(12rem,1.5fr) minmax(9rem,1fr) minmax(14rem,2fr) minmax(12rem,1.3fr) auto auto;align-items:end;display:grid}.school-data-import-controls label,.school-data-preview-row>div{gap:var(--space-1);display:grid}.school-data-preview{gap:var(--space-3);display:grid}.school-data-credential-download{gap:var(--space-2) var(--space-3);border:1px solid var(--color-success-border);background:var(--color-success-bg);border-radius:var(--radius-sm);padding:var(--space-3);flex-wrap:wrap;align-items:center;display:flex}.school-data-credential-download span{color:var(--color-success-text);font-size:.75rem;line-height:1.5}.school-data-preview-list{gap:var(--space-1);max-height:32rem;display:grid;overflow:auto}.school-data-preview-row{gap:var(--space-2);border-bottom:1px solid var(--color-border-soft);padding:var(--space-2) 0;grid-template-columns:minmax(11rem,1.4fr) minmax(9rem,1fr) minmax(11rem,1fr) minmax(11rem,1fr);align-items:center;display:grid}.school-data-preview-row span{color:var(--color-text-secondary);font-size:.75rem}@media (width<=960px){.school-data-import-controls,.school-data-preview-row{grid-template-columns:1fr}}.teacher-create-head{justify-content:space-between;align-items:start;gap:12px;display:flex}.teacher-create-head>div{gap:4px;display:grid}.teacher-create-head strong{color:var(--color-text);font-size:14px}.teacher-create-head span{color:var(--color-text-secondary);font-size:12px;line-height:1.5}.teacher-create-grid{grid-template-columns:repeat(3,minmax(0,1fr));align-items:end;gap:10px;display:grid}.teacher-create-active{min-height:var(--control-height)}.teacher-duplicate-warning{border-radius:var(--radius-sm);background:#fff7ed;border:1px solid #f0b84b;gap:4px;padding:10px 12px;display:grid}.teacher-duplicate-warning strong,.teacher-duplicate-panel strong{color:#92400e;font-size:13px}.teacher-duplicate-warning span,.teacher-duplicate-panel span{color:var(--color-text-secondary);font-size:12px;line-height:1.5}.teacher-csv-actions,.teacher-bulk-toolbar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.teacher-directory-summary{grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;display:grid}.teacher-directory-summary div{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff;gap:5px;min-height:70px;padding:11px 12px;display:grid}.teacher-directory-summary span{color:var(--color-text-secondary);font-size:12px;font-weight:700}.teacher-directory-summary strong{color:var(--color-text);font-size:18px}.teacher-directory-filter{border:1px solid var(--color-border);background:var(--color-surface-soft);border-radius:var(--radius-sm);grid-template-columns:repeat(6,minmax(0,1fr));align-items:end;gap:8px;padding:12px;display:grid}.teacher-directory-filter .teacher-search{grid-column:1/-1}.teacher-directory-filter button{width:100%;min-width:0}.teacher-csv-preview{gap:10px;display:grid}.teacher-csv-summary{flex-wrap:wrap;gap:8px;display:flex}.teacher-csv-summary span{border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);background:#fff;padding:6px 9px;font-size:12px;font-weight:700}.teacher-csv-table{border:1px solid var(--color-border);background:#fff;display:grid;overflow-x:auto}.teacher-csv-row{border-bottom:1px solid #e8edf5;grid-template-columns:52px 64px minmax(90px,1fr) minmax(110px,1fr) 90px 70px minmax(180px,1.3fr);min-width:820px;display:grid}.teacher-csv-row:last-child{border-bottom:0}.teacher-csv-row span{color:var(--color-text);overflow-wrap:anywhere;padding:8px 10px;font-size:12px}.teacher-csv-row.head{background:var(--color-border-soft);font-weight:700}.teacher-csv-row.error{background:#fef2f2}.teacher-csv-row.create{background:#f0fdf4}.teacher-csv-row.update{background:#eff6ff}.teacher-duplicate-panel{border-radius:var(--radius-sm);background:#fff7ed;border:1px solid #f0b84b;gap:10px;padding:12px;display:grid}.teacher-duplicate-panel>div:first-child{gap:4px;display:grid}.teacher-duplicate-list{flex-wrap:wrap;gap:8px 14px;display:flex}.teacher-select-toggle{min-height:var(--control-height);border:1px solid var(--color-border);color:var(--color-text);border-radius:var(--radius-pill);background:#fff;padding:0 14px;font-size:13px;font-weight:800}.teacher-select-toggle:hover{border-color:var(--color-primary);background:var(--color-surface-soft)}.teacher-select-toggle.selected{border-color:var(--color-primary);background:var(--color-primary);color:#fff;box-shadow:none}.teacher-select-toggle.compact{align-self:center;width:76px;padding:0 8px}.teacher-select-toggle.wide{text-align:left;gap:2px;min-height:52px;display:grid}.teacher-select-toggle.wide span{color:inherit;opacity:.82;font-size:12px;font-weight:700}.teacher-bulk-toolbar{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff;justify-content:flex-start;padding:10px 12px}.teacher-search{flex:260px;min-width:min(100%,260px)}.teacher-bulk-toolbar>span{color:var(--color-text-secondary);margin-left:auto;font-size:12px;font-weight:700}.teacher-admin-list{gap:10px;display:grid}.teacher-admin-item{border:1px solid var(--color-border);background:var(--color-surface-soft);border-radius:var(--radius-sm);grid-template-columns:76px minmax(190px,1.2fr) minmax(150px,1fr) 150px 130px;align-items:end;gap:10px;padding:12px;display:grid}.teacher-admin-item.inactive{opacity:.62}.teacher-admin-item div{align-self:center;gap:4px;display:grid}.teacher-admin-item .teacher-identity{align-self:center;gap:6px}.teacher-admin-item strong{color:var(--color-text);font-size:14px}.teacher-admin-item span{color:var(--color-text-secondary);overflow-wrap:anywhere;font-size:12px}.teacher-meta-badges{flex-wrap:wrap;gap:5px;display:flex}.teacher-meta-badges span{border:1px solid var(--color-border);border-radius:var(--radius-pill);width:fit-content;color:var(--color-text);background:#fff;padding:3px 7px;font-size:11px;font-weight:800}.teacher-meta-badges .teacher-status-pill.active,.teacher-meta-badges .teacher-app-pill.enabled{color:#166534;background:#f0fdf4;border-color:#bbf7d0}.teacher-meta-badges .teacher-status-pill.inactive{color:#991b1b;background:#fef2f2;border-color:#fecaca}.teacher-admin-item input,.teacher-admin-item select{padding:9px 10px}.teacher-profile-editor{border-top:1px solid var(--color-border);grid-column:2/-1;grid-template-columns:repeat(4,minmax(140px,1fr)) auto;align-items:end;gap:10px;padding-top:10px}.teacher-profile-editor label{min-width:0}.teacher-profile-editor button{min-height:40px}.app-permission-picker{min-width:0;padding-top:var(--space-1);grid-column:2/-1;position:relative}.app-permission-picker.compact{grid-column:auto;padding-top:0}.app-permission-picker[open]{z-index:30}.app-permission-picker summary{gap:var(--space-2);min-height:var(--control-height);border:1px solid var(--color-border);background:var(--color-surface);border-radius:var(--radius-sm);padding:0 var(--space-3);cursor:pointer;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;list-style:none;display:grid}.app-permission-picker summary::-webkit-details-marker{display:none}.app-permission-picker summary:hover,.app-permission-picker[open] summary{border-color:var(--color-primary)}.app-permission-picker summary:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.app-permission-picker .app-permission-picker-label{color:var(--color-text);white-space:nowrap;font-size:13px;font-weight:800}.app-permission-picker .app-permission-picker-current{min-width:0;color:var(--color-text-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.app-permission-picker-menu{top:calc(100% + var(--space-1));gap:var(--space-2);border:1px solid var(--color-border);background:var(--color-surface);border-radius:var(--radius-sm);width:min(34rem,100%);max-height:20rem;box-shadow:var(--shadow-md);padding:var(--space-3);grid-template-columns:repeat(2,minmax(0,1fr));display:grid;position:absolute;left:0;overflow-y:auto}.teacher-admin-item .app-permission-picker-menu{align-self:auto;gap:var(--space-2)}.app-permission-picker-menu .inline-toggle{border-radius:var(--radius-sm);min-width:0;padding:var(--space-2)}.app-permission-picker-menu .inline-toggle:hover{background:var(--color-surface-soft)}.permission-guide{grid-template-columns:1fr 1fr;gap:10px;display:grid}.permission-guide div{border:1px solid var(--color-border);background:var(--color-surface-soft);border-radius:var(--radius-sm);gap:5px;padding:12px;display:grid}.permission-guide strong{color:var(--color-text);font-size:13px}.permission-guide span{color:var(--color-text-secondary);font-size:12px;line-height:1.5}.inline-toggle{align-self:center;align-items:center;gap:8px;display:flex}.inline-toggle input{width:18px;height:18px}.teacher-admin-actions{grid-column:2/-1;grid-template-columns:minmax(160px,1fr) auto auto;align-items:end;gap:8px;padding-top:4px;display:grid}.teacher-admin-actions .teacher-password-note{color:var(--color-text-secondary);font-size:12px;font-weight:600;line-height:1.4}@media (width<=860px){.admin-section-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-section-head,.teacher-create-head,.dashboard-head-actions{flex-direction:column;align-items:stretch}.system-dashboard-grid,.system-dashboard-columns{grid-template-columns:1fr}.server-health-hero{grid-template-columns:104px minmax(0,1fr)}.server-health-checks{grid-column:1/-1}.system-metric-card{min-height:112px}.teacher-directory-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.teacher-directory-filter,.teacher-create-grid,.admin-summary-grid,.admin-summary-grid.compact,.app-status-admin-list,.permission-guide{grid-template-columns:1fr}.app-status-admin-item{grid-template-columns:minmax(0,1fr)}.admin-teacher-stats-table{overflow-x:visible}.admin-teacher-stats-row,.admin-teacher-stats-row.head{grid-template-columns:repeat(2,minmax(0,1fr));min-width:0}.admin-teacher-stats-row.head{display:none}.notification-cleanup-grid,.notification-cleanup-confirm,.notification-cleanup-samples article{grid-template-columns:1fr}.app-status-toggle{justify-content:flex-start}.teacher-admin-item{grid-template-columns:76px minmax(0,1fr)}.teacher-admin-item>label:not(.inline-toggle),.teacher-admin-item>.inline-toggle,.teacher-profile-editor,.app-permission-picker,.teacher-admin-actions{grid-column:2/-1}.app-permission-picker-menu,.teacher-admin-actions,.teacher-profile-editor{grid-template-columns:1fr}.teacher-bulk-toolbar{justify-content:flex-start}.teacher-bulk-toolbar>span{margin-left:0}}@media (width<=520px){.server-health-hero{grid-template-columns:1fr;justify-items:center}.server-health-summary{text-align:center;justify-items:center}.server-health-checks{grid-column:auto;grid-template-columns:1fr 1fr;width:100%}.activity-chart{gap:var(--space-1);overflow-x:auto}.security-check-grid{grid-template-columns:1fr}}.activity-log{gap:16px;display:grid}.activity-toolbar{background:var(--panel-bg);border:var(--panel-border);border-radius:var(--panel-radius);padding:var(--panel-padding);grid-template-columns:minmax(0,1fr) minmax(160px,220px) minmax(150px,200px) auto;align-items:end;gap:12px;display:grid}.activity-toolbar h2{margin-bottom:6px}.activity-toolbar p{color:var(--color-text-secondary);margin:0;line-height:1.5}.activity-list{gap:10px;display:grid}.activity-item{border:1px solid var(--color-border);background:#fff;gap:0;display:grid;overflow:hidden}.activity-main{width:100%;color:var(--color-text);text-align:left;background:#fff;grid-template-columns:210px minmax(0,1fr) 180px;gap:12px;display:grid}.activity-main:hover{background:var(--color-surface-soft)}.activity-time,.activity-meta{color:var(--color-text-secondary);font-size:12px}.activity-message{overflow-wrap:anywhere;font-weight:700}.activity-details{color:#e5eefb;white-space:pre-wrap;background:#111827;max-height:320px;margin:0;padding:14px;font-size:12px;line-height:1.5;overflow:auto}.office-pet{gap:var(--space-4);--room-wall:color-mix(in srgb, var(--accent-amber) 45%, var(--color-surface));--room-wall-deep:color-mix(in srgb, var(--accent-amber) 70%, var(--color-surface));--room-floor:#e8d3b5;--room-floor-line:#dcc09b;--room-wood:#b98d5f;--room-wood-dark:#96693f;--sky-morning-a:#ffe9c9;--sky-morning-b:#bfe3f2;--sky-day-a:#bfe3f7;--sky-day-b:#e8f6ff;--sky-evening-a:#f7c8a0;--sky-evening-b:#d9a8c9;--sky-night-a:#2e3a5c;--sky-night-b:#52618c;--pet-eye:#3a3330;--pet-nose:#5a4636;--pet-blush:#f2a9a0;--pet-crown:#f2c14e;--pet-heart:#ef7d93;flex-direction:column;display:flex}.office-pet-species--cat-cream{--pet-fur:#f4dcb4;--pet-belly:#fbf1dd;--pet-ear:#eec0a6}.office-pet-species--cat-gray{--pet-fur:#b9c0cc;--pet-belly:#e7eaef;--pet-ear:#d9aab6}.office-pet-species--dog-golden{--pet-fur:#ecc078;--pet-belly:#f8e4bd;--pet-ear:#d0a054}.office-pet-species--dog-choco{--pet-fur:#8d6748;--pet-belly:#cbaa89;--pet-ear:#6f4e33}.office-pet-hero{justify-content:space-between;align-items:flex-end;gap:var(--space-4);flex-wrap:wrap;display:flex}.office-pet-eyebrow{color:var(--color-text-secondary);margin:0;font-size:12px}.office-pet-hero h2{margin:var(--space-1) 0}.office-pet-sub{color:var(--color-text-secondary);margin:0;font-size:14px}.office-pet-tabs{gap:var(--space-1);padding:var(--space-1);border:var(--panel-border);border-radius:var(--radius-pill);background:var(--color-surface);display:inline-flex}.office-pet-tab{border-radius:var(--radius-pill);padding:6px var(--space-4);height:var(--control-height-sm);color:var(--color-text-secondary);cursor:pointer;background:0 0;border:none;font-size:14px}.office-pet-tab--active{background:var(--color-primary);color:var(--color-surface)}.office-pet-notice{margin:0}.office-pet-layout{gap:var(--space-4);grid-template-columns:minmax(0,1.6fr) minmax(260px,1fr);align-items:start;display:grid}.office-pet-side{gap:var(--space-4);flex-direction:column;display:flex}.office-pet-scene-panel h3{margin:0}.office-pet-scene-head{justify-content:space-between;align-items:flex-start;gap:var(--space-3);margin-bottom:var(--space-3);display:flex}.office-pet-name{align-items:center;gap:var(--space-2);font-size:20px;display:flex}.office-pet-stage-chip{border-radius:var(--radius-pill);background:var(--color-surface-soft);border:1px solid var(--color-border-soft);color:var(--color-text-secondary);padding:3px 10px;font-size:12px;font-weight:600}.office-pet-mood-line{margin:var(--space-1) 0 0;color:var(--color-text-secondary);font-size:13px}.office-pet-streak{white-space:nowrap;border-radius:var(--radius-pill);background:color-mix(in srgb, var(--accent-blue) 55%, var(--color-surface));border:1px solid color-mix(in srgb, var(--accent-blue) 80%, var(--color-border));padding:6px 12px;font-size:13px;font-weight:700}.office-pet-room{border-radius:var(--radius-md);border:var(--panel-border);height:320px;position:relative;overflow:hidden}.office-pet-wall{background:linear-gradient(180deg, var(--room-wall) 0%, var(--room-wall-deep) 100%);position:absolute;inset:0 0 34%}.office-pet-floor{background:repeating-linear-gradient(90deg, transparent 0 72px, var(--room-floor-line) 72px 74px), linear-gradient(180deg, var(--room-floor) 0%, color-mix(in srgb, var(--room-floor) 82%, #000) 100%);position:absolute;inset:66% 0 0}.office-pet-window{border:8px solid var(--room-wood);width:190px;height:120px;box-shadow:var(--shadow-sm);border-radius:12px;position:absolute;top:18px;left:50%;overflow:hidden;transform:translate(-50%)}.office-pet-window-sky{position:absolute;inset:0}.office-pet-sky--morning{background:linear-gradient(180deg, var(--sky-morning-b), var(--sky-morning-a))}.office-pet-sky--day{background:linear-gradient(180deg, var(--sky-day-a), var(--sky-day-b))}.office-pet-sky--evening{background:linear-gradient(180deg, var(--sky-evening-b), var(--sky-evening-a))}.office-pet-sky--night{background:linear-gradient(180deg, var(--sky-night-a), var(--sky-night-b))}.office-pet-sun{background:#ffd985;border-radius:50%;width:30px;height:30px;position:absolute;top:14px;right:22px;box-shadow:0 0 0 8px #ffd98559}.office-pet-moon{width:26px;height:26px;box-shadow:-7px 3px 0 0 var(--sky-night-a) inset, 0 0 0 6px #f4f0dc33;background:#f4f0dc;border-radius:50%;position:absolute;top:12px;right:24px}.office-pet-cloud{border-radius:var(--radius-pill);background:#ffffffd9;width:44px;height:14px;animation:26s linear infinite office-pet-cloud-drift;position:absolute}.office-pet-cloud--one{top:24px;left:-46px}.office-pet-cloud--two{opacity:.7;width:30px;animation-duration:34s;animation-delay:-12s;top:58px;left:-46px}.office-pet-sky--night .office-pet-cloud{opacity:.25}@keyframes office-pet-cloud-drift{0%{transform:translate(0)}to{transform:translate(240px)}}.office-pet-window-bar{background:var(--room-wood);position:absolute}.office-pet-window-bar--v{width:6px;top:0;bottom:0;left:calc(50% - 3px)}.office-pet-window-bar--h{height:6px;top:calc(50% - 3px);left:0;right:0}.office-pet-curtain{background:linear-gradient(180deg, color-mix(in srgb, var(--accent-rose) 80%, #fff), color-mix(in srgb, var(--accent-rose) 55%, #fff));opacity:.92;width:34px;position:absolute;top:-4px;bottom:-4px}.office-pet-curtain--left{border-radius:0 40% 40% 0;left:-4px}.office-pet-curtain--right{border-radius:40% 0 0 40%;right:-4px}.office-pet-item{position:absolute}.office-pet-item--bookshelf{width:86px;bottom:34px;left:3%}.office-pet-item--lamp{width:58px;bottom:40px;right:4%}.office-pet-item--plant{width:54px;bottom:44px;left:17%}.office-pet-item--cushion{width:84px;bottom:16px;right:17%}.office-pet-item--ball{width:34px;bottom:8px;left:31%}.office-pet-item--picture{width:66px;top:26px;right:12%}.office-pet-rug{background:color-mix(in srgb, var(--accent-sky) 75%, var(--color-surface));border:4px solid color-mix(in srgb, var(--accent-sky) 90%, var(--color-text));opacity:.9;border-radius:50%;width:300px;height:56px;position:absolute;bottom:6px;left:50%;transform:translate(-50%)}.office-pet-wood{fill:var(--room-wood)}.office-pet-wood-dark{fill:var(--room-wood-dark)}.office-pet-book--a{fill:color-mix(in srgb, var(--accent-rose) 85%, #fff)}.office-pet-book--b{fill:color-mix(in srgb, var(--accent-blue) 90%, #fff)}.office-pet-book--c{fill:color-mix(in srgb, var(--accent-teal) 90%, #fff)}.office-pet-book--box{fill:color-mix(in srgb, var(--accent-amber) 90%, #fff)}.office-pet-leaf{fill:#7fae6c}.office-pet-leaf--dark{fill:#5d905a}.office-pet-stem{stroke:#5d905a;stroke-width:3px;fill:none}.office-pet-pot{fill:#c97f57}.office-pet-lamp-shade{fill:color-mix(in srgb, var(--accent-amber) 85%, #fff)}.office-pet-lamp-glow{fill:#ffdc8c66}.office-pet-lamp-glow-core{fill:#ffe9b0}.office-pet-frame-inner{fill:var(--sky-day-a)}.office-pet-frame-pet{fill:#f4dcb4}.office-pet-frame-heart{fill:var(--pet-heart)}.office-pet-frame-hill{fill:#a8cf8e}.office-pet-ball-base{fill:#fff}.office-pet-ball-stripe{fill:var(--pet-heart)}.office-pet-ball-line{stroke:#0000001f;stroke-width:2px}.office-pet-ball-roll{animation:7s ease-in-out infinite office-pet-ball-roll}@keyframes office-pet-ball-roll{0%,to{transform:translate(0)rotate(0)}50%{transform:translate(16px)rotate(150deg)}}.office-pet-cushion-base{fill:color-mix(in srgb, var(--accent-violet) 90%, #fff)}.office-pet-cushion-top{fill:color-mix(in srgb, var(--accent-violet) 60%, #fff)}.office-pet-sway{transform-box:fill-box;transform-origin:bottom;animation:5s ease-in-out infinite office-pet-sway}.office-pet-sway-late{transform-box:fill-box;transform-origin:bottom;animation:5s ease-in-out -2.4s infinite office-pet-sway}@keyframes office-pet-sway{0%,to{transform:rotate(0)}50%{transform:rotate(4deg)}}.office-pet-walker{z-index:3;position:absolute;bottom:0;left:50%;transform:translate(-50%)}.office-pet-walker--pacing{animation:26s ease-in-out infinite office-pet-pace}@keyframes office-pet-pace{0%{transform:translate(calc(-50% - 120px))}50%{transform:translate(calc(120px - 50%))}to{transform:translate(calc(-50% - 120px))}}.office-pet-facing{animation:26s step-end infinite office-pet-face}@keyframes office-pet-face{0%,49.9%{transform:scaleX(1)}50%,99.9%{transform:scaleX(-1)}to{transform:scaleX(1)}}.office-pet-walker--event-wander{animation:18s ease-in-out infinite office-pet-wander}.office-pet-walker--event-zoom{animation:3.4s cubic-bezier(.4,0,.2,1) office-pet-zoomies}.office-pet-walker--event-mischief{animation:3s ease-in-out office-pet-mischief-step}.office-pet-walker--event-cry,.office-pet-walker--event-curious,.office-pet-walker--event-nap,.office-pet-walker--event-look,.office-pet-walker--touch-beg,.office-pet-walker--touch-surprised{animation:none}.office-pet-walker--touch-dodge{animation:1.4s ease-in-out office-pet-dodge}.office-pet-walker--touch-spin{animation:1.3s ease-in-out office-pet-touch-spin-step}@keyframes office-pet-wander{0%{transform:translate(calc(-50% - 110px))}20%{transform:translate(calc(-50% - 34px))}38%{transform:translate(calc(74px - 50%))}58%{transform:translate(calc(16px - 50%))}78%{transform:translate(calc(126px - 50%))}to{transform:translate(calc(-50% - 110px))}}@keyframes office-pet-zoomies{0%{transform:translate(calc(-50% - 132px))}24%{transform:translate(calc(136px - 50%))}45%{transform:translate(calc(-50% - 54px))}68%{transform:translate(calc(110px - 50%))}to{transform:translate(calc(-50% - 10px))}}@keyframes office-pet-mischief-step{0%,to{transform:translate(calc(20px - 50%))}35%{transform:translate(calc(-50% - 95px))}65%{transform:translate(calc(-50% - 70px))}}@keyframes office-pet-dodge{0%,to{transform:translate(-50%)}35%{transform:translate(calc(104px - 50%))}70%{transform:translate(calc(76px - 50%))}}@keyframes office-pet-touch-spin-step{0%,to{transform:translate(-50%)}45%{transform:translate(calc(-50% - 16px))}}.office-pet-speech{z-index:5;border-radius:var(--radius-pill);border:1px solid var(--color-border);min-width:34px;color:var(--color-text);text-align:center;box-shadow:var(--shadow-sm);background:#ffffffeb;padding:5px 10px;font-size:13px;font-weight:800;line-height:1.2;animation:1.7s both office-pet-speech-pop;position:absolute;bottom:138px;left:calc(50% + 70px)}.office-pet-speech:after{content:"";border-right:1px solid var(--color-border);border-bottom:1px solid var(--color-border);background:inherit;width:9px;height:9px;position:absolute;bottom:-5px;left:10px;transform:rotate(45deg)}.office-pet-speech--cry{left:calc(50% + 58px)}.office-pet-speech--curious,.office-pet-speech--look{left:calc(50% + 76px)}.office-pet-speech--nap{opacity:.9;left:calc(50% + 54px)}.office-pet-speech--touch{bottom:150px;left:calc(50% + 84px)}@keyframes office-pet-speech-pop{0%{opacity:0;transform:translateY(8px)scale(.9)}18%{opacity:1;transform:translateY(0)scale(1)}82%{opacity:1}to{opacity:0;transform:translateY(-6px)scale(.98)}}.office-pet-event-props{z-index:2;pointer-events:none;position:absolute}.office-pet-event-props--mischief{width:112px;height:58px;bottom:24px;left:calc(50% - 134px)}.office-pet-event-props--mischief span{border:1px solid var(--color-border);border-radius:var(--radius-xs);background:color-mix(in srgb, var(--accent-amber) 28%, var(--color-surface));width:32px;height:22px;box-shadow:var(--shadow-sm);animation:2.5s both office-pet-paper-scatter;position:absolute}.office-pet-event-props--mischief span:first-child{bottom:4px;left:4px;transform:rotate(-18deg)}.office-pet-event-props--mischief span:nth-child(2){animation-delay:.12s;bottom:20px;left:36px;transform:rotate(12deg)}.office-pet-event-props--mischief span:nth-child(3){animation-delay:.2s;bottom:8px;left:68px;transform:rotate(25deg)}@keyframes office-pet-paper-scatter{0%{opacity:0;transform:translateY(-8px)rotate(0)}20%,to{opacity:1}}.office-pet-figure{cursor:pointer;background:0 0;border:none;padding:0;line-height:0;display:inline-block;position:relative}.office-pet-figure:focus-visible{outline:2px solid var(--color-primary);outline-offset:4px;border-radius:var(--radius-md)}.office-pet-svg,.office-pet-egg-svg{display:block}.office-pet-figure--egg{cursor:default;width:88px}.office-pet-figure--baby .office-pet-svg{width:96px}.office-pet-figure--junior .office-pet-svg{width:124px}.office-pet-figure--adult .office-pet-svg{width:152px}.office-pet-figure--egg svg{width:100%}.office-pet-fur{fill:var(--pet-fur)}.office-pet-belly{fill:var(--pet-belly)}.office-pet-ear-inner,.office-pet-ear-dog{fill:var(--pet-ear)}.office-pet-shadow{fill:#3c2d1e29}.office-pet-eye{fill:var(--pet-eye)}.office-pet-eye-shine{fill:#fff}.office-pet-eye-closed{stroke:var(--pet-eye);stroke-width:2.4px;fill:none;stroke-linecap:round}.office-pet-eyes--mischief .office-pet-eye{transform-box:fill-box;transform-origin:50%;transform:skew(-8deg)}.office-pet-eyes--curious{animation:1.7s ease-in-out infinite office-pet-eye-look}.office-pet-eyes--shy{opacity:.9}.office-pet-muzzle{fill:var(--pet-belly)}.office-pet-nose{fill:var(--pet-nose)}.office-pet-mouth{stroke:var(--pet-nose);stroke-width:2.4px;fill:none;stroke-linecap:round}.office-pet-mouth-open{fill:var(--pet-nose);stroke:none}.office-pet-tongue{fill:var(--pet-heart);stroke:none}.office-pet-blush ellipse{fill:var(--pet-blush);opacity:.7}.office-pet-tears path{fill:#79b8e8;opacity:.85;animation:1.3s ease-in-out infinite office-pet-tear-drop}.office-pet-tears path:nth-child(2){animation-delay:.24s}.office-pet-mischief-mark path{fill:var(--pet-crown);stroke:color-mix(in srgb, var(--pet-crown) 70%, #000);stroke-width:1px}.office-pet-curious-mark text,.office-pet-alert text{fill:var(--color-text-secondary);font-size:26px;font-weight:900}.office-pet-alert text{fill:var(--pet-heart);animation:.9s ease-in-out infinite office-pet-alert-pop}.office-pet-whiskers path{stroke:color-mix(in srgb, var(--pet-nose) 55%, transparent);stroke-width:1.6px;stroke-linecap:round}.office-pet-tail{stroke:var(--pet-fur);stroke-width:13px;fill:none;stroke-linecap:round;transform-box:fill-box;transform-origin:8% 92%;animation:2.6s ease-in-out infinite office-pet-tail-wag}.office-pet-tail--dog{stroke-width:14px;animation-duration:1.1s}@keyframes office-pet-tail-wag{0%,to{transform:rotate(0)}50%{transform:rotate(10deg)}}.office-pet-crown polygon,.office-pet-crown circle{fill:var(--pet-crown);stroke:color-mix(in srgb, var(--pet-crown) 70%, #000);stroke-width:1px}.office-pet-head{transform-box:fill-box;transform-origin:bottom;animation:6s ease-in-out infinite office-pet-head-tilt}@keyframes office-pet-head-tilt{0%,to{transform:rotate(0)}30%{transform:rotate(-2deg)}65%{transform:rotate(2deg)}}.office-pet-blink{transform-box:fill-box;transform-origin:50%;animation:4.4s ease-in-out infinite office-pet-blink}@keyframes office-pet-blink{0%,91%,to{transform:scaleY(1)}94%{transform:scaleY(.08)}97%{transform:scaleY(1)}}.office-pet-jump{transform-box:fill-box;transform-origin:bottom;animation:3.4s ease-in-out infinite office-pet-idle-bob}@keyframes office-pet-idle-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.office-pet-mood--sleepy .office-pet-jump,.office-pet-mood--sleepy .office-pet-head{animation:none}.office-pet-figure--cheer .office-pet-jump{animation:.6s ease-in-out 2 office-pet-cheer-jump}.office-pet-expression--beg .office-pet-jump{animation:.8s ease-in-out infinite office-pet-beg-bounce}.office-pet-expression--cry .office-pet-jump{animation:.22s ease-in-out infinite office-pet-cry-tremble}.office-pet-expression--mischief .office-pet-head{animation:.9s ease-in-out infinite office-pet-mischief-nod}.office-pet-expression--curious .office-pet-head{animation:1.4s ease-in-out infinite office-pet-curious-tilt}.office-pet-expression--nap .office-pet-jump{animation:2.4s ease-in-out infinite office-pet-nap-breathe}.office-pet-touch--spin .office-pet-jump{animation:.95s ease-in-out office-pet-spin-reaction}@keyframes office-pet-cheer-jump{0%,to{transform:translateY(0)scale(1)}30%{transform:translateY(2px)scale(1.06,.92)}60%{transform:translateY(-16px)scale(.96,1.05)}}@keyframes office-pet-beg-bounce{0%,to{transform:translateY(0)scale(1)}50%{transform:translateY(-9px)scale(1.03)}}@keyframes office-pet-cry-tremble{0%,to{transform:translate(0)}50%{transform:translate(1.5px)}}@keyframes office-pet-mischief-nod{0%,to{transform:rotate(-2deg)}50%{transform:rotate(5deg)}}@keyframes office-pet-curious-tilt{0%,to{transform:rotate(-7deg)}50%{transform:rotate(4deg)}}@keyframes office-pet-nap-breathe{0%,to{transform:translateY(0)scale(1)}50%{transform:translateY(2px)scale(1.015,.985)}}@keyframes office-pet-spin-reaction{0%{transform:rotate(0)translateY(0)}50%{transform:rotate(12deg)translateY(-10px)}to{transform:rotate(0)translateY(0)}}@keyframes office-pet-eye-look{0%,to{transform:translate(0)}45%{transform:translate(2px)}70%{transform:translate(-2px)}}@keyframes office-pet-tear-drop{0%,to{opacity:.25;transform:translateY(0)}45%{opacity:1;transform:translateY(5px)}}@keyframes office-pet-alert-pop{0%,to{opacity:.65;transform:translateY(0)scale(1)}40%{opacity:1;transform:translateY(-4px)scale(1.12)}}.office-pet-zzz text{fill:var(--color-text-secondary);font-size:15px;font-weight:700;animation:2.8s ease-in-out infinite office-pet-zzz-rise}.office-pet-zzz text:nth-child(2){font-size:18px;animation-delay:.5s}.office-pet-zzz text:nth-child(3){font-size:21px;animation-delay:1s}@keyframes office-pet-zzz-rise{0%,to{opacity:.25;transform:translateY(0)}50%{opacity:1;transform:translateY(-4px)}}.office-pet-hearts{pointer-events:none;position:absolute;inset:0}.office-pet-heart{color:var(--pet-heart);opacity:0;font-size:18px;position:absolute;bottom:60%;left:50%}.office-pet-figure--cheer .office-pet-heart{animation:1.2s ease-out forwards office-pet-heart-pop}.office-pet-figure--cheer .office-pet-heart:first-child{animation-delay:0s}.office-pet-figure--cheer .office-pet-heart:nth-child(2){font-size:14px;animation-delay:.15s}.office-pet-figure--cheer .office-pet-heart:nth-child(3){font-size:22px;animation-delay:.3s}@keyframes office-pet-heart-pop{0%{opacity:0;transform:translate(-50%)scale(.5)}25%{opacity:1}to{opacity:0;transform:translate(calc(18px - 50%),-46px)scale(1.1)}}.office-pet-figure--cheer .office-pet-heart:nth-child(2){animation-name:office-pet-heart-pop-left}@keyframes office-pet-heart-pop-left{0%{opacity:0;transform:translate(-50%)scale(.5)}25%{opacity:1}to{opacity:0;transform:translate(calc(-50% - 22px),-40px)scale(1)}}.office-pet-egg-shell{fill:#fdf6ec;stroke:#ead9c2;stroke-width:2px}.office-pet-egg-shine{fill:#ffffffbf}.office-pet-egg-wobble{transform-box:fill-box;transform-origin:bottom;animation:3.2s ease-in-out infinite office-pet-egg-wobble}@keyframes office-pet-egg-wobble{0%,to{transform:rotate(0)}20%{transform:rotate(-4deg)}40%{transform:rotate(3deg)}55%{transform:rotate(0)}}.office-pet-egg-pattern--cat-cream circle{fill:#eec89a}.office-pet-egg-pattern--cat-gray circle{fill:#aeb7c6}.office-pet-egg-pattern--dog-golden path{stroke:#e0aa54}.office-pet-egg-pattern--dog-golden circle{fill:#e0aa54}.office-pet-egg-pattern--dog-choco path{stroke:#8d6748}.office-pet-egg-pattern--dog-choco circle{fill:#8d6748}.office-pet-adopt h3{margin:0 0 var(--space-1)}.office-pet-adopt-hint{margin:0 0 var(--space-4);color:var(--color-text-secondary);font-size:14px}.office-pet-egg-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(130px,1fr));display:grid}.office-pet-egg-card{align-items:center;gap:var(--space-1);padding:var(--space-4);border:var(--panel-border);border-radius:var(--radius-md);background:var(--color-surface);cursor:pointer;color:var(--color-text-secondary);flex-direction:column;font-size:13px;display:flex}.office-pet-egg-card strong{color:var(--color-text);font-size:14px}.office-pet-egg-card--selected{border-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary)}.office-pet-adopt-form{margin-top:var(--space-4)}.office-pet-adopt-form label{margin-bottom:var(--space-1);color:var(--color-text-secondary);font-size:13px;display:block}.office-pet-adopt-row{gap:var(--space-2);align-items:center;max-width:420px;display:flex}.office-pet-adopt-row .clearable-field{flex:1}.office-pet-refresh-button{min-height:var(--control-height-sm);padding:0 var(--space-4);font-size:13px}.office-pet-care-row{align-items:center;gap:var(--space-3);margin-top:var(--space-3);flex-wrap:wrap;display:flex}.office-pet-care-button{flex-shrink:0}.office-pet-care-note{color:var(--color-text-secondary);font-size:13px}.office-pet-level-card h4,.office-pet-week-card h4,.office-pet-rank-card h4{margin:0 0 var(--space-2);font-size:14px}.office-pet-title-label{margin:0 0 var(--space-1);color:var(--color-text-secondary);letter-spacing:.04em;font-size:13px;font-weight:700}.office-pet-level-row{justify-content:space-between;align-items:baseline;gap:var(--space-2);margin-bottom:var(--space-2);display:flex}.office-pet-level-row strong{font-size:24px}.office-pet-level-row span{color:var(--color-text-secondary);font-size:12px}.office-pet-progress{border-radius:var(--radius-pill);background:var(--color-surface-soft);border:1px solid var(--color-border-soft);height:10px;overflow:hidden}.office-pet-progress span{border-radius:var(--radius-pill);background:linear-gradient(90deg, color-mix(in srgb, var(--accent-teal) 80%, var(--color-text)), var(--accent-teal));height:100%;transition:width .6s;display:block}.office-pet-week-card ul{padding-left:var(--space-4);color:var(--color-text-secondary);gap:var(--space-1);margin:0;font-size:13px;display:grid}.office-pet-my-rank{margin:0 0 var(--space-2);font-size:14px}.office-pet-my-rank strong{font-size:22px}.office-pet-my-rank span{color:var(--color-text-secondary);font-size:12px}.office-pet-top-list{gap:var(--space-1);margin:0;padding:0;list-style:none;display:grid}.office-pet-top-list li{align-items:center;gap:var(--space-2);font-size:13px;display:flex}.office-pet-rank-no{background:var(--color-surface-soft);border:1px solid var(--color-border-soft);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:22px;height:22px;font-size:11px;font-weight:700;display:inline-flex}.office-pet-top-list li:first-child .office-pet-rank-no{background:var(--pet-crown);border-color:color-mix(in srgb, var(--pet-crown) 70%, #000)}.office-pet-rank-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.office-pet-rank-level{color:var(--color-text-secondary);font-size:12px}.office-pet-badges-panel h3,.office-pet-collection-panel h3{margin:0 0 var(--space-3);align-items:center;gap:var(--space-2);font-size:16px;display:flex}.office-pet-count-chip{color:var(--color-text-secondary);background:var(--color-surface-soft);border:1px solid var(--color-border-soft);border-radius:var(--radius-pill);padding:2px 10px;font-size:12px;font-weight:600}.office-pet-badge-grid,.office-pet-unlock-grid{gap:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(170px,1fr));display:grid}.office-pet-badge,.office-pet-unlock{border:1px solid var(--color-border-soft);border-radius:var(--radius-md);padding:var(--space-3);font-size:12px}.office-pet-badge strong,.office-pet-unlock strong{margin:var(--space-1) 0 2px;font-size:13px;display:block}.office-pet-badge p,.office-pet-unlock p{color:var(--color-text-secondary);margin:0}.office-pet-badge--earned{background:color-mix(in srgb, var(--accent-amber) 30%, var(--color-surface));border-color:color-mix(in srgb, var(--accent-amber) 80%, var(--color-border))}.office-pet-badge--locked,.office-pet-unlock--locked{opacity:.55;background:var(--color-surface-soft)}.office-pet-unlock--open{background:color-mix(in srgb, var(--accent-teal) 25%, var(--color-surface));border-color:color-mix(in srgb, var(--accent-teal) 70%, var(--color-border))}.office-pet-badge-medal{font-size:18px;line-height:1}.office-pet-collection-hint{margin:0 0 var(--space-3);color:var(--color-text-secondary);font-size:13px}.office-pet-rules summary{cursor:pointer;font-size:14px;font-weight:600}.office-pet-rule-grid{margin-top:var(--space-3);gap:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.office-pet-rule{gap:var(--space-2);align-items:flex-start;font-size:12px;display:flex}.office-pet-rule strong{font-size:13px}.office-pet-rule p{color:var(--color-text-secondary);margin:2px 0 0}.office-pet-rule-points{border-radius:var(--radius-pill);background:var(--color-surface-soft);border:1px solid var(--color-border-soft);flex-shrink:0;padding:3px 8px;font-size:13px;font-weight:700}.office-pet-overview-head{margin-bottom:var(--space-3);justify-content:space-between;align-items:center;display:flex}.office-pet-overview-head h3{margin:0}.office-pet-stats{gap:var(--space-2);margin-bottom:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(140px,1fr));display:grid}.office-pet-stat{border:1px solid var(--color-border-soft);border-radius:var(--radius-md);padding:var(--space-3);flex-direction:column;gap:2px;display:flex}.office-pet-stat span{color:var(--color-text-secondary);font-size:12px}.office-pet-stat strong{font-size:18px}.office-pet-teacher-list{gap:var(--space-2);margin:0;padding:0;list-style:none;display:grid}.office-pet-teacher-row{align-items:center;gap:var(--space-3);border:1px solid var(--color-border-soft);border-radius:var(--radius-md);padding:var(--space-3);display:flex}.office-pet-teacher-main{gap:var(--space-1);flex:1;min-width:0;display:grid}.office-pet-teacher-main strong{font-size:14px}.office-pet-teacher-main>span{color:var(--color-text-secondary);font-size:12px}.office-pet-teacher-stage{font-size:20px}.office-pet-celebrate-backdrop{z-index:60;padding:var(--space-4);background:#11111173;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.office-pet-celebrate{background:var(--color-surface);border-radius:var(--radius-lg);padding:var(--space-6);text-align:center;width:min(380px,100%);box-shadow:var(--shadow-lg);animation:.35s office-pet-celebrate-in;position:relative}@keyframes office-pet-celebrate-in{0%{opacity:0;transform:translateY(14px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}.office-pet-celebrate h3{margin:0 0 var(--space-2)}.office-pet-care-event{margin-bottom:var(--space-3);padding:var(--space-3);border:1px solid var(--color-border-soft);border-radius:var(--radius-md);background:var(--color-surface-soft)}.office-pet-care-event--cozy{background:color-mix(in srgb, var(--accent-amber) 22%, var(--color-surface))}.office-pet-care-event--curious{background:color-mix(in srgb, var(--accent-sky) 24%, var(--color-surface))}.office-pet-care-event--playful{background:color-mix(in srgb, var(--accent-rose) 22%, var(--color-surface))}.office-pet-care-event--milestone{border-color:var(--color-pending-border);background:var(--color-pending-bg)}.office-pet-care-event-label{margin:0 0 var(--space-1);color:var(--color-text-secondary);font-size:12px;font-weight:700}.office-pet-care-event-icon{margin-bottom:var(--space-1);font-size:34px;animation:.55s both office-pet-event-pop;display:inline-block}.office-pet-care-event-description{color:var(--color-text-secondary);margin:0;font-size:13px}@keyframes office-pet-event-pop{0%{opacity:0;transform:scale(.65)rotate(-8deg)}70%{opacity:1;transform:scale(1.1)rotate(4deg)}to{opacity:1;transform:scale(1)rotate(0)}}.office-pet-celebrate-points{margin:0;font-size:30px;font-weight:800}.office-pet-celebrate-streak{margin:var(--space-1) 0 var(--space-4);color:var(--color-text-secondary);font-size:13px}.office-pet-celebrate-burst{pointer-events:none;border-radius:var(--radius-lg);position:absolute;inset:0;overflow:hidden}.office-pet-celebrate-burst span{color:var(--pet-crown);font-size:16px;animation:1.1s ease-out forwards office-pet-burst;position:absolute;top:18%;left:50%}.office-pet-celebrate-burst span:first-child{--burst-x:-110px;--burst-y:-40px;animation-delay:50ms}.office-pet-celebrate-burst span:nth-child(2){--burst-x:-50px;--burst-y:-70px;animation-delay:.12s}.office-pet-celebrate-burst span:nth-child(3){--burst-x:0px;--burst-y:-84px}.office-pet-celebrate-burst span:nth-child(4){--burst-x:55px;--burst-y:-66px;animation-delay:.1s}.office-pet-celebrate-burst span:nth-child(5){--burst-x:112px;--burst-y:-36px;animation-delay:.16s}@keyframes office-pet-burst{0%{opacity:0;transform:translate(0)scale(.4)}30%{opacity:1}to{opacity:0;transform:translate(var(--burst-x), var(--burst-y)) scale(1.2)}}.office-pet-celebrate-awards{text-align:left;margin-bottom:var(--space-4)}.office-pet-celebrate-awards h4{margin:0 0 var(--space-2);color:var(--color-text-secondary);font-size:13px}.office-pet-award-pop{gap:var(--space-2);padding:var(--space-2);border-radius:var(--radius-md);background:color-mix(in srgb, var(--accent-amber) 30%, var(--color-surface));border:1px solid color-mix(in srgb, var(--accent-amber) 80%, var(--color-border));margin-bottom:var(--space-1);align-items:flex-start;font-size:12px;animation:.45s both office-pet-award-in;display:flex}.office-pet-award-pop:nth-child(2){animation-delay:.12s}.office-pet-award-pop:nth-child(3){animation-delay:.24s}.office-pet-award-pop strong{font-size:13px}.office-pet-award-pop p{color:var(--color-text-secondary);margin:2px 0 0}@keyframes office-pet-award-in{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}@media (width<=980px){.office-pet-layout{grid-template-columns:1fr}}@media (width<=680px){.office-pet-room{height:260px}.office-pet-item--bookshelf{width:64px}.office-pet-item--lamp{width:44px}.office-pet-rug{width:220px}@keyframes office-pet-pace{0%{transform:translate(calc(-50% - 64px))}50%{transform:translate(calc(64px - 50%))}to{transform:translate(calc(-50% - 64px))}}@keyframes office-pet-wander{0%{transform:translate(calc(-50% - 68px))}28%{transform:translate(calc(-50% - 12px))}52%{transform:translate(calc(62px - 50%))}76%{transform:translate(calc(18px - 50%))}to{transform:translate(calc(-50% - 68px))}}@keyframes office-pet-zoomies{0%{transform:translate(calc(-50% - 72px))}28%{transform:translate(calc(76px - 50%))}52%{transform:translate(calc(-50% - 28px))}78%{transform:translate(calc(58px - 50%))}to{transform:translate(calc(-50% - 6px))}}.office-pet-figure--adult .office-pet-svg{width:124px}.office-pet-figure--junior .office-pet-svg{width:104px}}@media (prefers-reduced-motion:reduce){.office-pet-walker--pacing,.office-pet-facing,.office-pet-jump,.office-pet-head,.office-pet-blink,.office-pet-tail,.office-pet-egg-wobble,.office-pet-cloud,.office-pet-ball-roll,.office-pet-sway,.office-pet-sway-late,.office-pet-speech,.office-pet-event-props--mischief span,.office-pet-eyes--curious,.office-pet-tears path,.office-pet-alert text,.office-pet-zzz text,.office-pet-celebrate,.office-pet-celebrate-burst span,.office-pet-care-event-icon,.office-pet-award-pop{animation:none!important}}.typing-challenge{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:16px;display:grid}.typing-game-panel,.typing-side-panel{border:var(--panel-border);border-radius:var(--panel-radius);background:var(--panel-bg);padding:var(--panel-padding);gap:16px;display:grid}.typing-head{justify-content:space-between;align-items:start;gap:12px;display:flex}.typing-head h2{margin-bottom:6px}.typing-head p{color:var(--color-text-secondary);margin:0}.typing-timer{background:var(--color-text);color:#fff;border:1px solid #c9d4e5;place-items:center;width:64px;height:64px;font-size:24px;font-weight:800;display:grid}.typing-stage-badge{background:var(--color-text);color:#fff;border:1px solid #c9d4e5;place-items:center;min-width:104px;height:44px;font-weight:900;display:grid}.typing-stat-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.typing-stat-grid div{border:1px solid var(--color-border);background:var(--color-surface-soft);border-radius:var(--radius-sm);gap:5px;padding:12px;display:grid}.typing-stat-grid span,.typing-rank-list small,.typing-my-scores span{color:var(--color-text-secondary);font-size:12px}.typing-stat-grid strong{color:var(--color-text);font-size:20px}.typing-prompt{background:var(--color-surface-soft);min-height:110px;color:var(--color-text);word-break:keep-all;overflow-wrap:anywhere;border:1px solid #c9d4e5;padding:18px;font-size:20px;line-height:1.8}.typing-input{resize:vertical;min-height:150px;color:var(--color-text);font:inherit;border:1px solid #c9d4e5;border-radius:6px;padding:14px;font-size:18px;line-height:1.7}.typing-input:disabled{color:#697789;background:#eef2f7}.typing-arena{background:radial-gradient(at 50% 0,#3861fb59,#080c1800 60%),linear-gradient(#0a0f1f 0%,#0d1426 55%,#050810 100%);border:1px solid #0b1220;border-radius:10px;height:440px;position:relative;overflow:hidden;box-shadow:inset 0 0 60px #0000008c}.typing-arena.active{background:radial-gradient(at 50% 0,#3861fb80,#080c1800 60%),linear-gradient(#0a0f1f 0%,#0d1426 55%,#050810 100%)}.typing-starfield{z-index:0;opacity:.9;pointer-events:none;background-image:radial-gradient(1.5px 1.5px at 10% 20%,#ffffffd9,#0000),radial-gradient(1px 1px at 25% 65%,#fff9,#0000),radial-gradient(2px 2px at 40% 15%,#ffffffe6,#0000),radial-gradient(1px 1px at 55% 80%,#ffffff80,#0000),radial-gradient(1.5px 1.5px at 70% 35%,#fffc,#0000),radial-gradient(1px 1px at 85% 60%,#ffffff8c,#0000),radial-gradient(2px 2px at 95% 10%,#ffffffe6,#0000),radial-gradient(1px 1px at 15% 90%,#ffffff80,#0000),radial-gradient(1.5px 1.5px at 60%,#ffffffb3,#0000);background-repeat:repeat;background-size:100% 100%;animation:9s linear infinite starfield-drift;position:absolute;inset:-20% -10%}.falling-word{z-index:2;min-width:64px;filter:drop-shadow(0 0 6px var(--word-glow,#38bdf88c));position:absolute;transform:translate(-50%)}.falling-word .word-label{clip-path:polygon(10% 0%,90% 0%,100% 50%,90% 100%,10% 100%,0% 50%);background:linear-gradient(180deg, var(--word-fill,#1d3a8f), var(--word-fill-dark,#0d1a44));border:1px solid var(--word-border,#60a5fa);color:var(--color-surface-soft);text-align:center;letter-spacing:.2px;padding:8px 14px;font-size:15px;font-weight:900;animation:1.4s ease-in-out infinite word-bob;display:block}.falling-word.phrase-word{min-width:148px;max-width:min(260px,72vw)}.falling-word.phrase-word .word-label{clip-path:polygon(6% 0%,94% 0%,100% 50%,94% 100%,6% 100%,0% 50%);white-space:normal;padding:9px 18px;font-size:14px;line-height:1.2}.word-tier-1{--word-fill:#1d3a8f;--word-fill-dark:#0d1a44;--word-border:#60a5fa;--word-glow:#60a5fa99}.word-tier-2{--word-fill:#166347;--word-fill-dark:#0a3024;--word-border:#34d399;--word-glow:#34d39999}.word-tier-3{--word-fill:#7c2d12;--word-fill-dark:#3a1106;--word-border:#fb923c;--word-glow:#fb923c99}.word-tier-4{--word-fill:#6b21a8;--word-fill-dark:#2e0a4d;--word-border:#e879f9;--word-glow:#e879f999}.typing-base{z-index:2;background:linear-gradient(#2b3650,#0e1320);border:1px solid #4c5b7c;border-radius:6px 6px 2px 2px;width:84px;height:30px;position:absolute;bottom:12px;left:50%;transform:translate(-50%);box-shadow:0 0 18px #3861fb59,inset 0 1px #ffffff14}.typing-base:before{content:"";background:linear-gradient(#5b7bff,#1c2c7a);border:1px solid #8fa6ff;border-radius:4px 4px 0 0;width:24px;height:38px;position:absolute;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 0 14px #5b7bffa6}.typing-base-core{background:radial-gradient(circle,#fff7ed,#fb923c 60%,#0000 100%);border-radius:999px;width:10px;height:10px;animation:1.6s ease-in-out infinite turret-pulse;position:absolute;bottom:9px;left:50%;transform:translate(-50%);box-shadow:0 0 10px #fb923ce6}.typing-missile-layer{z-index:3;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.typing-missile-line{stroke-width:4px;stroke-linecap:round;stroke-dasharray:16 10;filter:drop-shadow(0 0 6px #fb923cd9);animation:.18s ease-out forwards missile-flight}.typing-missile-head{fill:#fff7ed;filter:drop-shadow(0 0 8px #fdba74f2);animation:.18s ease-out forwards missile-flight}.typing-explosion{z-index:4;width:0;height:0;position:absolute}.typing-explosion-core{background:radial-gradient(circle,#fff7ed,#fb923c 45%,#0000 75%);border-radius:999px;width:16px;height:16px;animation:.48s ease-out forwards explosion-core;position:absolute;top:0;left:0;transform:translate(-50%,-50%)}.typing-explosion-ring{border:2px solid #fb923cd9;border-radius:999px;width:10px;height:10px;animation:.56s ease-out forwards explosion-ring;position:absolute;top:0;left:0;transform:translate(-50%,-50%);box-shadow:0 0 12px #ef444466}.typing-spark-wrap{width:0;height:0;position:absolute;top:0;left:0}.typing-explosion-spark{transform-origin:bottom;background:linear-gradient(#fbbf24,#0000);width:3px;height:16px;animation:.46s ease-out forwards explosion-spark;position:absolute;top:-18px;left:-1.5px}.typing-start-overlay{z-index:5;text-align:center;background:#050810c7;place-content:center;gap:14px;display:grid;position:absolute;inset:0}.typing-start-overlay strong{color:#e7ecf7;text-shadow:0 0 16px #5b7bffb3;font-size:24px}.typing-command{grid-template-columns:minmax(0,1fr) auto;gap:10px;display:grid}.typing-command input{height:48px;color:var(--color-text);font:inherit;border:1px solid #c9d4e5;border-radius:6px;padding:0 14px;font-size:18px;font-weight:800}.typing-command input:disabled{color:#697789;background:#eef2f7}.typing-actions{flex-wrap:wrap;gap:10px;display:flex}.typing-tabs{border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface-soft);grid-template-columns:repeat(3,1fr);padding:4px;display:grid}.typing-tabs button{border-radius:var(--radius-pill);color:var(--color-text);box-shadow:none;background:0 0;padding:9px 8px}.typing-tabs button.active{background:var(--color-primary-gradient);color:#fff;box-shadow:none}.typing-rank-list,.typing-my-scores{gap:10px;display:grid}.typing-rank-list article{border:1px solid var(--color-border);background:var(--color-surface-soft);border-radius:var(--radius-sm);grid-template-columns:34px minmax(0,1fr);align-items:center;gap:10px;padding:10px;display:grid}.typing-rank-list article.mine{background:#edf5ff;border-color:#8bb8ff}.typing-rank-list article>strong{background:var(--color-text);color:#fff;place-items:center;width:34px;height:34px;display:grid}.typing-rank-list article div,.typing-my-scores div{gap:3px;min-width:0;display:grid}.typing-rank-list span,.typing-my-scores strong{color:var(--color-text);font-weight:800}.typing-my-scores h3{margin:0;font-size:16px}.typing-my-scores div{border-top:1px solid #e1e7f0;padding-top:8px}.typing-admin-actions{border-top:1px solid #e1e7f0;padding-top:12px}.typing-admin-actions button{width:100%}@keyframes missile-flight{0%{opacity:0;stroke-dashoffset:46px}20%{opacity:1}to{opacity:1;stroke-dashoffset:0}}@keyframes word-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}@keyframes turret-pulse{0%,to{opacity:.8;transform:translate(-50%)scale(1)}50%{opacity:1;transform:translate(-50%)scale(1.3)}}@keyframes starfield-drift{0%{background-position:0 0}to{background-position:0 60px}}@keyframes explosion-core{0%{opacity:1;transform:translate(-50%,-50%)scale(.4)}to{opacity:0;transform:translate(-50%,-50%)scale(2.6)}}@keyframes explosion-ring{0%{opacity:1;transform:translate(-50%,-50%)scale(.5)}to{opacity:0;transform:translate(-50%,-50%)scale(4.2)}}@keyframes explosion-spark{0%{opacity:1;transform:scaleY(.3)translateY(0)}to{opacity:0;transform:scaleY(1)translateY(-16px)}}.toolbar,.upload-bar{background:var(--panel-bg);border:var(--panel-border);border-radius:var(--panel-radius);padding:var(--panel-padding);grid-template-columns:170px 170px minmax(178px,auto) minmax(88px,116px) minmax(280px,1fr) minmax(104px,auto) minmax(104px,auto);align-items:end;gap:12px;display:grid}.upload-bar{grid-template-columns:minmax(260px,1fr) auto}.toolbar>label input,.toolbar>label select,.toolbar>button{width:100%;min-width:0;height:var(--control-height);min-height:var(--control-height)}.upload-bar input,.upload-bar button,.activity-toolbar select,.activity-toolbar button,.board-form-row input,.board-form-row button,.board-delete-box input,.board-delete-box button{min-height:var(--control-height)}.mode-switch{height:var(--control-height)}@media (width<=1264px){.toolbar{grid-template-columns:minmax(160px,1fr) minmax(130px,.75fr) minmax(178px,auto) minmax(120px,auto)}.request-reason-input{grid-column:1/span 2}.toolbar>button{white-space:nowrap}}.timetable-preview-panel{background:var(--panel-bg);border:var(--panel-border);border-radius:var(--panel-radius);padding:var(--panel-padding);gap:12px;display:grid}.preview-stats{flex-wrap:wrap;gap:8px;display:flex}.preview-stats span{border:1px solid var(--color-border);background:var(--color-surface-soft);color:var(--color-text);border-radius:999px;padding:6px 10px;font-size:12px;font-weight:900}.preview-issue-list{gap:8px;display:grid}.preview-issue{border:1px solid var(--color-border);background:var(--color-surface-soft);border-radius:var(--radius-sm);grid-template-columns:minmax(0,1fr) minmax(260px,360px);align-items:end;gap:12px;padding:12px;display:grid}.preview-issue.ambiguous{background:#fffaf0;border-color:#f0b84b}.preview-issue.unmatched{background:#fff5f3;border-color:#e58a7a}.preview-issue div{gap:4px;display:grid}.preview-issue strong{color:var(--color-text);font-size:14px}.preview-issue span{color:var(--color-text-secondary);overflow-wrap:anywhere;font-size:12px}.note-input{min-width:0}.plan-round-input input{text-align:center}.mode-switch{border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface-soft);grid-template-columns:1fr 1fr;align-self:end;gap:3px;padding:3px;display:inline-grid}.mode-switch button{border-radius:var(--radius-pill);min-width:82px;min-height:0;color:var(--color-text);box-shadow:none;background:0 0;padding:0 10px}.mode-switch button:not(:disabled):hover{box-shadow:none;filter:none;transform:none}.mode-switch button.active{background:var(--color-primary-gradient);color:#fff}.live-alert{z-index:10;color:#4a3414;background:#fffaf0;border:1px solid #f0b84b;border-left-width:4px;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex;position:sticky;top:12px;box-shadow:0 12px 28px #1f2d3d1f}.live-alert span{min-width:0;font-size:14px;font-weight:800}.live-alert div{flex:none;gap:8px;display:flex}.live-alert button{min-height:var(--control-height-sm);padding:0 var(--space-3);font-size:13px}.timetable-conflict-feedback{align-items:center;gap:var(--space-3);display:flex}.timetable-conflict-feedback .action-feedback{flex:1;margin:0}.timetable-conflict-feedback button{flex:none}.pending-panel,.history-panel{background:var(--panel-bg);border:var(--panel-border);border-radius:var(--panel-radius);padding:var(--panel-padding);gap:10px;display:grid}.reset-panel{background:var(--panel-bg);border:var(--panel-border);border-radius:var(--panel-radius);padding:var(--panel-padding);gap:10px;margin-bottom:16px;display:grid}.timetable-management-panel{gap:var(--space-3);margin-top:var(--space-5);background:var(--panel-bg);border:var(--panel-border);border-radius:var(--panel-radius);padding:var(--panel-padding);display:grid}.timetable-management-panel .timetable-collapse-summary>div{min-width:0}.timetable-management-panel .timetable-collapse-summary p,.timetable-management-heading p,.timetable-management-preview p{margin:var(--space-1) 0 0;color:var(--color-text-secondary)}.timetable-management-body,.timetable-management-section,.timetable-management-preview,.timetable-report-result{gap:var(--space-4);display:grid}.timetable-management-section{border:1px solid var(--color-border-soft);border-radius:var(--radius-md);background:var(--color-surface-soft);padding:var(--panel-padding)}.timetable-management-heading{justify-content:space-between;align-items:flex-start;gap:var(--space-4);display:flex}.timetable-management-heading h3,.timetable-management-preview h3{margin:0}.timetable-import-steps{gap:var(--space-2);grid-template-columns:repeat(3,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.timetable-import-steps li{align-items:center;gap:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-secondary);padding:var(--space-2) var(--space-3);font-size:13px;font-weight:800;display:flex}.timetable-import-steps strong{border-radius:var(--radius-pill);background:var(--color-surface-soft);width:24px;height:24px;color:var(--color-text);justify-content:center;align-items:center;display:inline-flex}.timetable-import-steps li.active{border-color:var(--color-primary);color:var(--color-text)}.timetable-import-steps li.done{border-color:var(--color-success-border);background:var(--color-success-bg);color:var(--color-success-text)}.timetable-management-form,.timetable-report-controls{gap:var(--space-3);grid-template-columns:repeat(3,minmax(0,1fr));align-items:end;display:grid}.timetable-management-file{grid-column:span 2}.timetable-management-form input,.timetable-management-form select,.timetable-management-form button,.timetable-report-controls input,.timetable-report-controls button{width:100%;min-width:0;min-height:var(--control-height)}.timetable-report-table{border-collapse:collapse;background:var(--panel-bg);width:100%}.timetable-report-table th,.timetable-report-table td{border:1px solid var(--color-border-soft);padding:var(--space-2) var(--space-3);text-align:center;white-space:nowrap}.timetable-report-table thead th,.timetable-report-table tbody th{background:var(--color-surface-soft);color:var(--color-text)}.timetable-report-subjects summary{cursor:pointer;color:var(--color-text-secondary);font-weight:800}@media (width<=900px){.timetable-management-form,.timetable-report-controls{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.timetable-management-file{grid-column:1/-1}}@media (width<=620px){.timetable-management-heading{display:grid}.timetable-management-form,.timetable-report-controls{grid-template-columns:minmax(0,1fr)}.timetable-management-file{grid-column:auto}.timetable-import-steps{grid-template-columns:minmax(0,1fr)}.timetable-conflict-feedback{flex-direction:column;align-items:stretch}}.timetable-collapse-summary{justify-content:space-between;gap:var(--space-3);cursor:pointer;align-items:center;list-style:none;display:flex}.timetable-collapse-summary::-webkit-details-marker{display:none}.timetable-collapse-summary h2{margin:0;font-size:16px}.timetable-collapse-state{min-height:var(--control-height-sm);padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface-soft);color:var(--color-text);flex:none;justify-content:center;align-items:center;font-size:12px;font-weight:800;display:inline-flex}.timetable-collapse[open] .timetable-collapse-state{background:var(--color-text);color:var(--color-surface);font-size:0}.timetable-collapse[open] .timetable-collapse-state:before{content:"접기";font-size:12px}.timetable-collapse-body{gap:10px;display:grid}.timetable-collapse .pending-header .selected-summary{color:var(--color-text-secondary)}.history-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.history-round-select{min-width:170px;max-width:300px;color:var(--color-text);flex:200px;gap:4px;font-size:11px;font-weight:800;display:grid}.history-round-select select{width:100%;min-height:34px;padding:6px 30px 6px 10px;font-size:12px}.history-list{gap:8px;padding-right:4px;display:grid}.history-round-groups{gap:var(--space-3);display:grid}.history-round-group{gap:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);padding:var(--space-3);display:grid}.history-round-heading{align-items:baseline;gap:var(--space-2);border-bottom:1px solid var(--color-border-soft);padding-bottom:var(--space-2);flex-wrap:wrap;margin:0;font-size:12px;display:flex}.history-round-heading strong{color:var(--color-text);font-size:13px;font-weight:800}.history-round-heading span{color:var(--color-text-secondary);font-weight:700}.history-more-button{justify-self:start}.reset-list{gap:8px;display:grid}.reset-item{border:1px solid var(--color-border);background:var(--color-surface-soft);border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}.reset-item div{gap:4px;min-width:0;display:grid}.reset-item strong,.reset-item span{overflow-wrap:anywhere}.reset-item strong{color:var(--color-text);font-size:12px}.reset-item span{color:var(--color-text-secondary);font-size:12px}.history-item{border:1px solid var(--color-border);background:var(--color-surface-soft);border-radius:var(--radius-sm);grid-template-columns:minmax(170px,.7fr) minmax(140px,.55fr) minmax(260px,1.8fr);align-items:start;gap:10px;min-height:96px;padding:10px 12px;display:grid}.history-item div{gap:4px;min-width:0;display:grid}.history-item strong,.history-item span{overflow-wrap:anywhere}.history-cancel-button{justify-self:start;margin-top:4px}.history-item strong{color:var(--color-text);font-size:12px}.history-item span{color:var(--color-text-secondary);font-size:12px}.history-detail-lines{gap:8px;display:grid}.history-detail-line{border-left:3px solid var(--color-border);gap:3px;padding-left:9px;display:grid}.pending-list{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:8px;display:grid}.pending-item{color:#163923;text-align:left;background:#eaf7ef;grid-template-columns:minmax(0,1fr) auto;justify-items:start;gap:3px 8px;padding:9px 11px;display:grid}.pending-item.swap{color:#17365c;background:#edf5ff}.pending-item strong,.pending-item span{overflow-wrap:anywhere;white-space:normal;grid-column:1;max-width:100%}.pending-item strong{font-size:12px}.pending-item span{font-size:11px}.pending-delete{min-height:28px;color:inherit;background:#ffffffb8;grid-area:1/2/span 2;align-self:center;padding:5px 8px;font-size:11px}.pending-copy{resize:vertical;min-height:96px;color:var(--color-text);white-space:pre-wrap;line-height:1.6}.copy-details{border:1px solid var(--color-border);background:var(--color-surface-soft);border-radius:8px}.copy-details summary{cursor:pointer;color:var(--color-text);padding:10px 12px;font-size:13px;font-weight:800}.copy-details[open]{padding-bottom:10px}.copy-details .pending-copy{background:#fff;width:calc(100% - 24px);margin:0 12px}.plan-preview-panel{border:1px solid var(--color-border);background:#fbfcfe;border-radius:8px;gap:12px;padding:12px;display:grid}.plan-preview-panel .pending-header{align-items:flex-start}.plan-preview-panel .selected-summary{margin:5px 0 0}.plan-preview-details{gap:10px;display:grid}.plan-preview-details summary{color:#17365c;cursor:pointer;background:#fff;border:1px solid #b9c7da;border-radius:8px;justify-content:center;align-items:center;min-height:42px;padding:0 14px;font-weight:900;list-style:none;display:flex}.plan-preview-details summary::-webkit-details-marker{display:none}.plan-preview-details[open] summary{background:#eef5ff}.plan-document-preview{color:#111;background:#fff;border:1px solid #a3a3a3;gap:10px;width:min(100%,860px);margin:0 auto;padding:24px 22px;font-family:Nanum Gothic,Malgun Gothic,sans-serif;display:grid;box-shadow:0 8px 24px #1f2d3d0f}.official-plan-motto{text-align:center;color:#111;margin:0 0 8px;font-size:12px;font-weight:700}.official-plan-school{color:#111;text-align:center;margin:0 0 12px;font-size:25px;font-weight:900;line-height:1.2}.official-plan-header{border-collapse:collapse;color:#111;width:100%;font-size:13px}.official-plan-header th,.official-plan-header td{vertical-align:top;border:0;padding:3px 0}.official-plan-header th{text-align:left;width:46px;font-weight:900}.official-plan-header .official-plan-title{border-bottom:1px solid #111;font-weight:900}.official-plan-body{color:#111;gap:8px;font-size:13px;display:grid}.official-plan-body p,.plan-document-lines,.plan-document-line,.plan-attachments{margin:0}.plan-document-lines{gap:4px;padding-left:24px;list-style:decimal;display:grid}.plan-document-line{color:#111;font-weight:900}.plan-table-scroll{background:#fff;width:100%;overflow-x:auto}.plan-preview-table{border-collapse:collapse;table-layout:fixed;border:2px solid #111;width:100%;font-size:11px}.plan-preview-table col.col-no{width:5%}.plan-preview-table col.col-date{width:10.5%}.plan-preview-table col.col-class{width:7%}.plan-preview-table col.col-period{width:5%}.plan-preview-table col.col-subject{width:11.5%}.plan-preview-table col.col-teacher{width:10%}.plan-preview-table col.col-sheet,.plan-preview-table col.col-makeup-date{width:11%}.plan-preview-table col.col-makeup-period{width:8%}.plan-preview-table.official-substitution col.col-date{width:10%}.plan-preview-table.official-substitution col.col-class,.plan-preview-table.official-substitution col.col-makeup-period{width:8%}.plan-preview-table.official-substitution col.col-subject{width:13%}.plan-preview-table.official-substitution col.col-teacher{width:12%}.plan-preview-table th,.plan-preview-table td{color:#111;text-align:center;vertical-align:middle;word-break:keep-all;overflow-wrap:anywhere;border:1px solid #111;height:27px;padding:4px 5px}.plan-preview-table th{color:#111;background:#fff;font-weight:900}.plan-preview-table .empty-template-row td{height:28px}.plan-attachments{line-height:1.5}.official-plan-showcase{color:#111;gap:7px;padding:16px;font-size:11px}.showcase-plan-motto{text-align:center;margin:0;font-weight:800}.showcase-plan-school{text-align:center;color:#111;margin:0 0 6px;font-size:19px;font-weight:900}.showcase-plan-header{border-collapse:collapse;color:#111;width:100%;font-size:11px}.showcase-plan-header th,.showcase-plan-header td{text-align:left;border:0;padding:2px 0}.showcase-plan-header th{width:40px;font-weight:900}.showcase-plan-header tr:last-child td{border-bottom:1px solid #111;font-weight:900}.showcase-plan-body{gap:5px}.showcase-document-table.official-swap,.showcase-document-table.official-substitution{border:2px solid #111;font-size:8.5px}.showcase-document-table.official-swap th,.showcase-document-table.official-swap td,.showcase-document-table.official-substitution th,.showcase-document-table.official-substitution td{color:#111;background:#fff;padding:3px 2px}.timetable-layout{grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:16px;display:grid}.timetable-days{gap:18px;min-width:0;display:grid}.day-section{border:1px solid var(--color-border);background:#fff;border-radius:8px;overflow:hidden}.day-title{border-bottom:1px solid var(--color-border);background:var(--color-text);color:#fff;justify-content:space-between;align-items:center;gap:10px;padding:10px 14px;font-size:15px;font-weight:900;display:flex}.day-title span{color:#c7d2e4;font-size:13px;font-weight:800}.table-scroll{background:#eef2f7;overflow-x:auto}.class-table{border-collapse:separate;border-spacing:0;background:var(--color-border);min-width:max-content}.class-table th,.class-table td{border-right:1px solid var(--color-border);border-bottom:1px solid var(--color-border);vertical-align:middle;background:#fff;width:68px;min-width:68px;height:50px;padding:0}.class-table thead th{z-index:2;background:var(--color-surface-soft);height:34px;min-height:34px;color:var(--color-text);font-size:12px;font-weight:900;position:sticky;top:0}.class-table thead th.swap-class-head{background:var(--color-surface-soft);color:var(--color-text)}.class-table .period-column{z-index:3;background:var(--color-surface-soft);width:56px;min-width:56px;color:var(--color-text);text-align:center;font-size:12px;font-weight:900;position:sticky;left:0}.class-table thead .period-column{z-index:4}.class-table tbody .period-column{height:50px}.class-table th.timetable-axis-head{background:color-mix(in srgb, var(--color-primary) 10%, white);color:var(--color-text)}.class-table td.timetable-axis-row,.class-table td.timetable-axis-column{background:color-mix(in srgb, var(--color-primary) 4%, white)}.class-table td.timetable-axis-row.timetable-axis-column{background:color-mix(in srgb, var(--color-primary) 10%, white)}.class-table td.timetable-axis-cell{box-shadow:inset 0 0 0 3px color-mix(in srgb, var(--color-primary) 26%, transparent), 0 0 0 1px color-mix(in srgb, var(--color-primary) 12%, transparent);z-index:1;position:relative}.empty-cell{background:#fff}.empty-cell.swap-class-cell{background:var(--color-surface-soft)}.lesson-block{text-align:center;border:1px solid var(--color-border);width:100%;min-height:50px;color:var(--color-text);box-shadow:none;background:#fff;justify-items:center;gap:1px;padding:5px 4px;transition:background .16s,border-color .16s,box-shadow .16s,transform .16s;display:grid}.lesson-block.compact{border-radius:0;align-content:center;min-height:50px;padding:4px}.lesson-block:hover{border-color:var(--color-primary);outline:3px solid color-mix(in srgb, var(--color-primary) 10%, transparent);background:var(--color-surface-soft)}.timetable-axis-row .lesson-block:not(.selected):not(.changed):not(.draft):not(.swap-source),.timetable-axis-column .lesson-block:not(.selected):not(.changed):not(.draft):not(.swap-source){background:color-mix(in srgb, var(--color-primary) 4%, white)}.timetable-axis-cell .lesson-block:not(.selected){border-color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 10%, white);box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--color-primary) 18%, transparent)}.lesson-block.free-period:not(.selected){border-style:dashed}.lesson-block.free-period:not(.selected) strong{color:var(--color-text-secondary)}.lesson-block.changed{background:#fff7e6;border-color:#f0b84b}.lesson-block.draft{background:#eaf7ef;border-color:#51a36d}.lesson-block.remote-draft{color:#32115f;background:#f3edff;border-color:#7c3aed;box-shadow:inset 0 0 0 2px #7c3aed29}.lesson-block.remote-draft span,.lesson-block.remote-draft small{color:#4c1d95}.lesson-block.my-lesson{border-color:#0f8b6f;box-shadow:inset 0 0 0 2px #0f8b6f38}.lesson-block.selected{background:var(--color-primary);border-color:var(--color-primary-dark);color:#fff;outline:3px solid color-mix(in srgb, var(--color-primary) 26%, transparent);box-shadow:inset 0 0 0 2px #ffffff61}.lesson-block.selected span,.lesson-block.selected small{color:#e5e5e5}.lesson-block.swap-class{background:var(--color-surface-soft);border-color:var(--color-border)}.lesson-block.swap-source{background:var(--color-primary);color:#fff;box-shadow:inset 0 0 0 2px #ffffff73}.lesson-block.swap-source span,.lesson-block.swap-source small{color:#e5e5e5}.lesson-block.swap-target{background:#e7f8ef;border-color:#16a36a;box-shadow:inset 0 0 0 2px #16a36a33}.lesson-block.swap-target:hover{transform:translateY(-1px);box-shadow:0 8px 18px #16a36a2e,inset 0 0 0 2px #16a36a3d}.lesson-block.swap-unavailable{background:var(--color-danger-bg);border-color:var(--color-danger-border);color:var(--color-danger-text);box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--color-danger-border) 32%, transparent);cursor:not-allowed}.lesson-block.swap-unavailable span,.lesson-block.swap-unavailable small{color:var(--color-danger-text)}.lesson-block.queued-swap{background:#e8f1ff;border-color:#2f80ed}.lesson-block strong,.candidate-block strong{font-size:14px}.lesson-block.compact strong{-webkit-line-clamp:2;overflow-wrap:anywhere;-webkit-box-orient:vertical;max-width:100%;font-size:10.5px;line-height:1.15;display:-webkit-box;overflow:hidden}.lesson-block span,.lesson-block small,.candidate-block span,.selected-summary,.empty{color:var(--color-text-secondary);font-size:13px}.lesson-block.compact span,.lesson-block.compact small{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:9.5px;line-height:1.15;overflow:hidden}.candidate-panel{background:var(--panel-bg);border:var(--panel-border);border-radius:var(--panel-radius);padding:var(--panel-padding);gap:12px;display:grid;position:sticky;top:24px}.candidate-panel h2{margin-bottom:0;font-size:18px}.timetable-plan-import-panel{gap:var(--space-3);padding:var(--panel-padding);border:var(--panel-border);border-radius:var(--panel-radius);background:var(--panel-bg);display:grid}.timetable-plan-import-upload,.timetable-plan-apply-bar{gap:var(--space-3);grid-template-columns:minmax(260px,1fr) auto;align-items:end;display:grid}.timetable-plan-import-upload label,.timetable-plan-apply-bar label,.timetable-plan-row-grid label{gap:var(--space-1);display:grid}.timetable-plan-review-layout{gap:var(--space-4);grid-template-columns:minmax(0,1fr) minmax(380px,.9fr);align-items:start;display:grid}.timetable-plan-import-recent{gap:var(--space-2);display:grid}.timetable-plan-document-actions{justify-content:flex-end;display:flex}.timetable-plan-import-recent>div{gap:var(--space-2);flex-wrap:wrap;display:flex}.timetable-plan-import-recent button.selected{border-color:var(--color-primary)}.timetable-plan-review-rows{gap:var(--space-3);display:grid}.timetable-plan-review-row{padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-soft)}.timetable-plan-review-row.confirmed{border-color:var(--color-success-border);background:var(--color-success-bg)}.timetable-plan-row-grid{gap:var(--space-2);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.timetable-plan-row-actions{justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-3);display:flex}.timetable-plan-pdf-wrap{top:var(--space-4);position:sticky}.timetable-plan-pdf{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff;width:100%;min-height:760px}.timetable-plan-apply-bar{padding-top:var(--space-3);border-top:1px solid var(--color-border-soft);grid-template-columns:minmax(140px,.5fr) minmax(260px,1fr) auto}@media (width<=1000px){.timetable-plan-review-layout,.timetable-plan-apply-bar{grid-template-columns:1fr}.timetable-plan-pdf-wrap{position:static}}@media (width<=620px){.timetable-plan-import-upload,.timetable-plan-row-grid{grid-template-columns:1fr}}.special-rooms-app{--special-room-hour-height:72px;--special-room-day-height:calc(var(--special-room-hour-height) * 15);--special-room-pending:#b7791f;--special-room-pending-soft:#fff7ed;--special-room-approved:#15803d;--special-room-approved-soft:#f0fdf4;--special-room-panel-border:#e3e6ea;gap:18px;display:grid}.special-room-form,.special-room-toolbar,.special-room-admin,.special-room-manager-card{border:1px solid var(--special-room-panel-border);background:#fff;border-radius:8px;box-shadow:0 8px 22px #1118270d}.special-room-form{grid-template-columns:minmax(150px,1fr) repeat(3,minmax(126px,.75fr)) minmax(220px,1.6fr) auto;align-items:end;gap:12px;padding:16px;display:grid}.special-room-form input,.special-room-form select,.special-room-form button,.special-room-toolbar input,.special-room-toolbar button,.special-room-add-form input,.special-room-add-form button{min-height:var(--control-height)}.special-room-date-field{gap:6px;min-width:0;display:grid}.special-room-date-quick{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;display:grid}.special-room-date-quick button{min-height:var(--control-height-sm);padding:0 10px;font-size:12px}.special-room-reason{min-width:0}.special-room-room-field small,.special-room-list-room span,.special-room-dialog-manager{color:var(--color-text-secondary);font-size:12px;font-weight:800}.special-room-list-room{gap:var(--space-1);min-width:0;display:grid}.special-room-dialog-manager{margin:var(--space-1) 0 0}.special-room-toolbar{grid-template-columns:minmax(180px,260px) auto;justify-content:space-between;align-items:end;gap:12px;padding:14px 16px;display:grid}.special-room-toolbar label input{width:100%}.special-room-toolbar>div{flex-wrap:wrap;gap:8px;display:flex}.special-room-calendar{gap:16px;display:grid}.special-room-reservation-list-panel{border:1px solid var(--special-room-panel-border);background:#fff;border-radius:8px;gap:12px;padding:16px;display:grid;box-shadow:0 8px 22px #1118270d}.special-room-list-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.special-room-list-head h2{color:#111;letter-spacing:0;margin:0;font-size:17px}.special-room-list-head span{color:var(--color-text-secondary);font-size:12px;font-weight:800}.special-room-list-pager{align-items:center;gap:8px;display:flex}.special-room-list-pager button{min-height:var(--control-height-sm)}.special-room-list-pager>span{min-width:42px;color:var(--color-text-secondary);text-align:center;font-size:12px;font-weight:900}.special-room-reservation-list{gap:8px;display:grid}.special-room-reservation-list-item{border:1px solid #e6e9ee;border-left:4px solid var(--special-room-pending);color:#111;text-align:left;background:#fff;border-radius:8px;grid-template-columns:minmax(112px,.74fr) minmax(108px,.8fr) minmax(102px,.68fr) minmax(88px,.64fr) minmax(160px,1.2fr) auto minmax(220px,auto);align-items:center;gap:10px;width:100%;min-height:52px;padding:10px 12px 10px 14px;transition:border-color .14s,box-shadow .14s,transform .14s,background .14s;display:grid;position:relative;overflow:hidden;box-shadow:0 1px 2px #1118270a}.special-room-reservation-list-item:hover{background:var(--color-surface-soft);border-color:#cbd5e1;transform:translateY(-1px);box-shadow:0 10px 22px #11182714}.special-room-reservation-list-item.selected,.special-room-reservation-list-item.focused{border-color:#94a3b8;box-shadow:0 0 0 3px #11182714}.special-room-reservation-list-item.approved{border-left-color:var(--special-room-approved);background:#fff}.special-room-reservation-list-item.approved:hover{background:var(--color-surface-soft)}.special-room-reservation-list-item strong,.special-room-reservation-list-item span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.special-room-list-date,.special-room-list-time,.special-room-list-teacher{color:#475569;font-size:12px;font-weight:900}.special-room-reservation-list-item strong{color:#111;font-size:13px}.special-room-list-reason{color:#334155;font-size:13px;font-weight:800}.special-room-reservation-list-item small{background:var(--special-room-pending-soft);color:var(--special-room-pending);white-space:nowrap;border-radius:999px;justify-self:end;padding:4px 8px;font-size:11px;font-weight:900}.special-room-reservation-list-item.approved small{background:var(--special-room-approved-soft);color:var(--special-room-approved)}.special-room-list-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.special-room-list-actions button{min-height:var(--control-height-sm);padding:0 10px;font-size:12px}.special-room-day{gap:12px;display:grid}.special-room-day-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.special-room-day h2{color:#111;margin:0;font-size:18px}.special-room-day-head span{color:var(--color-text-secondary);font-size:13px;font-weight:800}.special-room-schedule-wrap{border:1px solid var(--special-room-panel-border);scrollbar-gutter:stable both-edges;background:#fff;border-radius:8px;max-height:clamp(520px,74vh,760px);overflow:auto;box-shadow:inset 0 1px #ffffffe6,0 8px 22px #1118270d}.special-room-schedule{min-width:920px;display:grid}.special-room-time-corner,.special-room-column-head{z-index:2;border-bottom:1px solid var(--special-room-panel-border);background:#fbfbfa;min-height:64px;position:sticky;top:0;box-shadow:0 1px #e3e6eaf2}.special-room-time-corner{z-index:3;border-right:1px solid var(--special-room-panel-border);color:var(--color-text-secondary);place-items:center;font-size:13px;font-weight:900;display:grid;left:0}.special-room-column-head{width:100%;color:inherit;text-align:center;border-left:1px solid #eef0f3;border-radius:0;align-content:center;justify-items:center;gap:3px;padding:10px 12px;display:grid}.special-room-column-head:hover{background:#f3f6f9}.special-room-column-head strong{color:#111}.special-room-column-head span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;color:var(--color-text-secondary);font-size:12px;line-height:1.4;overflow:hidden}.special-room-time-axis{z-index:1;height:var(--special-room-day-height);min-height:var(--special-room-day-height);border-right:1px solid var(--special-room-panel-border);background:#fbfbfa;position:sticky;left:0}.special-room-time-axis span{color:#64748b;text-align:center;place-items:center;height:24px;margin-top:-12px;font-size:12px;font-weight:800;display:grid;position:absolute;left:0;right:0}.special-room-timeline{height:var(--special-room-day-height);min-height:var(--special-room-day-height);cursor:pointer;background:#fff;border-left:1px solid #eef0f3;position:relative}.special-room-timeline:hover{background:#fcfcfb}.special-room-hour-line{border-top:1px solid #edf0f3;display:block;position:absolute;left:0;right:0}.special-room-reservation{border:1px solid #e6e9ee;border-left:4px solid var(--special-room-pending);color:#111;cursor:default;text-align:left;background:#fff;border-radius:7px;align-content:start;gap:3px;width:auto;min-height:0;padding:8px 9px 7px;display:grid;position:absolute;left:7px;right:7px;overflow:hidden;box-shadow:0 8px 18px #11182714}.special-room-reservation.focused{border-color:#94a3b8;box-shadow:0 0 0 3px #11182714,0 10px 22px #1118271a}.special-room-reservation.approved{border-left-color:var(--special-room-approved);color:#111}.special-room-reservation-top{justify-content:space-between;align-items:center;gap:6px;min-width:0;display:flex}.special-room-reservation-time,.special-room-reservation-status,.special-room-reservation-teacher,.special-room-reservation-reason,.special-room-reservation-decider{overflow-wrap:anywhere;overflow:hidden}.special-room-reservation-time{color:inherit;white-space:nowrap;font-size:11px;font-weight:900;line-height:1.15}.special-room-reservation-status{background:var(--special-room-pending-soft);color:var(--special-room-pending);white-space:nowrap;border-radius:999px;flex:none;padding:2px 6px;font-size:10px;font-weight:900;line-height:1}.special-room-reservation.approved .special-room-reservation-status{background:var(--special-room-approved-soft);color:var(--special-room-approved)}.special-room-reservation-teacher{text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:900;line-height:1.15}.special-room-reservation-reason{color:#334155;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:12px;font-weight:800;line-height:1.22;display:-webkit-box}.special-room-reservation-decider{color:#64748b;font-size:11px;font-weight:800;line-height:1.15}.special-room-reservation.compact{gap:1px;padding-top:6px}.special-room-reservation.compact .special-room-reservation-top{align-items:flex-start}.special-room-reservation.compact .special-room-reservation-status,.special-room-reservation.compact .special-room-reservation-decider{display:none}.special-room-reservation.compact .special-room-reservation-teacher{font-size:11px}.special-room-reservation.compact .special-room-reservation-reason{-webkit-line-clamp:1;font-size:11px}.special-room-empty{z-index:1;color:#8a98a8;pointer-events:none;place-items:center;font-weight:800;display:grid;position:absolute;inset:0}.special-room-admin{gap:14px;padding:16px;display:grid}.special-room-add-form{grid-template-columns:minmax(180px,1fr) auto;align-items:end;gap:10px;display:grid}.special-room-manager-grid{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:12px;display:grid}.special-room-manager-card{gap:12px;padding:14px;display:grid}.special-room-manager-name{align-items:end;gap:var(--space-2);grid-template-columns:minmax(0,1fr) auto;display:grid}.special-room-manager-name input,.special-room-manager-name button{min-height:var(--control-height)}.special-room-manager-actions{justify-content:flex-end;gap:var(--space-2);flex-wrap:wrap;display:flex}.special-room-teacher-list{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;max-height:280px;padding-right:2px;display:grid;overflow:auto}.special-room-teacher-list label{background:var(--color-surface-soft);border:1px solid #e2e8f0;border-radius:6px;align-items:center;gap:7px;padding:8px;font-size:13px;display:flex}.special-room-teacher-list input{width:18px;height:18px}.special-room-dialog-backdrop{z-index:95;background:#17202a85;place-items:center;padding:24px;display:grid;position:fixed;inset:0;overflow:auto}.special-room-dialog{border-radius:var(--radius-lg);background:#fff;border:1px solid #d9e1ec;gap:14px;width:min(440px,100%);padding:18px;display:grid;box-shadow:0 24px 70px #0f172a4d}.special-room-dialog-head,.special-room-dialog-actions{justify-content:space-between;align-items:center;gap:10px;display:flex}.special-room-dialog-head h2,.special-room-dialog-head p{margin:0}.special-room-dialog-time{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.special-room-dialog-actions{justify-content:flex-end}@media (width<=980px){.special-room-form{grid-template-columns:repeat(2,minmax(0,1fr))}.special-room-form button,.special-room-reason{grid-column:1/-1}}@media (width<=620px){.special-room-form,.special-room-toolbar,.special-room-add-form{grid-template-columns:minmax(0,1fr);display:grid}.special-room-toolbar>div,.special-room-toolbar button,.special-room-form button,.special-room-add-form button{width:100%}.special-room-day-head,.special-room-list-head,.special-room-list-pager{flex-direction:column;align-items:stretch}.special-room-list-pager button{width:100%}.special-room-reservation-list-item{grid-template-columns:1fr auto;gap:6px 10px}.special-room-list-date,.special-room-list-room,.special-room-list-time,.special-room-list-teacher,.special-room-list-reason,.special-room-list-actions{grid-column:1/-1}.special-room-list-actions{justify-content:stretch}.special-room-list-actions button{flex:120px}.special-room-reservation-list-item small{grid-area:1/2}.special-room-empty{min-height:120px}.special-room-dialog-head,.special-room-dialog-actions,.special-room-dialog-time{flex-direction:column;grid-template-columns:minmax(0,1fr);align-items:stretch}.special-room-dialog-actions button,.special-room-dialog-head button{width:100%}.special-room-manager-name{grid-template-columns:minmax(0,1fr)}.special-room-manager-name button,.special-room-manager-actions button{width:100%}}.calendar-workbench{gap:var(--space-4,16px);flex-direction:column;display:flex}.calendar-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.calendar-month-nav{align-items:center;gap:8px;display:flex}.calendar-month-nav h2{text-align:center;min-width:132px;margin:0 4px}.calendar-filters{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.calendar-filter{border-radius:999px;padding:4px 12px;font-size:.85rem}.calendar-filter.selected{background:var(--color-primary,#2563eb);color:#fff;border-color:#0000}.calendar-layout{gap:var(--space-4,16px);grid-template-columns:minmax(0,2fr) minmax(280px,1fr);align-items:start;display:grid}.calendar-weekday-row,.calendar-grid{grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.calendar-weekday-row{gap:4px;margin-bottom:4px}.calendar-weekday-row span{text-align:center;color:var(--color-text-muted,#64748b);padding:4px 0;font-size:.8rem}.calendar-grid{gap:4px}.calendar-day{border:1px solid var(--color-border,#e2e8f0);background:var(--color-surface,#fff);text-align:left;cursor:pointer;border-radius:8px;flex-direction:column;align-items:stretch;gap:4px;min-height:96px;padding:6px;display:flex;overflow:hidden}.calendar-day.outside{opacity:.45}.calendar-day.today{border-color:var(--color-primary,#2563eb)}.calendar-day.selected{outline:2px solid var(--color-primary,#2563eb);outline-offset:-2px}.calendar-day-number{font-size:.85rem;font-weight:600}.calendar-day-number.sunday,.calendar-weekday-row .sunday{color:#dc2626}.calendar-day-number.saturday,.calendar-weekday-row .saturday{color:#2563eb}.calendar-day-events{flex-direction:column;gap:2px;min-width:0;display:flex}.calendar-chip{text-overflow:ellipsis;white-space:nowrap;background:var(--color-surface-muted,#f1f5f9);border-radius:6px;max-width:100%;padding:1px 6px;font-size:.72rem;line-height:1.35;display:block;overflow:hidden}.calendar-chip em{opacity:.8;font-style:normal;font-weight:600}.calendar-chip.school{color:#1d4ed8;background:#2563eb24}.calendar-chip.personal{color:#15803d;background:#16a34a24}.calendar-chip.app-special-rooms{color:#b45309;background:#d9770624}.calendar-chip.app-signatures{color:#7e22ce;background:#9333ea24}.calendar-chip.app-polls{color:#be185d;background:#db277724}.calendar-chip.app-meeting-minutes{color:#0f766e;background:#0d948824}.calendar-chip.more{color:var(--color-text-muted,#64748b);background:0 0}.calendar-day-panel{flex-direction:column;gap:12px;display:flex}.calendar-day-list{flex-direction:column;gap:8px;display:flex}.calendar-day-item{border:1px solid var(--color-border,#e2e8f0);border-radius:8px;align-items:flex-start;gap:10px;padding:8px;display:flex}.calendar-day-item>.calendar-chip{border-radius:999px;flex:0 0 10px;min-width:10px;height:10px;margin-top:5px;padding:0}.calendar-day-item-body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.calendar-day-item-body span{color:var(--color-text-muted,#64748b);font-size:.8rem}.calendar-day-item-body p{white-space:pre-wrap;margin:2px 0 0;font-size:.85rem}.calendar-day-item-actions{flex-direction:column;gap:4px;display:flex}.calendar-event-form{border-top:1px solid var(--color-border,#e2e8f0);flex-direction:column;gap:10px;padding-top:12px;display:flex}.calendar-form-grid{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;display:grid}.calendar-related-picker summary{cursor:pointer;font-size:.9rem}.calendar-import-controls{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.calendar-import-controls input[type=number]{width:110px}.calendar-import-preview{flex-direction:column;gap:8px;margin-top:12px;display:flex}.calendar-import-preview-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.calendar-import-rows{flex-direction:column;gap:4px;max-height:320px;display:flex;overflow-y:auto}.calendar-import-row{grid-template-columns:auto 150px 150px minmax(0,1fr) auto;align-items:center;gap:6px;display:grid}.calendar-import-closure{white-space:nowrap}@media (width<=900px){.calendar-layout{grid-template-columns:minmax(0,1fr)}.calendar-day{min-height:72px}.calendar-import-row{grid-template-columns:auto 1fr}}@media (width<=980px){.topbar{align-items:flex-start}.topbar h1{font-size:28px;line-height:1.2}.login-panel{grid-template-columns:minmax(0,1fr)}.app-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.toolbar,.upload-bar,.signature-admin-grid,.timetable-layout,.live-alert,.history-item,.preview-issue,.operation-status-grid,.backup-item,.activity-toolbar,.activity-main,.permission-guide,.deploy-progress-meta,.typing-challenge,.typing-stat-grid,.typing-command,.polls-layout,.board-form-row,.teacher-admin-item,.round-reset-bar{grid-template-columns:minmax(0,1fr)}.toolbar .request-reason-input{grid-column:auto}.history-actions{flex-wrap:wrap}.history-round-select{min-width:min(100%,220px)}.live-alert{display:grid}.candidate-panel{position:static}}@media (width<=640px){.app-subpage-nav{grid-template-columns:minmax(0,1fr)}.app-subpage-back,.app-task-switcher,.app-task-busy{grid-column:1}.app-subpage-back{width:100%}.plan-preview-panel .pending-header,.plan-preview-panel .history-actions{grid-template-columns:minmax(0,1fr);width:100%;display:grid}.plan-preview-panel .history-actions button,.history-round-select{width:100%}}@media (width<=620px){.screen{padding:14px}.login-panel{padding:24px}.topbar{flex-direction:column;align-items:stretch;gap:12px;margin-bottom:18px;position:relative}.topbar h1{margin-bottom:0;font-size:24px;line-height:1.18}.userbox{grid-template-columns:minmax(0,.92fr) minmax(0,.92fr) minmax(0,1.16fr);align-items:stretch;gap:8px;display:grid}.userbox span{font-size:14px;font-weight:800}.userbox button{width:100%;min-width:0;min-height:var(--control-height-sm);white-space:nowrap;padding:7px 8px;font-size:13px;line-height:1.15}.userbox .ui-scale{width:100%;min-height:var(--control-height-sm);grid-column:1/-1;justify-content:space-between}.userbox .ui-scale span{font-size:12px}.userbox .ui-scale input[type=range]{flex:auto;width:auto}.help-label-full{display:none}.help-label-compact{display:inline}.floating-home-button{right:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));gap:0;width:46px;min-width:46px;min-height:46px;padding:0}.floating-home-label{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.user-menu{width:100%;position:static}.user-menu-panel{z-index:30;width:100%;margin-top:0;position:absolute;top:calc(100% + 8px);left:0;right:0}.board-header,.board-detail-head,.polls-header,.polls-detail-head,.help-head,.board-delete-box{flex-direction:column;align-items:stretch}.polls-option-row{grid-template-columns:minmax(0,1fr)}input,select,textarea,input[type=date],input[type=datetime-local],input[type=time]{min-width:0;max-width:100%}.board-delete-box input,.board-header button,.board-detail-head button,.polls-header button,.polls-review-actions button,.help-head button,.board-pagination button{width:100%;max-width:none}.help-backdrop,.help-modal{padding:16px}.toolbar,.upload-bar{gap:10px;padding:12px}.class-table th,.class-table td{width:62px;min-width:62px;height:46px}.class-table .period-column{width:46px;min-width:46px}.class-table tbody .period-column,.lesson-block,.lesson-block.compact{height:46px;min-height:46px}.lesson-block.compact strong{font-size:10px}.lesson-block.compact span,.lesson-block.compact small{font-size:9px}.app-grid{grid-template-columns:minmax(0,1fr);gap:8px}.portal-dashboard-head{flex-direction:column;align-items:flex-start}.portal-dashboard-count{min-width:0}.portal-task-grid{grid-template-columns:minmax(0,1fr)}.portal-task-card{min-height:0}.app-card{grid-template-columns:auto minmax(0,1fr) auto;align-content:center;align-items:center;gap:8px 10px;min-height:0;padding:12px}.app-card:hover{transform:none}.app-card .card-head{display:contents}.app-card-icon{border-radius:var(--radius-sm);grid-area:1/1/span 2;width:34px;height:34px;font-size:17px}.app-card h2{grid-area:1/2;min-width:0;margin:0;font-size:16px;line-height:1.2}.app-card .app-status{grid-area:1/3;justify-self:end;padding:4px 8px;font-size:11px}.app-card p,.app-card-tasks{display:none}.app-card>button{grid-area:2/2/auto/4;justify-self:start;min-height:34px;padding:0 10px;font-size:12px}.account-head{flex-direction:column;align-items:stretch}.account-password-form{grid-template-columns:minmax(0,1fr)}.account-form-actions,.account-details-summary{flex-direction:column;align-items:stretch}.account-form-actions button,.account-order-toolbar button{width:100%}.account-order-toolbar{justify-content:stretch}.account-order-item{grid-template-columns:auto 28px minmax(0,1fr)}.account-order-item .app-status{grid-column:3;justify-self:start}.portal-version-item{grid-template-columns:minmax(0,1fr);gap:4px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
