.nav-item[data-v-7f8f7ad2],.nav-sublink[data-v-7f8f7ad2]{text-decoration:none;color:inherit}.nav-item[data-v-7f8f7ad2]:hover,.nav-sublink[data-v-7f8f7ad2]:hover{background-color:rgba(79,70,229,.08);background:color-mix(in srgb,var(--primary) 10%,transparent)}.nav-item[data-v-7f8f7ad2]:focus-visible,.nav-sublink[data-v-7f8f7ad2]:focus-visible{outline:0;box-shadow:0 0 0 3px var(--focus)}.overlay[data-v-51219603]{position:fixed;inset:0;background:rgba(0,0,0,.35);display:grid;place-items:center;z-index:1000}.dialog[data-v-51219603]{background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-1);max-height:calc(100vh - 24px);display:flex;flex-direction:column}.dialog-footer[data-v-51219603],.dialog-header[data-v-51219603]{padding:12px 16px}.dialog-header[data-v-51219603]{position:relative;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border)}.dialog-body[data-v-51219603]{padding:16px;//overflow:auto}.h2[data-v-51219603]{font-size:16px;line-height:22px;font-weight:500;margin:0}.icon-close[data-v-51219603]{display:block;color:var(--muted)}.top-nav[data-v-a67a5f8e]{display:flex;align-items:center;gap:12px;padding:8px 12px;border-bottom:1px solid var(--border);background:var(--surface);border-radius:10px;margin-bottom:12px}.grow[data-v-a67a5f8e]{flex:1}.session-timer[data-v-a67a5f8e]{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px;border:1px solid var(--border);border-radius:999px;color:var(--text);background:var(--surface);font-size:12px}.session-timer i[data-v-a67a5f8e]{font-size:12px;color:var(--muted)}.profile[data-v-a67a5f8e]{position:relative}.profile-btn[data-v-a67a5f8e]{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 10px;background:var(--surface);border:1px solid var(--border);border-radius:8px;color:var(--text);cursor:pointer}.profile-btn[data-v-a67a5f8e]:hover{border-color:var(--border-strong)}.profile-btn[data-v-a67a5f8e]:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus);border-color:var(--primary)}.avatar[data-v-a67a5f8e]{width:24px;height:24px;border-radius:999px;background:var(--primary);color:#fff;display:inline-grid;place-items:center;font-size:12px;font-weight:600}.name[data-v-a67a5f8e]{font-size:14px}.menu[data-v-a67a5f8e]{position:absolute;right:0;top:calc(100% + 6px);min-width:180px;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 22px rgba(15,23,42,.12);padding:6px;list-style:none;margin:0;z-index:10}.menu-item[data-v-a67a5f8e]{width:100%;display:flex;align-items:center;gap:8px;padding:8px 10px;background:transparent;border:none;border-radius:6px;color:var(--text);text-align:left;cursor:pointer;font:inherit}.menu-item[data-v-a67a5f8e]:hover{background:rgba(79,70,229,.06)}.menu-item.danger[data-v-a67a5f8e]:hover{background:rgba(239,68,68,.08)}select{height:36px;padding:6px 8px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font:inherit;line-height:1.4;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}select:hover:not(:disabled){border-color:var(--border-strong)}select:focus,select:focus-visible{border-color:var(--primary);box-shadow:0 0 0 3px var(--focus);outline:none}select:disabled{opacity:.65;cursor:not-allowed}.forgot-link[data-v-0f20efe6]{display:flex;justify-content:flex-end;margin-top:8px}.ghost-btn[data-v-0f20efe6]{display:inline-flex;align-items:center;height:36px;padding:0 12px;border:1px solid var(--border,#e0e3ea);border-radius:6px;color:var(--text,#1f2937);text-decoration:none;background:var(--surface,#fff);transition:background-color .14s ease,border-color .14s ease,color .14s ease;font-size:14px;line-height:20px}.ghost-btn[data-v-0f20efe6]:hover{text-decoration:underline;border-color:var(--primary,#4f46e5)}.ghost-btn[data-v-0f20efe6]:focus{outline:2px solid var(--focus,rgba(79,70,229,.45));outline-offset:2px}.login-shell[data-v-8edcdfd2]{min-height:100vh;display:grid;place-items:center;background:linear-gradient(180deg,var(--bg) 0,#eef1f6 100%);padding:24px}.card[data-v-8edcdfd2]{background:var(--surface);color:var(--text);width:100%;max-width:420px;border:1px solid var(--border-strong);border-radius:12px;box-shadow:0 8px 28px rgba(15,23,42,.08),0 1px 0 rgba(0,0,0,.04);padding:24px 20px}.title[data-v-8edcdfd2]{font-size:20px;line-height:24px;font-weight:600;margin:0 0 6px 0}.subtitle[data-v-8edcdfd2]{font-size:12px;line-height:16px;color:var(--muted);margin:0 0 16px 0}.form[data-v-8edcdfd2]{display:grid;gap:14px}.label[data-v-8edcdfd2]{font-size:12px;color:var(--muted)}.input[data-v-8edcdfd2]{height:40px;padding:8px 10px;border:1px solid var(--border-strong);border-radius:8px;outline:none;background:#fff;color:var(--text);transition:border-color .12s ease,box-shadow .12s ease,background-color .12s ease;box-shadow:inset 0 1px 2px rgba(15,23,42,.04)}.input[data-v-8edcdfd2]::-moz-placeholder{color:var(--muted);opacity:.9}.input[data-v-8edcdfd2]::placeholder{color:var(--muted);opacity:.9}.input[data-v-8edcdfd2]:hover{border-color:var(--primary-600)}.input[data-v-8edcdfd2]:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--focus)}.btn[data-v-8edcdfd2]{height:42px;border-radius:8px;background:var(--primary);color:#fff;border:1px solid var(--primary);cursor:pointer;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:background-color .12s ease,box-shadow .12s ease,transform .02s ease-in;box-shadow:0 1px 0 rgba(0,0,0,.04),0 6px 16px rgba(79,70,229,.18)}.btn[data-v-8edcdfd2]:hover{background:var(--primary-600)}.btn[data-v-8edcdfd2]:active{transform:translateY(1px)}.btn[data-v-8edcdfd2]:disabled{opacity:.7;cursor:default;box-shadow:none}.spinner[data-v-8edcdfd2]{width:16px;height:16px;border:2px solid hsla(0,0%,100%,.55);border-top-color:#fff;border-radius:50%;display:inline-block;animation:spin-8edcdfd2 1s linear infinite}@keyframes spin-8edcdfd2{to{transform:rotate(1turn)}}.not-found-container[data-v-6a25fca6]{display:flex;justify-content:center;align-items:center;height:100%;text-align:center;padding:2rem}.not-found-container .not-found-content[data-v-6a25fca6]{max-width:500px}.not-found-container .not-found-content .not-found-icon[data-v-6a25fca6]{font-size:5rem;color:var(--primary-color);margin-bottom:1rem}.not-found-container .not-found-content h1[data-v-6a25fca6]{font-size:4rem;margin:0;color:var(--primary-color)}.not-found-container .not-found-content h2[data-v-6a25fca6]{margin-top:.5rem;margin-bottom:1rem}.not-found-container .not-found-content p[data-v-6a25fca6]{margin-bottom:2rem;color:var(--text-color-secondary)}.login-shell[data-v-6e782e1a]{min-height:100vh;display:grid;place-items:center;background:linear-gradient(180deg,var(--bg,#f6f7f9) 0,#eef1f6 100%);padding:24px}.card[data-v-6e782e1a]{background:var(--surface,#fff);color:var(--text,#1f2937);width:100%;max-width:420px;border:1px solid var(--border-strong,#e0e3ea);border-radius:12px;box-shadow:0 8px 28px rgba(15,23,42,.08),0 1px 0 rgba(0,0,0,.04);padding:24px 20px}.title[data-v-6e782e1a]{font-size:20px;line-height:24px;font-weight:600;margin:0 0 6px 0}.subtitle[data-v-6e782e1a]{font-size:12px;line-height:16px;color:var(--muted,#6b7280);margin:0 0 16px 0}.form[data-v-6e782e1a]{display:grid;gap:14px}.label[data-v-6e782e1a]{font-size:12px;color:var(--muted,#6b7280)}.input[data-v-6e782e1a]{height:40px;padding:8px 10px;border:1px solid var(--border-strong,#e0e3ea);border-radius:8px;outline:none;background:#fff;color:var(--text,#1f2937);transition:border-color .12s ease,box-shadow .12s ease,background-color .12s ease;box-shadow:inset 0 1px 2px rgba(15,23,42,.04)}.input[data-v-6e782e1a]::-moz-placeholder{color:var(--muted,#6b7280);opacity:.9}.input[data-v-6e782e1a]::placeholder{color:var(--muted,#6b7280);opacity:.9}.input[data-v-6e782e1a]:hover{border-color:var(--primary-600,#4338ca)}.input[data-v-6e782e1a]:focus{border-color:var(--primary,#4f46e5);box-shadow:0 0 0 3px var(--focus,rgba(79,70,229,.45))}.btn[data-v-6e782e1a]{height:42px;border-radius:8px;background:var(--primary,#4f46e5);color:#fff;border:1px solid var(--primary,#4f46e5);cursor:pointer;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:background-color .12s ease,box-shadow .12s ease,transform .02s ease-in;box-shadow:0 1px 0 rgba(0,0,0,.04),0 6px 16px rgba(79,70,229,.18)}.btn[data-v-6e782e1a]:hover{background:var(--primary-600,#4338ca)}.btn[data-v-6e782e1a]:active{transform:translateY(1px)}.btn[data-v-6e782e1a]:disabled{opacity:.7;cursor:default;box-shadow:none}.spinner[data-v-6e782e1a]{width:16px;height:16px;border:2px solid hsla(0,0%,100%,.55);border-top-color:#fff;border-radius:50%;display:inline-block;animation:spin-6e782e1a 1s linear infinite}@keyframes spin-6e782e1a{to{transform:rotate(1turn)}}.actions[data-v-6e782e1a]{margin-top:20px;text-align:center}.back-link[data-v-6e782e1a]{font-size:14px;color:var(--primary,#4f46e5);text-decoration:none;transition:color .12s ease,-webkit-text-decoration .12s ease;transition:color .12s ease,text-decoration .12s ease;transition:color .12s ease,text-decoration .12s ease,-webkit-text-decoration .12s ease}.back-link[data-v-6e782e1a]:hover{text-decoration:underline}.page[data-v-6b3241a4]{padding:16px;background:var(--bg,#f6f7f9);color:var(--text,#1f2937);min-height:100vh}.page-header[data-v-6b3241a4]{margin:0 0 12px 0;border-bottom:1px solid var(--border,#e0e3ea);padding-bottom:8px}.h1[data-v-6b3241a4]{font-size:20px;line-height:24px;font-weight:500;margin:0}.card[data-v-6b3241a4]{background:var(--surface,#fff);border:1px solid var(--border,#e0e3ea);border-radius:10px;box-shadow:0 1px 0 rgba(0,0,0,.02);max-width:480px;padding:14px;margin:16px auto 24px}.form[data-v-6b3241a4]{display:flex;flex-direction:column;gap:12px}.field label[data-v-6b3241a4]{display:block;font-size:14px;line-height:20px;margin:0 0 6px 0;color:var(--text,#1f2937)}.field input[data-v-6b3241a4]{width:100%;height:36px;padding:8px;border:1px solid var(--border,#e0e3ea);border-radius:6px;background:var(--surface,#fff);color:var(--text,#1f2937);outline:none;transition:box-shadow .15s ease,border-color .15s ease}.field input[data-v-6b3241a4]:focus{box-shadow:0 0 0 2px var(--focus,rgba(79,70,229,.45));border-color:var(--primary,#4f46e5)}.help[data-v-6b3241a4]{font-size:12px;line-height:16px;margin:6px 0 0 0;color:var(--muted,#6b7280)}.help.danger[data-v-6b3241a4]{color:var(--danger,#ef4444)}.btn[data-v-6b3241a4]{height:40px;padding:0 14px;border-radius:6px;border:1px solid var(--primary,#4f46e5);background:transparent;color:var(--primary,#4f46e5);cursor:pointer;transition:background-color .15s ease,color .15s ease,border-color .15s ease}.btn[disabled][data-v-6b3241a4]{opacity:.6;cursor:default}.btn-primary[data-v-6b3241a4]{background:var(--primary,#4f46e5);color:#fff;border-color:var(--primary,#4f46e5)}.btn-primary[data-v-6b3241a4]:hover{background:var(--primary-600,#4338ca);border-color:var(--primary-600,#4338ca)}.spinner[data-v-6b3241a4]{display:inline-block;width:16px;height:16px;margin-right:8px;border:2px solid hsla(0,0%,100%,.6);border-top-color:#fff;border-radius:50%;animation:spin-6b3241a4 .9s linear infinite;vertical-align:-3px}@keyframes spin-6b3241a4{to{transform:rotate(1turn)}}.notice[data-v-6b3241a4]{border-radius:6px;border:1px solid var(--border,#e0e3ea);padding:10px 12px;font-size:14px;line-height:20px}.notice-success[data-v-6b3241a4]{border-color:rgba(16,185,129,.35);background:rgba(16,185,129,.08);color:var(--text,#1f2937)}.notice-danger[data-v-6b3241a4]{border-color:rgba(239,68,68,.35);background:rgba(239,68,68,.08);color:var(--text,#1f2937)}.mt-8[data-v-6b3241a4]{margin-top:8px}.mt-12[data-v-6b3241a4]{margin-top:12px}.two-col[data-v-1fc09af6]{display:grid;grid-template-columns:1fr 1fr;gap:12px}.table-row[data-v-1fc09af6]{padding:5px 0;font-size:14px}.chip-box[data-v-49c6b3e8]{border:1px solid var(--border);border-radius:8px;background:var(--surface);padding:8px}.chip[data-v-49c6b3e8]{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;padding:4px 10px;font-size:13px;line-height:1.4}.chip.active[data-v-49c6b3e8]{background:rgba(79,70,229,.12);border-color:var(--primary);color:var(--primary-600)}.muted[data-v-49c6b3e8]{color:var(--muted)}.sortable[data-v-228548a6]{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.sortable[data-v-228548a6]:hover{text-decoration:underline}.table-row[data-v-228548a6]{padding:5px 0;font-size:14px}.chip-box[data-v-771d37bf]{border:1px solid var(--border);border-radius:8px;background:var(--surface);padding:8px}.chip[data-v-771d37bf]{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;padding:4px 10px;font-size:13px;line-height:1.4}.chip.active[data-v-771d37bf]{background:rgba(79,70,229,.12);border-color:var(--primary);color:var(--primary-600)}.muted[data-v-771d37bf]{color:var(--muted)}.table-header.column-6[data-v-119284b0],.table-row.column-6[data-v-119284b0]{grid-template-columns:1.2fr 1.2fr 120px 160px 120px 100px}.table-header.column-5[data-v-119284b0],.table-row.column-5[data-v-119284b0]{grid-template-columns:1.2fr 1.2fr 120px 160px 120px}.table-row[data-v-119284b0]{padding:5px 0;font-size:14px}.sortable[data-v-119284b0]{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.sortable[data-v-119284b0]:hover{text-decoration:underline}.badge[data-v-119284b0]{display:inline-block;font-size:12px;line-height:16px;padding:2px 8px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--muted);margin-left:8px}.badge-warn[data-v-119284b0]{color:var(--warn);border-color:rgba(245,158,11,.5);background:rgba(245,158,11,.08)}.status-row[data-v-119284b0]{display:flex;align-items:center;gap:8px}.status-label[data-v-119284b0]{text-align:left}.chk-small[data-v-119284b0]{width:16px;height:16px;vertical-align:middle;accent-color:var(--primary);margin-right:8px;margin-top:0}.row-two[data-v-542ed1d4]{display:grid;grid-template-columns:1fr 1fr;gap:12px}.checkbox-field label[data-v-542ed1d4]{display:inline-flex;align-items:center;gap:8px;text-align:left}input.chk-small[data-v-542ed1d4]{width:16px;height:16px;accent-color:var(--success,#10b981)}.pwd-meter[data-v-542ed1d4]{height:6px;background:var(--border);border-radius:999px;overflow:hidden;margin-top:10px}.pwd-meter .bar[data-v-542ed1d4]{height:100%;width:0;transition:width .18s ease;background:var(--danger)}.row-two[data-v-4476a5ed]{display:grid;grid-template-columns:1fr 1fr;gap:12px}.checkbox-field label[data-v-4476a5ed]{display:inline-flex;align-items:center;gap:8px;text-align:left}input.chk-small[data-v-4476a5ed]{width:16px;height:16px;accent-color:var(--success,#10b981)}.columns[data-v-1b7a274e]{display:grid;grid-template-columns:1fr 1fr;gap:16px}.field[data-v-1b7a274e]{display:flex;flex-direction:column}label[data-v-1b7a274e]{font-weight:600;margin-bottom:4px}.search[data-v-1b7a274e]{width:100%}.footer[data-v-1b7a274e]{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%}.footer .right[data-v-1b7a274e]{display:flex;gap:8px}.btn[data-v-1b7a274e]{border:1px solid var(--border);background:var(--surface);color:var(--text);padding:8px 12px;border-radius:8px;cursor:pointer}.btn.primary[data-v-1b7a274e]{background:var(--primary);color:#fff;border-color:var(--primary)}.error[data-v-1b7a274e]{color:#dc2626}.muted[data-v-1b7a274e]{color:#6b7280;font-size:13px}.chip-box[data-v-1b7a274e]{border:1px solid var(--border);border-radius:12px;padding:8px;min-height:48px;background:var(--surface)}.chips[data-v-1b7a274e]{display:flex;flex-wrap:wrap;gap:8px}.chip[data-v-1b7a274e]{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;padding:6px 12px;font-size:13px;line-height:1.4;cursor:pointer}.chip.active[data-v-1b7a274e]{background:rgba(79,70,229,.12);border-color:var(--primary);color:var(--primary-600)}.sortable[data-v-70114254]{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.table-row[data-v-70114254]{padding:5px 0;font-size:14px;display:grid;grid-template-columns:2fr 2fr 1fr 1fr 1fr 1fr;gap:8px;border-bottom:1px solid var(--border)}.sortable[data-v-70114254]:hover{text-decoration:underline}.badge[data-v-70114254]{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;background:rgba(0,0,0,.06)}.badge[data-role="1"][data-v-70114254]{background:rgba(239,68,68,.1);color:#991b1b}.badge[data-role="2"][data-v-70114254]{background:rgba(37,99,235,.1);color:#1e3a8a}.badge[data-role="3"][data-v-70114254]{background:rgba(16,185,129,.1);color:#065f46}.timeline-card[data-v-20c23ad8]{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:12px}.timeline-header[data-v-20c23ad8]{display:flex;justify-content:space-between;font-weight:bolder;font-size:12px;color:var(--muted);line-height:16px}.timeline-header .tick[data-v-20c23ad8]{white-space:nowrap}.timeline-grid[data-v-20c23ad8]{display:grid;grid-template-columns:150px 1fr;grid-template-rows:auto 1fr;gap:2px;align-items:start;height:calc(100vh - 290px);overflow-y:scroll}.labels-col[data-v-20c23ad8]{display:flex;flex-direction:column}.row-label[data-v-20c23ad8]{font-size:12px;color:var(--muted);padding:3px 3px 3px 5px;margin:3px 4px 3px 0;border:1px solid var(--border);border-radius:8px 0 0 8px;height:54px;line-height:15px;font-weight:500;display:flex;align-items:center;justify-content:space-between}.row-label.is-student[data-v-20c23ad8]{color:var(--text)}.row-label.clickable[data-v-20c23ad8]{cursor:pointer}.row-label.is-student .row-name[data-v-20c23ad8]{font-weight:500;font-size:13px}.row-label.is-student .row-right[data-v-20c23ad8]{display:block;width:40px;text-align:right;line-height:16px}.row-label.is-student.has-notice[data-v-20c23ad8],.row-label.is-student.released[data-v-20c23ad8]{background:rgba(245,158,11,.14);border-color:var(--warn)}.row-label.is-student.present[data-v-20c23ad8]{background:rgba(16,185,129,.1);border-color:var(--success)}.notice-icon[data-v-20c23ad8],.release-icon[data-v-20c23ad8]{color:var(--warn);font-size:14px}.late-badge[data-v-20c23ad8]{font-size:10px;padding:1px 4px;border-radius:10px;border:1px solid var(--danger);background:var(--danger);color:#fff;font-weight:600;line-height:1}.timeline-col[data-v-20c23ad8]{position:relative;display:flex;flex-direction:column;background:var(--bg);border:1px dashed var(--border)}.lane[data-v-20c23ad8]{position:relative;height:60px;border-bottom:1px dashed var(--border)}.lane[data-v-20c23ad8]:last-child{border-bottom:none}.block[data-v-20c23ad8]{position:absolute;top:3px;height:calc(100% - 6px);border:1px solid var(--border);border-radius:3px;background:var(--surface);padding:3px;box-sizing:border-box;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between}.block.clickable[data-v-20c23ad8]{cursor:pointer}.block.mandatory[data-v-20c23ad8]{background:rgba(37,99,235,.08)}.block.optional[data-v-20c23ad8]{background:rgba(16,185,129,.08)}.block.canceled[data-v-20c23ad8]{padding:0;border-color:var(--danger);background-image:repeating-linear-gradient(45deg,rgba(239,68,68,.25),rgba(239,68,68,.25) 6px,transparent 0,transparent 12px)}.block.canceled .block-label[data-v-20c23ad8]{display:none}.block-label[data-v-20c23ad8]{font-size:12px;line-height:1.3;gap:6px}.meta[data-v-20c23ad8]{font-size:10px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sep[data-v-20c23ad8]{color:var(--muted)}.block-meta[data-v-20c23ad8]{display:flex;gap:6px;align-items:center}.chip[data-v-20c23ad8]{font-size:12px;padding:2px 8px;border-radius:999px;background:var(--surface);border:1px solid var(--border)}.now-marker[data-v-20c23ad8]{position:absolute;top:0;bottom:0;width:2px;background:var(--primary-600);pointer-events:none;z-index:1}.badge[data-v-20c23ad8]{font-size:12px;padding:2px 8px;border-radius:999px;border:1px solid var(--border)}.badge-info[data-v-20c23ad8]{background:rgba(37,99,235,.1);border-color:#93c5fd}.badge-warn[data-v-20c23ad8]{background:rgba(245,158,11,.1);border-color:#fcd34d}.badge-success[data-v-20c23ad8]{background:rgba(16,185,129,.1);border-color:#6ee7b7}.badge-danger[data-v-20c23ad8]{background:rgba(239,68,68,.1);border-color:#fca5a5}.muted[data-v-20c23ad8]{color:var(--muted)}.block.future[data-v-20c23ad8]:not(.canceled){background:hsla(220,9%,46%,.1)}.block.past[data-v-20c23ad8]:not(.canceled){background:rgba(16,185,129,.2)}.block.ready[data-v-20c23ad8]{border-style:dashed;background:hsla(220,9%,46%,.05)!important}.block.started[data-v-20c23ad8]{border-style:solid}.block.mandatory[data-v-20c23ad8]:not(.canceled){border-bottom-width:2px;border-bottom-color:var(--text)}.block.completed[data-v-20c23ad8]:not(.canceled){background:rgba(16,185,129,.5)!important}.block.completed[data-v-20c23ad8]:not(.canceled):after{content:"✓";position:absolute;right:1px;bottom:1px;font-size:14px;font-weight:700;color:var(--primary-600);line-height:1;pointer-events:none}.block.st-bg-gray[data-v-20c23ad8]:not(.canceled){background:hsla(220,9%,46%,.12)}.block.st-bg-red[data-v-20c23ad8]:not(.canceled){background:hsla(0,71%,80%,.35)}.block.st-bg-green[data-v-20c23ad8]:not(.canceled){background:rgba(16,185,129,.14)}.block.st-bl-green[data-v-20c23ad8]{border-left:2px solid var(--success)}.block.st-br-green[data-v-20c23ad8]{border-right:2px solid var(--success)}.block.st-bl-red[data-v-20c23ad8]{border-left:2px solid var(--danger)}.block.st-br-yellow[data-v-20c23ad8]{border-right:2px solid var(--warn)}.block.st-br-dashed[data-v-20c23ad8]{border-right-style:dashed}.block.st-bl-dashed[data-v-20c23ad8]{border-left-style:dashed}.block.st-paused[data-v-20c23ad8]{border-left:1px solid var(--border);border-right:1px solid var(--border)}.muted[data-v-407c9b0c]{color:var(--muted)}.notice[data-v-407c9b0c]{border:1px solid var(--border);border-radius:6px;padding:10px 12px}.notice-danger[data-v-407c9b0c]{background:rgba(239,68,68,.1);border-color:#fca5a5}.small[data-v-407c9b0c]{font-size:12px;line-height:16px}.mt-12[data-v-407c9b0c]{margin-top:12px}.btn[data-v-407c9b0c]{padding:.35rem .6rem;border:1px solid var(--border);border-radius:6px;background:#fff;cursor:pointer}.btn-warn[data-v-407c9b0c]{background:var(--warn);color:#fff;border-color:var(--warn)}.spinner[data-v-407c9b0c]{display:inline-block;width:16px;height:16px;border:2px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin-407c9b0c 1s linear infinite}.dialog-body-inner[data-v-407c9b0c]{font-size:13px}@keyframes spin-407c9b0c{to{transform:rotate(1turn)}}.toolbar[data-v-16763c1b]{display:flex;gap:8px;justify-content:end;align-items:center;position:relative}.toolbar-actions[data-v-16763c1b]{display:inline-flex;gap:8px;justify-content:flex-end}.add-student[data-v-16763c1b]{display:inline-flex;gap:8px;align-items:center;flex-wrap:wrap;margin-right:auto}.as-fullscreen[data-v-16763c1b]{position:fixed;inset:0;left:0;top:0;width:100vw;height:100vh;z-index:100;display:grid;align-items:stretch}.as-fullscreen[data-v-16763c1b] .dialog{width:100%;height:100%;max-width:100vw;max-height:100vh;margin:0;border-radius:0}.as-fullscreen .att-table[data-v-16763c1b]{height:90%}.as-fullscreen .att-body[data-v-16763c1b]{max-height:calc(100vh - 140px)}.bulk-actions[data-v-16763c1b]{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-right:70px}.att-table[data-v-16763c1b]{display:grid;grid-template-rows:auto auto 1fr;gap:8px;border-bottom:1px solid var(--border)}.small[data-v-16763c1b]{font-size:12px;line-height:1.4}.sep[data-v-16763c1b]{margin-left:12px}.att-filters[data-v-16763c1b]{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:0;padding-bottom:5px}.att-header[data-v-16763c1b]{display:grid;gap:8px;align-items:center;padding:4px 0 2px 0;border-bottom:1px solid var(--border);grid-template-columns:1.8fr 220px 220px 100px 250px 100px;position:sticky;top:0;background:var(--surface);z-index:1;width:calc(100% - 10px)}.att-body[data-v-16763c1b]{overflow-y:auto;max-height:52vh;padding-bottom:2px}.att-body.fullscreen[data-v-16763c1b]{max-height:78vh}.att-row[data-v-16763c1b]{display:grid;gap:8px;align-items:center;padding:4px 0 2px 0;border-bottom:1px solid var(--border);grid-template-columns:1.8fr 220px 220px 100px 250px 100px;width:calc(100% - 10px)}.att-empty[data-v-16763c1b]{padding:8px 0;margin:0}.title-expand[data-v-16763c1b]{position:absolute;right:75px;top:50%;transform:translateY(-50%);height:38px;width:48px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;cursor:pointer;border:1px solid var(--border);background:var(--surface);z-index:2}.title-expand[data-v-16763c1b]:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.input-slim[data-v-16763c1b]{width:300px;height:30px;padding:.25rem .45rem;border:1px solid var(--border);border-radius:.55rem;font-size:.9rem;background:var(--surface)}.btn-slim[data-v-16763c1b]{height:30px;padding:.25rem .5rem}.filter-item[data-v-16763c1b]{margin-left:2rem}.select-slim[data-v-16763c1b]{height:30px;padding:.25rem .45rem;border:1px solid var(--border);border-radius:.55rem;font-size:.9rem;background:var(--surface);width:100px}.inline[data-v-16763c1b]{display:inline-flex;gap:8px;align-items:center;flex-wrap:wrap}.chk[data-v-16763c1b]{display:inline-flex;align-items:center;gap:8px;accent-color:var(--primary)}.chk input[type=checkbox][data-v-16763c1b]{width:20px;height:20px}.muted[data-v-16763c1b]{color:var(--muted)}.row-actions[data-v-16763c1b]{display:inline-flex;gap:8px;justify-content:flex-end}.release-row[data-v-16763c1b]{grid-column:3/-1;display:grid;grid-template-columns:500px auto;gap:8px;align-items:center;padding:4px 0 2px 0}.release-actions[data-v-16763c1b]{display:inline-flex;gap:8px;justify-content:flex-end}.spinner[data-v-16763c1b]{display:inline-block;width:16px;height:16px;border:2px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin-16763c1b 1s linear infinite}@keyframes spin-16763c1b{to{transform:rotate(1turn)}}.btn[data-v-16763c1b]{padding:.35rem .6rem;border:1px solid var(--border);border-radius:6px;background:#fff;cursor:pointer}.btn-primary[data-v-16763c1b]{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-warn[data-v-16763c1b]{background:var(--warn);color:#fff;border-color:var(--warn)}.mt-12[data-v-16763c1b]{margin-top:12px}.text-right[data-v-16763c1b]{text-align:right}.text-center[data-v-16763c1b]{text-align:center}[data-v-16763c1b] input.flatpickr-datetime{box-sizing:border-box;height:28px;padding:3px;border:1px solid #d0d5dd;border-radius:.55rem;line-height:1.25;font-size:14px;background:#fff;width:170px}[data-v-16763c1b] input.flatpickr-datetime::-moz-placeholder{color:#d6d6d6}[data-v-16763c1b] input.flatpickr-datetime::placeholder{color:#d6d6d6}[data-v-16763c1b] input.flatpickr-datetime.only--time{width:120px}.dialog-footer[data-v-16763c1b]{display:none}.att-row.row-warn[data-v-16763c1b]{background:color-mix(in srgb,var(--warn) 12%,var(--surface));border-left:3px solid var(--warn)}.badge-notice[data-v-16763c1b]{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border:1px solid var(--border);border-radius:999px;font-size:12px;line-height:1.4;color:var(--text)}.badge-notice i[data-v-16763c1b]{color:var(--info)}.timeline[data-v-4e0b9ea8]{display:grid;gap:10px;position:relative}.pair-row[data-v-4e0b9ea8]{display:grid;grid-template-columns:1fr auto;align-items:center;gap:12px;padding:4px 0;border-bottom:1px solid var(--border)}.pair-left[data-v-4e0b9ea8]{font-size:14px;line-height:20px}.pair-left.underline[data-v-4e0b9ea8]{text-decoration:underline}.pair-right[data-v-4e0b9ea8]{font-size:14px;line-height:20px;text-align:right;white-space:nowrap}.tl-special[data-v-4e0b9ea8]{font-size:14px;line-height:20px;color:var(--text);display:flex;justify-content:space-between;align-items:center;padding:2px 0 6px 0;border-bottom:1px solid var(--border)}.tl-row[data-v-4e0b9ea8]{display:grid;grid-template-columns:100px 24px 1fr;align-items:start;gap:8px;min-height:32px}.tl-time[data-v-4e0b9ea8]{font-size:12px;color:var(--muted);line-height:20px}.tl-line[data-v-4e0b9ea8]{position:relative;height:100%;min-height:24px}.tl-dot[data-v-4e0b9ea8]{position:absolute;left:50%;transform:translate(-50%,5px);width:10px;height:10px;border-radius:999px;border:2px solid var(--border-strong);background:#fff;z-index:2}.tl-rail[data-v-4e0b9ea8]{position:absolute;left:50%;transform:translateX(-50%);top:-10px;bottom:-10px;width:2px;background:var(--border-strong);z-index:1}.dot-in[data-v-4e0b9ea8]{border-color:var(--success)}.dot-out[data-v-4e0b9ea8]{border-color:var(--primary)}.dot-release[data-v-4e0b9ea8]{border-color:var(--warn);background:#f59e0b}.dot-success[data-v-4e0b9ea8]{border-color:var(--success);background:var(--success)}.dot-danger[data-v-4e0b9ea8]{border-color:var(--danger)}.dot-danger-fill[data-v-4e0b9ea8]{border-color:var(--danger);background:var(--danger)}.tl-content[data-v-4e0b9ea8]{display:grid;gap:2px}.tl-title[data-v-4e0b9ea8]{font-size:14px;line-height:20px}.tl-meta[data-v-4e0b9ea8]{font-size:12px;line-height:16px}.tl-meta.late[data-v-4e0b9ea8]{padding:1px 6px}.late-badge[data-v-4e0b9ea8],.tl-meta.late[data-v-4e0b9ea8]{color:#fff;background:var(--danger);border:1px solid var(--danger);border-radius:999px;display:inline-block}.late-badge[data-v-4e0b9ea8]{font-size:12px;line-height:16px;font-weight:600;padding:1px 8px;margin-left:6px;vertical-align:middle}.late-badge.soft[data-v-4e0b9ea8]{background:transparent;color:var(--danger);border-color:var(--danger)}.now-layer[data-v-4e0b9ea8]{position:absolute;inset:0;display:grid;grid-template-columns:minmax(220px,1fr) 24px 1fr;pointer-events:none;z-index:4}.now-layer .now-col[data-v-4e0b9ea8]{grid-column:2;position:relative}.now-layer .now-arrow[data-v-4e0b9ea8]{position:absolute;left:-12px;width:0;height:0;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:8px solid var(--primary)}@keyframes nowPulse-4e0b9ea8{0%{opacity:.85;filter:brightness(1)}50%{opacity:1;filter:brightness(1.1)}to{opacity:.85;filter:brightness(1)}}.tl-summary[data-v-4e0b9ea8]{margin-top:8px;padding-top:8px;border-top:1px solid var(--border);display:flex;gap:8px;align-items:center;justify-content:flex-end}.late-total[data-v-4e0b9ea8]{font-weight:600;padding:2px 8px}.muted[data-v-4e0b9ea8]{color:var(--muted)}.tl-row-rail[data-v-4e0b9ea8]{display:grid;grid-template-columns:minmax(220px,1fr) 24px 1fr;align-items:start;gap:8px;min-height:32px;padding:4px 0}.tl-left[data-v-4e0b9ea8]{font-size:14px;line-height:20px}.tl-left .underline[data-v-4e0b9ea8],.tl-left.underline[data-v-4e0b9ea8]{text-decoration:underline}.tl-left em[data-v-4e0b9ea8]{font-style:italic}.tl-right[data-v-4e0b9ea8]{font-size:14px;line-height:20px;white-space:nowrap}.accept-text[data-v-4e0b9ea8]{display:inline-flex;align-items:center;gap:6px}.info-icon[data-v-4e0b9ea8]{color:var(--info);flex:0 0 auto}.warn-row[data-v-4e0b9ea8]{background:color-mix(in srgb,var(--warn) 10%,transparent);border-radius:6px}.tl-accept-banner[data-v-4e0b9ea8]{grid-column:1/-1;display:inline-flex;align-items:center;gap:8px;padding:8px 10px;background:color-mix(in srgb,var(--warn) 12%,transparent);border:1px solid color-mix(in srgb,var(--warn) 40%,transparent);border-radius:6px;color:var(--text)}.tl-accept-banner .info-icon[data-v-4e0b9ea8]{color:var(--warn);flex:0 0 auto}.page[data-v-554c3427]{padding:0;background:var(--bg);color:var(--text)}.page-header[data-v-554c3427]{border-bottom:1px solid var(--border);padding-bottom:8px;margin-bottom:12px}.h1[data-v-554c3427]{font-size:26px;line-height:38px;font-weight:600;margin:0}.card[data-v-554c3427]{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px;margin-bottom:0;height:calc(100vh - 160px)}.toolbar[data-v-554c3427]{display:flex;gap:12px;margin-bottom:12px}.field[data-v-554c3427]{display:flex;flex-direction:column;gap:6px;margin-bottom:0}.label[data-v-554c3427]{font-size:12px;color:var(--muted)}.input[data-v-554c3427]{height:38px;padding:8px;border:1px solid var(--border);border-radius:8px;background:var(--surface)}.input[data-v-554c3427]:focus{box-shadow:0 0 0 3px var(--focus);border-color:var(--primary);outline:none}.notice[data-v-554c3427]{border:1px solid var(--border);border-radius:6px;padding:10px 12px}.notice-danger[data-v-554c3427]{background:rgba(239,68,68,.1);border-color:#fca5a5}.mt-12[data-v-554c3427]{margin-top:12px}.spinner[data-v-554c3427]{display:inline-block;width:16px;height:16px;border:2px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin-554c3427 1s linear infinite}@keyframes spin-554c3427{to{transform:rotate(1turn)}}.segmented[data-v-554c3427]{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--surface)}.segmented-btn[data-v-554c3427]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--text);padding:8px 0;cursor:pointer;line-height:20px;width:100px}.segmented-btn[data-v-554c3427]:hover{background:rgba(79,70,229,.06)}.segmented-btn.active[data-v-554c3427]{background:var(--primary);color:#fff}.segmented-btn[data-v-554c3427]:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.timelines[data-v-554c3427]{width:100%}.page[data-v-f00ab3a8]{padding:16px;background:var(--bg);color:var(--text)}.page-header[data-v-f00ab3a8]{border-bottom:1px solid var(--border);padding-bottom:8px;margin-bottom:12px}.h1[data-v-f00ab3a8]{font-size:20px;line-height:24px;font-weight:600;margin:0}.card[data-v-f00ab3a8]{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px}.toolbar[data-v-f00ab3a8]{display:flex;gap:12px;align-items:end;margin-bottom:12px}.field[data-v-f00ab3a8]{display:flex;flex-direction:column;gap:6px}.label[data-v-f00ab3a8]{font-size:12px;color:var(--muted)}.input[data-v-f00ab3a8]{height:38px;padding:8px;border:1px solid var(--border);border-radius:8px;background:var(--surface)}.input[data-v-f00ab3a8]:focus{box-shadow:0 0 0 3px var(--focus);border-color:var(--primary);outline:none}.event-list[data-v-f00ab3a8]{list-style:none;margin:0;padding:0}.event-item[data-v-f00ab3a8]{display:grid;grid-template-columns:1fr;gap:12px;padding:12px 0;border-bottom:1px solid var(--border)}.event-title[data-v-f00ab3a8]{font-size:14px}.event-meta[data-v-f00ab3a8]{display:flex;gap:8px;align-items:center}.badge[data-v-f00ab3a8]{font-size:12px;padding:2px 8px;border-radius:999px;border:1px solid var(--border)}.badge-info[data-v-f00ab3a8]{background:rgba(37,99,235,.1);border-color:#93c5fd}.badge-warn[data-v-f00ab3a8]{background:rgba(245,158,11,.1);border-color:#fcd34d}.badge-success[data-v-f00ab3a8]{background:rgba(16,185,129,.1);border-color:#6ee7b7}.badge-danger[data-v-f00ab3a8]{background:rgba(239,68,68,.1);border-color:#fca5a5}.muted[data-v-f00ab3a8]{color:var(--muted)}.chip[data-v-f00ab3a8]{font-size:12px;padding:2px 8px;border-radius:999px;background:var(--bg);border:1px solid var(--border)}.modal-backdrop[data-v-529dfe58]{position:fixed;inset:0;background:rgba(2,6,23,.55);display:grid;place-items:center;z-index:1000}.modal[data-v-529dfe58]{width:min(980px,94vw);background:#fff;border-radius:16px;box-shadow:0 12px 40px rgba(2,6,23,.25);display:grid;grid-template-rows:auto 1fr auto;max-height:92vh}.modal__header[data-v-529dfe58]{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.2rem;border-bottom:1px solid #e5e7eb}.modal__title[data-v-529dfe58]{margin:0;font-size:1.15rem;font-weight:700;color:#0f172a}.icon-btn[data-v-529dfe58]{border:0;background:transparent;font-size:1.4rem;line-height:1;cursor:pointer;color:#334155}.modal__body[data-v-529dfe58]{padding:1rem 1.2rem;overflow:auto}.modal__footer[data-v-529dfe58]{padding:.9rem 1.2rem;border-top:1px solid #e5e7eb;display:flex;justify-content:flex-end;gap:.6rem}.row[data-v-529dfe58]{display:grid;grid-template-columns:1fr 1fr;gap:.9rem 1rem}.row--wrap[data-v-529dfe58]{grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}.row--single[data-v-529dfe58]{grid-template-columns:1fr}.col[data-v-529dfe58]{display:grid;gap:.35rem}.col--date[data-v-529dfe58],.col--time[data-v-529dfe58]{min-width:5rem;padding-right:0}.col--datetime[data-v-529dfe58]{min-width:14rem;padding-right:0}.flatpickr-datetime[data-v-529dfe58] .flatpickr-input{width:100%;padding:.55rem .7rem;border:1px solid #d0d5dd;border-radius:.55rem;font-size:.95rem;background:#fff;height:2.2rem;line-height:1.2rem}.control.is-invalid[data-v-529dfe58] .flatpickr-input,.input.is-invalid[data-v-529dfe58],select.is-invalid[data-v-529dfe58]{border-color:#ef4444!important;box-shadow:0 0 0 1px rgba(239,68,68,.08)}.is-invalid[data-v-529dfe58]::-moz-placeholder{color:#ef4444}.is-invalid[data-v-529dfe58]::placeholder{color:#ef4444}.alert--error ul[data-v-529dfe58]{margin:.25rem 0 0;padding-left:1.2rem}.col--checkbox[data-v-529dfe58]{align-content:end}.label[data-v-529dfe58]{font-weight:600;font-size:.9rem;color:#334155}.input[data-v-529dfe58],select[data-v-529dfe58]{width:100%;padding:.55rem .7rem;border:1px solid #d0d5dd;border-radius:.55rem;font-size:.95rem;background:#fff}.combo[data-v-529dfe58]{position:relative}.hint[data-v-529dfe58]{color:#6b7280;font-size:.8rem}.btn[data-v-529dfe58]{padding:.55rem .9rem;border:1px solid var(--border);border-radius:.55rem;background:var(--surface);color:var(--text);cursor:pointer}.btn[data-v-529dfe58]:hover{filter:brightness(1.02)}.btn[data-v-529dfe58]:disabled{opacity:.65;cursor:not-allowed}.btn-ghost[data-v-529dfe58]{background:transparent}.alert[data-v-529dfe58]{padding:.6rem .8rem;border-radius:.55rem;margin-bottom:.8rem;font-size:.9rem}.alert--error[data-v-529dfe58]{background:#fee2e2;color:#7f1d1d;border:1px solid #fecaca}[data-v-529dfe58]:host,[data-v-529dfe58]:root{--surface:#f8fafc;--text:#0f172a;--border:#e5e7eb;--primary:#2563eb}.btn-primary[data-v-529dfe58]{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-primary[data-v-529dfe58]:hover{filter:brightness(.98)}[data-v-529dfe58] input.flatpickr-datetime{box-sizing:border-box;height:38px;padding:.45rem .65rem;border:1px solid #d0d5dd;border-radius:.55rem;line-height:1.25;font-size:.95rem;background:#fff;width:100%}.modal-backdrop[data-v-57470a66]{position:fixed;inset:0;background:rgba(2,6,23,.55);display:grid;place-items:center;z-index:1000}.modal[data-v-57470a66]{width:min(980px,94vw);background:#fff;border-radius:16px;box-shadow:0 12px 40px rgba(2,6,23,.25);display:grid;grid-template-rows:auto 1fr auto;max-height:92vh}.modal__header[data-v-57470a66]{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.2rem;border-bottom:1px solid #e5e7eb}.modal__title[data-v-57470a66]{margin:0;font-size:1.15rem;font-weight:700;color:#0f172a}.icon-btn[data-v-57470a66]{border:0;background:transparent;font-size:1.4rem;line-height:1;cursor:pointer;color:#334155}.modal__body[data-v-57470a66]{padding:1rem 1.2rem;overflow:auto}.modal__footer[data-v-57470a66]{padding:.9rem 1.2rem;border-top:1px solid #e5e7eb;display:flex;justify-content:flex-end;gap:.6rem}.row[data-v-57470a66]{display:grid;grid-template-columns:1fr 1fr;gap:.9rem 1rem}.row--wrap[data-v-57470a66]{grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}.row--single[data-v-57470a66]{grid-template-columns:1fr}.col[data-v-57470a66]{display:grid;gap:.35rem}.col--datetime[data-v-57470a66]{min-width:14rem;padding-right:0}.flatpickr-datetime[data-v-57470a66] .flatpickr-input{width:100%;padding:.55rem .7rem;border:1px solid #d0d5dd;border-radius:.55rem;font-size:.95rem;background:#fff;height:2.2rem;line-height:1.2rem}[data-v-57470a66] input.flatpickr-datetime{box-sizing:border-box;height:38px;padding:.45rem .65rem;border:1px solid #d0d5dd;border-radius:.55rem;line-height:1.25;font-size:.95rem;background:#fff;width:100%}.input[data-v-57470a66],select[data-v-57470a66]{width:100%;padding:.55rem .7rem;border:1px solid #d0d5dd;border-radius:.55rem;font-size:.95rem;background:#fff}.control.is-invalid[data-v-57470a66] .flatpickr-input,.input.is-invalid[data-v-57470a66],select.is-invalid[data-v-57470a66]{border-color:#ef4444!important;box-shadow:0 0 0 1px rgba(239,68,68,.08)}.is-invalid[data-v-57470a66]::-moz-placeholder{color:#ef4444}.is-invalid[data-v-57470a66]::placeholder{color:#ef4444}.hint[data-v-57470a66]{color:#6b7280;font-size:.8rem}.alert[data-v-57470a66]{padding:.6rem .8rem;border-radius:.55rem;margin-bottom:.8rem;font-size:.9rem}.alert--error[data-v-57470a66]{background:#fee2e2;color:#7f1d1d;border:1px solid #fecaca}.btn[data-v-57470a66]{padding:.55rem .9rem;border:1px solid var(--border);border-radius:.55rem;background:var(--surface);color:var(--text);cursor:pointer}.btn-ghost[data-v-57470a66]{background:transparent}.btn[data-v-57470a66]:disabled{opacity:.65;cursor:not-allowed}[data-v-57470a66]:host,[data-v-57470a66]:root{--surface:#f8fafc;--text:#0f172a;--border:#e5e7eb;--primary:#2563eb}.btn-primary[data-v-57470a66]{background:var(--primary);color:#fff;border-color:var(--primary)}.modal-backdrop[data-v-761b1714]{position:fixed;inset:0;background:rgba(2,6,23,.55);display:grid;place-items:center;z-index:1000}.modal[data-v-761b1714]{width:min(980px,94vw);background:#fff;border-radius:16px;box-shadow:0 12px 40px rgba(2,6,23,.25);display:grid;grid-template-rows:auto 1fr auto;max-height:92vh}.modal__header[data-v-761b1714]{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.2rem;border-bottom:1px solid #e5e7eb}.modal__title[data-v-761b1714]{margin:0;font-size:1.15rem;font-weight:700;color:#0f172a}.icon-btn[data-v-761b1714]{border:0;background:transparent;font-size:1.4rem;line-height:1;cursor:pointer;color:#334155}.modal__body[data-v-761b1714]{padding:1rem 1.2rem;overflow:auto}.modal__footer[data-v-761b1714]{padding:.9rem 1.2rem;border-top:1px solid #e5e7eb;display:flex;justify-content:flex-end;gap:.6rem}.row[data-v-761b1714]{display:grid;grid-template-columns:1fr 1fr;gap:.9rem 1rem}.row--wrap[data-v-761b1714]{grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}.row--single[data-v-761b1714]{grid-template-columns:1fr}.col[data-v-761b1714]{display:grid;gap:.35rem}.col--datetime[data-v-761b1714]{min-width:14rem;padding-right:0}.flatpickr-datetime[data-v-761b1714] .flatpickr-input{width:100%;padding:.55rem .7rem;border:1px solid #d0d5dd;border-radius:.55rem;font-size:.95rem;background:#fff;height:2.2rem;line-height:1.2rem}[data-v-761b1714] input.flatpickr-datetime{box-sizing:border-box;height:38px;padding:.45rem .65rem;border:1px solid #d0d5dd;border-radius:.55rem;line-height:1.25;font-size:.95rem;background:#fff;width:100%}.input[data-v-761b1714],select[data-v-761b1714]{width:100%;padding:.55rem .7rem;border:1px solid #d0d5dd;border-radius:.55rem;font-size:.95rem;background:#fff}.control.is-invalid[data-v-761b1714] .flatpickr-input,.input.is-invalid[data-v-761b1714],select.is-invalid[data-v-761b1714]{border-color:#ef4444!important;box-shadow:0 0 0 1px rgba(239,68,68,.08)}.is-invalid[data-v-761b1714]::-moz-placeholder{color:#ef4444}.is-invalid[data-v-761b1714]::placeholder{color:#ef4444}.hint[data-v-761b1714]{color:#6b7280;font-size:.8rem}.alert[data-v-761b1714]{padding:.6rem .8rem;border-radius:.55rem;margin-bottom:.8rem;font-size:.9rem}.alert--error[data-v-761b1714]{background:#fee2e2;color:#7f1d1d;border:1px solid #fecaca}.btn[data-v-761b1714]{padding:.55rem .9rem;border:1px solid var(--border);border-radius:.55rem;background:var(--surface);color:var(--text);cursor:pointer}.btn-ghost[data-v-761b1714]{background:transparent}.btn[data-v-761b1714]:disabled{opacity:.65;cursor:not-allowed}[data-v-761b1714]:host,[data-v-761b1714]:root{--surface:#f8fafc;--text:#0f172a;--border:#e5e7eb;--primary:#2563eb}.btn-primary[data-v-761b1714]{background:var(--primary);color:#fff;border-color:var(--primary)}.chip-box[data-v-4fcafd55]{border:1px solid var(--border);border-radius:8px;background:var(--surface);padding:8px}.chip[data-v-4fcafd55]{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;padding:4px 10px;font-size:13px;line-height:1.4}.chip.active[data-v-4fcafd55]{background:rgba(79,70,229,.12);border-color:var(--primary);color:var(--primary-600)}.muted[data-v-4fcafd55]{color:var(--muted)}.help[data-v-4fcafd55]{font-size:12px;line-height:16px;color:var(--muted)}.notice-warn[data-v-4fcafd55]{background:color-mix(in srgb,var(--warn) 12%,var(--surface));border-color:color-mix(in srgb,var(--warn) 40%,var(--border));list-style:disc;padding-left:20px}.notice-warn li+li[data-v-4fcafd55]{margin-top:4px}.dialog-scroll[data-v-4fcafd55]{max-height:80vh;overflow:auto}[data-v-9838daae]:root{--surface:#fff;--overlay:rgba(0,0,0,.35);--border:#e2e8f0;--text-muted:#64748b;--primary:#2563eb;--primary-600:#1d4ed8}.dialog-overlay[data-v-9838daae]{position:fixed;inset:0;background:var(--overlay);display:flex;align-items:center;justify-content:center;padding:12px;z-index:1000}.dialog-card[data-v-9838daae]{width:min(560px,100%);background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 12px 34px rgba(0,0,0,.2);padding:14px 14px 12px;outline:none}.page-header[data-v-9838daae]{border-bottom:1px solid var(--border);padding-bottom:8px;margin-bottom:12px}.h1[data-v-9838daae]{font-size:20px;line-height:24px;font-weight:600;margin:0}.form[data-v-9838daae]{display:grid;gap:12px}.field[data-v-9838daae]{display:grid;gap:6px}.input[data-v-9838daae],select[data-v-9838daae]{width:100%;height:38px;padding:0 10px;border:1px solid var(--border);border-radius:8px;background:#fff;font-size:14px}input#reasonText[data-v-9838daae]{height:38px}.help[data-v-9838daae]{margin:0;color:var(--text-muted);font-size:12px}.actions[data-v-9838daae]{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.btn[data-v-9838daae]{height:38px;padding:0 12px;border-radius:8px;border:1px solid var(--border);background:var(--surface);cursor:pointer}.btn-primary[data-v-9838daae]{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-primary[data-v-9838daae]:hover{background:var(--primary-600)}.spinner[data-v-9838daae]{width:16px;height:16px;border:2px solid hsla(0,0%,100%,.45);border-top-color:#fff;border-radius:50%;display:inline-block;margin-right:8px;animation:spin-9838daae 1s linear infinite;vertical-align:-3px}@keyframes spin-9838daae{to{transform:rotate(1turn)}}.notice[data-v-9838daae]{border:1px solid var(--border);border-radius:6px;padding:10px 12px}.notice-danger[data-v-9838daae]{background:rgba(239,68,68,.1);border-color:#fca5a5;color:#991b1b}.mt-12[data-v-9838daae]{margin-top:12px}.table-header,.table-row{gap:8px;border-bottom:1px solid var(--border);padding:5px 0;font-size:14px}.row-actions{display:inline-flex}.btn{padding:.35rem .6rem}.btn-primary{border:1px solid var(--primary)}.btn-danger{background:#fee2e2;border:1px solid #fecaca;color:#7f1d1d}.btn-success{background:#dcfce7;border:1px solid #bbf7d0;color:#166534}.icon-btn{height:30px;width:30px;border-radius:5px;border:1px solid var(--border);background:var(--surface-50)}.icon-btn:hover{background:var(--surface-100)}.offer-title{font-weight:600}.offer-title--completed{font-weight:400}.offer-title--canceled{font-weight:400;text-decoration:line-through}.spinner{display:inline-block;width:18px;height:18px;border:2px solid var(--border);border-top-color:var(--primary);border-radius:50%}.small{font-size:12px;line-height:16px}.row-conflict{background:rgba(239,68,68,.08);position:relative}.row-conflict:before{content:"";position:absolute;left:-3px;top:0;bottom:0;width:3px;background:var(--danger);border-radius:0 2px 2px 0}.icon-btn.attendance-btn{background:rgba(16,185,129,.12);border:1px solid rgba(16,185,129,.35);color:var(--text);height:30px;width:30px;border-radius:5px;display:inline-flex;align-items:center;justify-content:center}.icon-btn.attendance-btn:hover{background:rgba(16,185,129,.18)}.table-header[data-v-534db858],.table-row[data-v-534db858]{display:grid;align-items:center;gap:8px;border-bottom:1px solid var(--border);padding:5px 0;font-size:14px}.row-actions[data-v-534db858]{display:inline-flex;gap:8px;justify-content:flex-end}.row-conflict[data-v-534db858]{background:rgba(239,68,68,.08);position:relative}.row-conflict[data-v-534db858]:before{content:"";position:absolute;left:-3px;top:0;bottom:0;width:3px;background:var(--danger);border-radius:0 2px 2px 0}.muted[data-v-534db858]{color:var(--muted)}.small[data-v-534db858]{font-size:12px;line-height:16px}.notice[data-v-534db858]{border:1px solid var(--border);border-radius:6px;padding:10px 12px}.notice-danger[data-v-534db858]{background:rgba(239,68,68,.1);border-color:#fca5a5}.mt-12[data-v-534db858]{margin-top:12px}.sortable[data-v-534db858]{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.sortable[data-v-534db858]:hover{text-decoration:underline}.pill[data-v-534db858]{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;border:1px solid var(--border)}.pill-mandatory[data-v-534db858]{background:rgba(239,68,68,.1);border-color:#fca5a5;color:var(--text)}.pill-optional[data-v-534db858]{background:var(--bg);color:var(--muted)}.spinner[data-v-534db858]{display:inline-block;width:16px;height:16px;border:2px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin-534db858 1s linear infinite}@keyframes spin-534db858{to{transform:rotate(1turn)}}.btn[data-v-534db858]{padding:.35rem .6rem;border:1px solid var(--border);border-radius:6px;background:#fff;cursor:pointer}.btn-primary[data-v-534db858]{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-warn[data-v-534db858]{background:var(--warn)}.offer-title[data-v-534db858]{font-weight:700}.offer-title--completed[data-v-534db858]{font-weight:400}.offer-title--canceled[data-v-534db858]{font-weight:400;text-decoration:line-through}.icon-btn.attendance-btn[data-v-534db858]{background:rgba(16,185,129,.12);border:1px solid rgba(16,185,129,.35);color:var(--text);height:30px;width:30px;border-radius:5px;justify-content:center}.icon-btn.attendance-btn[data-v-534db858]:hover{background:rgba(16,185,129,.18)}.field[data-v-4b4c6d1a]{margin-bottom:1rem}.content[data-v-54aace5c]{display:flex;flex-direction:column;gap:12px}.meta[data-v-54aace5c]{display:grid;grid-template-columns:1fr;gap:6px;border:1px solid var(--border);border-radius:8px;padding:10px 12px;background:var(--surface)}.meta-row[data-v-54aace5c]{display:grid;grid-template-columns:120px 1fr;gap:8px;align-items:center}.label[data-v-54aace5c]{color:var(--muted);font-size:12px}.value[data-v-54aace5c]{color:var(--text);font-size:14px}.message[data-v-54aace5c]{margin:0;font-size:14px;line-height:1.45}.thumb-strip[data-v-54aace5c]{margin-top:12px;border-top:1px solid var(--border);padding-top:10px;display:flex;gap:8px;overflow-x:auto}.thumb[data-v-54aace5c]{flex:0 0 auto;width:120px;height:84px;border:1px solid var(--border);border-radius:8px;background:var(--surface);display:flex;align-items:center;justify-content:center;cursor:pointer}.thumb[data-v-54aace5c]:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.thumb img[data-v-54aace5c]{max-width:100%;max-height:100%;-o-object-fit:cover;object-fit:cover;border-radius:6px}.thumb-doc[data-v-54aace5c]{display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--muted);padding:6px;text-align:center}.thumb-doc .name[data-v-54aace5c]{font-size:12px;line-height:1.2;word-break:break-all;color:var(--text)}.footer-actions[data-v-54aace5c]{display:flex;gap:8px;justify-content:flex-end;width:100%}.btn[data-v-54aace5c]{display:inline-flex;align-items:center;gap:6px}.icon[data-v-54aace5c]{display:inline-flex;align-items:center;justify-content:center}.btn-group[data-v-54aace5c]{display:inline-flex;align-items:stretch;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--surface)}.btn-group .btn[data-v-54aace5c]{height:38px;border:0;border-right:1px solid var(--border);border-radius:0;padding:0 12px}.btn-group .btn[data-v-54aace5c]:last-child{border-right:0}.btn-danger[data-v-54aace5c]{background:var(--danger);color:#fff}.btn-danger[data-v-54aace5c]:hover{background:color-mix(in srgb,var(--danger) 85%,#000 15%)}.btn-success[data-v-54aace5c]{background:var(--success);color:#fff}.btn-success[data-v-54aace5c]:hover{background:color-mix(in srgb,var(--success) 85%,#000 15%)}.viewer-overlay[data-v-54aace5c]{position:fixed;inset:0;background:rgba(0,0,0,.35);display:flex;align-items:center;justify-content:center;z-index:20}.viewer[data-v-54aace5c]{width:min(100%,960px);max-height:90vh;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.15);display:flex;flex-direction:column;overflow:hidden}.viewer-header[data-v-54aace5c]{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;border-bottom:1px solid var(--border);background:var(--surface)}.viewer-title[data-v-54aace5c]{font-size:14px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.viewer-actions[data-v-54aace5c]{display:inline-flex;gap:8px}.viewer-body[data-v-54aace5c]{position:relative;background:var(--bg);display:flex;align-items:center;justify-content:center;min-height:360px;height:70vh;padding:12px}.viewer-loading[data-v-54aace5c]{color:var(--muted);font-size:14px}.viewer-media[data-v-54aace5c]{max-width:100%;max-height:100%;border-radius:6px;box-shadow:0 1px 2px rgba(0,0,0,.06)}.viewer-frame[data-v-54aace5c]{width:100%;height:100%;border:0;background:var(--surface);border-radius:6px}.viewer-fallback[data-v-54aace5c]{color:var(--muted);font-size:14px;text-align:center}.nav[data-v-54aace5c]{position:absolute;top:50%;transform:translateY(-50%);height:44px;width:44px;border-radius:50%;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.nav[data-v-54aace5c]:hover{background:color-mix(in srgb,var(--primary) 8%,transparent)}.nav[data-v-54aace5c]:disabled{opacity:.6;cursor:default}.nav.prev[data-v-54aace5c]{left:12px}.nav.next[data-v-54aace5c]{right:12px}@media (max-width:640px){.viewer[data-v-54aace5c]{width:calc(100% - 16px);max-height:92vh}.viewer-body[data-v-54aace5c]{height:68vh}}.notifications-page[data-v-7fc3146c]{background:var(--bg);color:var(--text)}.page-header[data-v-7fc3146c]{border-bottom:1px solid var(--border);margin-bottom:1.5rem;padding-bottom:1rem;display:flex;align-items:center;justify-content:space-between}.card[data-v-7fc3146c]{background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 1px 2px rgba(0,0,0,.04);margin-bottom:1rem}.filters[data-v-7fc3146c]{display:flex;gap:8px;align-items:end;margin-bottom:12px}.table-header.column-7[data-v-7fc3146c],.table-row.column-7[data-v-7fc3146c]{display:grid;grid-template-columns:1fr 1.5fr 1fr 120px 200px 100px 80px;gap:8px;align-items:center;font-size:14px}.table-header.column-7[data-v-7fc3146c]{font-size:12px;color:var(--muted);padding:6px 0;border-bottom:1px solid var(--border)}.table-row.column-7[data-v-7fc3146c]{padding:5px 0;border-bottom:1px solid var(--border)}.table-header.column-5[data-v-7fc3146c],.table-row.column-5[data-v-7fc3146c]{display:grid;grid-template-columns:1fr 1.5fr 120px 200px 80px;gap:8px;align-items:center;font-size:14px}.table-header.column-5[data-v-7fc3146c]{font-size:12px;color:var(--muted);padding:6px 0;border-bottom:1px solid var(--border)}.table-row.column-5[data-v-7fc3146c]{padding:5px 0;border-bottom:1px solid var(--border)}.table-row.column-7[data-v-7fc3146c]:last-child{border-bottom:none}.subject[data-v-7fc3146c]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.meta[data-v-7fc3146c]{font-size:12px;color:var(--muted)}.row-actions[data-v-7fc3146c]{display:inline-flex;gap:8px;justify-content:flex-end;align-items:center}.row-actions.center[data-v-7fc3146c]{justify-content:center}.text-right[data-v-7fc3146c]{text-align:right}.text-center[data-v-7fc3146c]{text-align:center}.sortable[data-v-7fc3146c]{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.sortable[data-v-7fc3146c]:hover{text-decoration:underline}.icon-btn[data-v-7fc3146c]{display:inline-flex;align-items:center;justify-content:center;height:36px;width:36px;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;transition:background-color .14s,transform 80ms}.icon-btn[data-v-7fc3146c]:hover:not(:disabled){background:color-mix(in srgb,var(--primary) 8%,transparent)}.icon-btn[data-v-7fc3146c]:active:not(:disabled){transform:translateY(1px)}.icon-btn[data-v-7fc3146c]:disabled{opacity:.6;cursor:default}.badge[data-v-7fc3146c]{display:inline-block;font-size:12px;line-height:16px;padding:2px 8px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--muted)}.badge-success[data-v-7fc3146c]{color:var(--success);border-color:rgba(16,185,129,.5);background:rgba(16,185,129,.08)}.badge-warn[data-v-7fc3146c]{color:var(--warn);border-color:rgba(245,158,11,.5);background:rgba(245,158,11,.08)}.badge-info[data-v-7fc3146c]{color:var(--info);border-color:rgba(37,99,235,.5);background:rgba(37,99,235,.08)}.badge-danger[data-v-7fc3146c]{color:var(--danger);border-color:rgba(239,68,68,.5);background:rgba(239,68,68,.08)}.btn[data-v-7fc3146c]{height:38px;padding:0 12px;border-radius:8px;border:1px solid var(--border);background:var(--surface);cursor:pointer}.btn[data-v-7fc3146c]:hover{background:color-mix(in srgb,var(--primary) 8%,transparent)}.btn-primary[data-v-7fc3146c]{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-primary[data-v-7fc3146c]:hover{background:var(--primary-600)}.spinner[data-v-7fc3146c]{width:16px;height:16px;border:2px solid color-mix(in srgb,var(--primary) 30%,transparent);border-top-color:var(--primary);border-radius:50%;display:inline-block;margin-right:6px;animation:spin-7fc3146c .9s linear infinite}.skeleton .sk-line[data-v-7fc3146c]{height:12px;background:color-mix(in srgb,var(--bg) 50%,#fff);border-radius:6px}.skeleton .sk-line.short[data-v-7fc3146c]{width:70%}.skeleton .sk-dot[data-v-7fc3146c]{width:20px;height:20px;border-radius:6px;background:color-mix(in srgb,var(--bg) 50%,#fff)}.skeleton .sk-badge[data-v-7fc3146c]{width:64px;height:18px;border-radius:999px;background:color-mix(in srgb,var(--bg) 50%,#fff)}.skeleton .sk-btn[data-v-7fc3146c]{width:120px;height:32px;border-radius:8px;background:color-mix(in srgb,var(--bg) 50%,#fff)}@keyframes spin-7fc3146c{to{transform:rotate(1turn)}}@media (max-width:920px){.table-header.column-7[data-v-7fc3146c],.table-row.column-7[data-v-7fc3146c]{grid-template-columns:1fr 1.5fr 1fr 120px 200px 100px 80px}}@media (max-width:640px){.filters[data-v-7fc3146c]{flex-direction:column;align-items:stretch}.table-header.column-7[data-v-7fc3146c],.table-row.column-7[data-v-7fc3146c]{grid-template-columns:1.6fr 1fr 140px 100px}.table-header.column-7[data-v-7fc3146c]>:nth-child(2),.table-header.column-7[data-v-7fc3146c]>:nth-child(3),.table-header.column-7[data-v-7fc3146c]>:nth-child(7),.table-row.column-7[data-v-7fc3146c]>:nth-child(2),.table-row.column-7[data-v-7fc3146c]>:nth-child(3),.table-row.column-7[data-v-7fc3146c]>:nth-child(7){display:none}.table-header.column-5[data-v-7fc3146c],.table-row.column-5[data-v-7fc3146c]{grid-template-columns:1.6fr 1fr 140px 100px}.table-header.column-5[data-v-7fc3146c]>:nth-child(2),.table-header.column-5[data-v-7fc3146c]>:nth-child(5),.table-row.column-5[data-v-7fc3146c]>:nth-child(2),.table-row.column-5[data-v-7fc3146c]>:nth-child(5){display:none}}:root{--text:#1f2937;--muted:#6b7280;--surface:#fff;--bg:#f6f7f9;--border:#e0e3ea;--border-strong:#cbd5e1;--primary:#10b981;--primary-600:#059669;--focus:rgba(79,70,229,.45);--info:#2563eb;--success:#10b981;--warn:#f59e0b;--warn-600:#d97706;--danger:#ef4444;--shadow-1:0 1px 2px rgba(0,0,0,.06),0 1px 1px rgba(0,0,0,.04)}#app,body,html{height:100%}body{font:14px/1.45 system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,Apple Color Emoji,Segoe UI Emoji}.page,body{color:var(--text);background:var(--bg)}.page{padding:16px}.page-header{border-bottom:1px solid var(--border);padding-bottom:8px;margin-bottom:12px}.h1{font-weight:600;font-size:20px;line-height:24px;margin:0}.card{border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-1);padding:16px}.btn,.card{background:var(--surface)}.btn{display:inline-flex;align-items:center;gap:8px;height:38px;padding:0 14px;border-radius:8px;border:1px solid var(--border);color:var(--text);cursor:pointer}.row-actions .icon-btn{height:30px;width:30px;border-radius:5px;justify-content:center}.row-actions .icon-btn:hover{background:var(--surface-hover)}.btn:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-primary:hover{background:var(--primary-600)}.btn-warn{background:var(--warn);color:#fff;border-color:var(--warn)}.btn-warn:hover{background:var(--warn-600)}.btn:disabled,.btn[disabled]{opacity:.65;cursor:not-allowed}.spinner{width:16px;height:16px;border-radius:999px;border:2px solid hsla(0,0%,100%,.5);border-top-color:#fff;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.notice{border:1px solid var(--border);border-radius:6px;padding:10px 12px;background:var(--surface)}.notice-danger{background:rgba(239,68,68,.1);border-color:rgba(239,68,68,.35)}.notice-success{background:rgba(16,185,129,.1);border-color:rgba(16,185,129,.35)}.layout{display:grid;grid-template-columns:240px 1fr;min-height:100vh}.layout.layout--no-sidebar{grid-template-columns:1fr}.sidebar{position:sticky;top:0;align-self:start;height:100vh;background:var(--surface);border-right:1px solid var(--border);padding:16px 12px;display:flex;flex-direction:column}.sidebar .brand{font-weight:600;font-size:16px;margin:0 0 12px}.sidebar nav{display:flex;flex-direction:column;gap:6px}.sidebar a{display:flex;align-items:center;gap:10px;height:36px;padding:0 10px;text-decoration:none;color:var(--text);border-radius:8px}.sidebar .sidebar-footer{margin-top:auto;font-size:12px;color:var(--muted);padding-top:12px;padding-left:10px}.sidebar a.router-link-active{background:rgba(79,70,229,.12);color:var(--primary)}.form{display:flex;flex-direction:column;gap:12px}.field.date-picker{width:100px}.field.date-picker input{text-align:center}.field label{font-size:12px;color:var(--muted);margin-bottom:6px}.field input,.field select,.field textarea{width:100%;height:38px;padding:8px;border:1px solid var(--border);border-radius:8px;background:var(--surface)}.field input:focus-visible,.field select:focus-visible,.field textarea:focus-visible{outline:3px solid var(--focus);border-color:var(--primary)}.mt-8{margin-top:8px}.mt-12{margin-top:12px}.muted{color:var(--muted)}@media (max-width:1024px){.layout{grid-template-columns:200px 1fr}}@media (max-width:768px){.layout{grid-template-columns:1fr}.sidebar{position:relative;height:auto}}@layer primevue{.p-calendar .p-datepicker-touch-ui,.p-datepicker-touch-ui{min-width:30vw!important}.p-calendar .p-inputtext{height:38px;border-top-right-radius:0!important;border-bottom-right-radius:0!important}.p-calendar .p-datepicker-trigger{height:38px;border-top-left-radius:0;border-bottom-left-radius:0;border-left:0}}:root{--app-primary-color:var(--primary-color);--app-secondary-color:var(--surface-900);--app-background-color:var(--surface-ground);--app-text-color:var(--text-color);--app-text-color-secondary:var(--text-color-secondary);--app-header-height:60px;--app-sidebar-width:250px;--app-sidebar-collapsed-width:60px;--app-card-shadow:0 2px 8px rgba(0,0,0,.1);--app-header-shadow:0 2px 4px rgba(0,0,0,.08);--z-dropdown:1000;--z-modal:1050;--z-popover:1060;--z-tooltip:1070;--z-toast:1080}*{box-sizing:border-box}body,html{height:100%}body{margin:0;padding:0;font-family:var(--font-family),sans-serif;font-size:1rem;line-height:1.6;color:var(--text-color);background-color:var(--surface-ground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#app{height:100%;display:flex;flex-direction:column}.p-card{box-shadow:var(--app-card-shadow);border-radius:8px}.p-card .p-card-body{padding:1.5rem}.p-card .p-card-header{padding:1rem 1.5rem;border-bottom:1px solid var(--surface-border)}.p-datatable .p-datatable-header{background:var(--surface-card);border:1px solid var(--surface-border);border-bottom:none;padding:1rem}.p-datatable .p-datatable-thead>tr>th{background:var(--surface-100);color:var(--text-color);font-weight:600;border-color:var(--surface-border)}.p-datatable .p-datatable-tbody>tr:hover{background:var(--surface-hover)}.p-datatable .p-datatable-tbody>tr.p-highlight{background:var(--primary-50);color:var(--primary-700)}.table-header,.table-row{display:grid;gap:12px;align-items:center}.table-header{font-size:12px;color:var(--text-color-secondary);font-weight:600;padding:6px 0}.table-header,.table-row{border-bottom:1px solid var(--surface-border)}.table-row{padding:7px 0}.row-actions{display:flex;justify-content:flex-end;gap:8px}.icon-btn{width:36px;height:36px;border:1px solid var(--surface-border);border-radius:8px;background:var(--surface-card);display:inline-flex;align-items:center;justify-content:center;color:var(--text-color)}.icon-btn:hover{border-color:var(--border-strong,var(--surface-500))}.icon-btn.danger{color:var(--red-500);border-color:rgba(239,68,68,.35)}.filters{display:flex;align-items:center;gap:8px;margin-bottom:12px}.filters input{height:38px;padding:8px;border:1px solid var(--surface-border);border-radius:8px;background:var(--surface-card)}.filters input:first-child{flex:1}.sortable{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.sortable:hover{text-decoration:underline}.btn:not(:disabled),.icon-btn:not(:disabled),button:not(:disabled){cursor:pointer}.btn:disabled,.icon-btn:disabled,button:disabled{cursor:default;opacity:.7}.p-button.p-button-sm{font-size:.875rem;padding:.4375rem .875rem}.p-button.p-button-lg{font-size:1.125rem;padding:.875rem 1.375rem}.p-toast .p-toast-message{border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.15)}.p-dialog{border-radius:12px;box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}.p-dialog .p-dialog-header{padding:1.5rem;border-bottom:1px solid var(--surface-border)}.p-dialog .p-dialog-content{padding:1.5rem}.p-dialog .p-dialog-footer{padding:1rem 1.5rem;border-top:1px solid var(--surface-border)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-muted{color:var(--text-color-secondary)}.text-small{font-size:.875rem}.text-large{font-size:1.125rem}.text-bold{font-weight:600}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.m-0{margin:0}.m-1{margin:.25rem}.m-2{margin:.5rem}.m-3{margin:1rem}.m-4{margin:1.5rem}.m-5{margin:2rem}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:1rem}.mt-4{margin-top:1.5rem}.mt-5{margin-top:2rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:1rem}.mb-4{margin-bottom:1.5rem}.mb-5{margin-bottom:2rem}.ml-0{margin-left:0}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:1rem}.ml-auto{margin-left:auto}.mr-0{margin-right:0}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:1rem}.mr-auto{margin-right:auto}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:1rem}.p-4{padding:1.5rem}.p-5{padding:2rem}.d-flex{display:flex}.d-inline-flex{display:inline-flex}.flex-column{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.justify-content-start{justify-content:flex-start}.justify-content-end{justify-content:flex-end}.justify-content-center{justify-content:center}.justify-content-between{justify-content:space-between}.justify-content-around{justify-content:space-around}.align-items-start{align-items:flex-start}.align-items-end{align-items:flex-end}.align-items-center{align-items:center}.align-items-stretch{align-items:stretch}.flex-grow-1{flex-grow:1}.flex-shrink-0{flex-shrink:0}.d-none{display:none}.d-block{display:block}.d-inline{display:inline}.d-inline-block{display:inline-block}.position-relative{position:relative}.position-absolute{position:absolute}.position-fixed{position:fixed}.position-sticky{position:sticky}.w-100{width:100%}.w-75{width:75%}.w-50{width:50%}.w-25{width:25%}.w-auto{width:auto}.h-100{height:100%}.h-75{height:75%}.h-50{height:50%}.h-25{width:25%}.h-auto{height:auto}.border{border:1px solid var(--surface-border)}.border-0{border:0}.border-top{border-top:1px solid var(--surface-border)}.border-bottom{border-bottom:1px solid var(--surface-border)}.border-left{border-left:1px solid var(--surface-border)}.border-right{border-right:1px solid var(--surface-border)}.rounded{border-radius:.5rem}.rounded-sm{border-radius:.25rem}.rounded-lg{border-radius:.75rem}.rounded-0{border-radius:0}.shadow-sm{box-shadow:0 1px 3px rgba(0,0,0,.1)}.shadow{box-shadow:0 2px 6px rgba(0,0,0,.1)}.shadow-lg{box-shadow:0 4px 12px rgba(0,0,0,.1)}.shadow-none{box-shadow:none}@media(max-width:575.98px){.d-xs-none{display:none!important}.d-xs-block{display:block!important}.d-xs-flex{display:flex!important}}@media(max-width:767.98px){.d-sm-none{display:none!important}.d-sm-block{display:block!important}.d-sm-flex{display:flex!important}}@media(max-width:991.98px){.d-md-none{display:none!important}.d-md-block{display:block!important}.d-md-flex{display:flex!important}}@media(max-width:1199.98px){.d-lg-none{display:none!important}.d-lg-block{display:block!important}.d-lg-flex{display:flex!important}}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--surface-border)}.page-header h1{margin:0;font-size:1.75rem;font-weight:600;color:var(--text-color)}@media(max-width:767.98px){.page-header{flex-direction:column;align-items:flex-start;gap:1rem}}.card{background:var(--surface-card);border:1px solid var(--surface-border);border-radius:8px;box-shadow:var(--app-card-shadow);padding:1.5rem;margin-bottom:1rem}.card.card-sm{padding:1rem}.card.card-lg{padding:2rem}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;min-height:200px}.loading-container .p-progressspinner{margin-bottom:1rem}.loading-container p{margin:0;color:var(--text-color-secondary);font-size:.875rem}.field{margin-bottom:1.5rem}.field label{display:block;margin-bottom:.5rem;font-weight:500;color:var(--text-color)}.field label.required:after{content:" *";color:var(--red-500)}.field .p-error{display:block;font-size:.875rem;color:var(--red-500)}.field .p-error,.field .p-message{margin-top:.25rem}.form-actions{display:flex;justify-content:flex-end;gap:1rem;margin-top:2rem;padding-top:1.5rem;border-top:1px solid var(--surface-border)}@media(max-width:575.98px){.form-actions{flex-direction:column-reverse}.form-actions .p-button{width:100%}}@media print{.d-print-none{display:none!important}.page-header{border-bottom-color:#000}.card{box-shadow:none;border:1px solid #000}}:focus-visible{outline:2px solid var(--primary-color);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media(prefers-contrast:custom){.card{border-color:#000}.page-header{border-bottom-color:#000}}:deep(.p-tooltip).danger-tooltip .p-tooltip-text{background-color:var(--red-500);color:#fff;font-weight:700}:deep(.p-tooltip).danger-tooltip .p-tooltip-arrow{border-top-color:var(--red-500)}:deep(.p-tooltip) .p-tooltip-text{white-space:pre-line;max-width:300px}