@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700;800&display=swap");:root{--bg:#f7fafc;--ink:#2d3748;--muted:#718096;--accent:#ff6700;--accent-2:#06c;--card:#fff;--border:rgba(0,0,0,.08);--shadow:0 24px 50px rgba(0,0,0,.08)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Poppins,Trebuchet MS,sans-serif;color:var(--ink);background:linear-gradient(180deg,#f7fafc,#edf2f7 60%,#e2e8f0);min-height:100vh}body:before{content:"";position:fixed;inset:0;background-image:radial-gradient(circle at 10% 10%,rgba(255,103,0,.08),transparent 45%),radial-gradient(circle at 90% 20%,rgba(0,102,204,.07),transparent 40%),repeating-linear-gradient(90deg,rgba(0,0,0,.02),rgba(0,0,0,.02) 1px,transparent 0,transparent 12px);pointer-events:none;z-index:-1}a{color:inherit;text-decoration:none}.page{max-width:1100px;margin:0 auto;padding:36px 24px 80px;display:flex;flex-direction:column;gap:32px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;background:hsla(0,0%,100%,.7);border:1px solid var(--border);padding:14px 20px;border-radius:999px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.brand{font-family:Poppins,sans-serif;font-weight:700;font-size:20px;letter-spacing:.02em}.nav{display:flex;gap:16px;font-size:14px;color:var(--muted)}.nav-link:hover{color:var(--accent-2)}.nav-link.active{color:var(--accent);font-weight:600}.pill{background:var(--ink);color:#fff;padding:6px 14px;border-radius:999px;font-size:12px}.hero{display:grid;grid-template-columns:1.2fr .8fr;grid-gap:28px;gap:28px;align-items:center;background:var(--card);border:1px solid var(--border);border-radius:28px;padding:32px;box-shadow:var(--shadow);animation:rise .6s ease}.eyebrow{text-transform:uppercase;letter-spacing:.12em;font-size:12px;color:var(--accent-2);margin-bottom:8px}.hero h1{font-family:Poppins,sans-serif;font-weight:700;font-size:40px;margin-bottom:12px}.lede{font-size:18px;line-height:1.6;color:var(--muted);margin-bottom:20px}.hero-actions{display:flex;gap:12px;flex-wrap:wrap}.cta,.ghost{border:none;border-radius:999px;padding:10px 18px;font-size:14px;cursor:pointer}.cta{background:var(--accent);color:#fff}.ghost{background:transparent;border:1px solid var(--border);color:var(--ink)}.hero-card{background:#fff;border-radius:18px;border:1px solid var(--border);padding:20px;display:flex;flex-direction:column;gap:12px}.hero-card ul{list-style:none;display:grid;grid-gap:8px;gap:8px;font-size:14px;color:var(--muted)}.meta{display:inline-block;padding:6px 12px;border-radius:999px;background:#f2e6d9;font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));grid-gap:18px;gap:18px}.card{background:#fff;border:1px solid var(--border);border-radius:18px;padding:20px;display:flex;flex-direction:column;gap:12px;min-height:180px;animation:fadeUp .6s ease;animation-delay:var(--delay,0s)}.card p{color:var(--muted);font-size:14px;line-height:1.5}.tag{margin-top:auto;font-size:12px;color:var(--accent-2);text-transform:uppercase;letter-spacing:.08em}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:16px;gap:16px}.stat-card{background:#fff;border:1px solid var(--border);border-radius:16px;padding:16px;display:flex;flex-direction:column;gap:6px;box-shadow:0 12px 30px rgba(24,18,11,.08)}.stat-card strong{font-size:22px;font-family:Poppins,sans-serif;font-weight:700}.table-block{display:grid;grid-gap:12px;gap:12px}.table-block h2{font-family:Poppins,sans-serif;font-weight:700}.table-skeleton{border:1px solid var(--border);border-radius:18px;background:#fff;overflow:hidden}.table-row{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr .8fr;grid-gap:8px;gap:8px;padding:12px 16px;border-bottom:1px solid var(--border);font-size:13px}.table-row.header{background:#f3e7d9;font-weight:600;text-transform:uppercase;font-size:11px;letter-spacing:.06em}.table-row:last-child{border-bottom:none}.split{display:grid;grid-template-columns:1fr 1fr;grid-gap:24px;gap:24px;align-items:center;background:hsla(0,0%,100%,.7);border:1px solid var(--border);border-radius:22px;padding:28px}.split h2{font-family:Poppins,sans-serif;font-weight:700;margin-bottom:12px}.split p{color:var(--muted);line-height:1.6;margin-bottom:16px}.list{list-style:none;display:grid;grid-gap:8px;gap:8px;color:var(--ink)}.list li:before{content:"*";color:var(--accent);margin-right:8px}.panel{background:#f5f6f8;border:1px solid var(--border);border-radius:16px;padding:18px;display:grid;grid-gap:12px;gap:12px}.panel-container{background:#edf2f8}.panel-row{display:flex;justify-content:space-between;border-bottom:1px dashed var(--border);padding-bottom:8px}.panel-row:last-child{border-bottom:none}.reports{display:grid;grid-template-columns:1fr 1fr;grid-gap:24px;gap:24px;align-items:center}.reports h2{font-family:Poppins,sans-serif;font-weight:700;margin-bottom:10px}.reports p{color:var(--muted)}.report-cards{display:grid;grid-gap:16px;gap:16px}.report-card{padding:18px;border-radius:16px;background:#fff;border:1px solid var(--border)}.report-card p{color:var(--muted);font-size:14px;margin-top:6px}.filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));grid-gap:18px;gap:18px}.filter-card{padding:20px;border-radius:18px;background:#fff;border:1px solid var(--border);display:grid;grid-gap:12px;gap:12px}.filter-row{display:flex;justify-content:space-between;gap:12px;color:var(--muted);font-size:14px}.filter-row strong{color:var(--ink)}.cta-panel{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 24px;background:linear-gradient(120deg,#1f1c18,#3c2a21);color:#fff;border-radius:20px}.cta-panel h2{font-weight:700;margin-bottom:6px}.code,.cta-panel h2{font-family:Poppins,sans-serif}.code{background:hsla(0,0%,100%,.15);padding:10px 14px;border-radius:12px}.topbar-actions{display:flex;align-items:center;gap:12px}.pill-link{background:var(--accent-2);color:#fff;padding:6px 14px;border-radius:999px;font-size:12px}.user-chip{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--border);padding:6px 12px;border-radius:999px;font-size:12px;cursor:pointer;font:inherit;color:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none}.user-chip em{font-style:normal;color:var(--accent)}.user-menu{position:relative}.caret{font-size:10px;opacity:.7}.menu-panel{position:absolute;right:0;top:calc(100% + 10px);background:#fff;border:1px solid var(--border);border-radius:14px;padding:6px;min-width:180px;box-shadow:var(--shadow);z-index:20}.menu-item{display:flex;align-items:center;width:100%;border:none;background:transparent;color:var(--ink);padding:8px 10px;border-radius:10px;font-size:12px;text-align:left;cursor:pointer}.menu-item:hover{background:rgba(15,23,42,.06)}.menu-item.warn{color:#b91c1c}.section-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px}.section-head h2,.section-head h3{font-family:Poppins,sans-serif;font-weight:700}.section-head p{color:var(--muted);font-size:14px}.login-container{display:flex;gap:60px;align-items:center}.login-left{flex-shrink:0}.login-right{flex:1 1;max-width:460px}.login-logo{max-width:240px;height:auto}.tabbar{display:flex;flex-wrap:wrap;gap:8px}.tab{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border);background:#fff;border-radius:999px;padding:8px 16px;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease;box-shadow:0 1px 2px rgba(0,0,0,.05)}.tab:hover{background:rgba(212,85,0,.05);transform:translateY(-1px);box-shadow:0 2px 4px rgba(0,0,0,.1)}.tab.active,.tab:hover{border-color:var(--accent)}.tab.active{background:var(--accent);color:#fff;box-shadow:0 2px 4px rgba(212,85,0,.3)}.tab-icon{font-size:16px;display:flex;align-items:center;justify-content:center}.tab-icon,.tab-label{line-height:1}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:16px;gap:16px;margin-bottom:12px}.field{display:grid;grid-gap:6px;gap:6px;font-size:13px;color:var(--muted)}.field span{color:var(--ink);font-weight:500}.field.checkbox{grid-template-columns:24px 1fr;align-items:center}.input,.select{border:1px solid var(--border);border-radius:12px;padding:10px 12px;font-size:14px;background:#fff;color:var(--ink);transition:all .2s ease}.input:focus,.select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(212,85,0,.1)}.input:hover,.select:hover{border-color:rgba(212,85,0,.3)}.input::placeholder{color:var(--muted);opacity:.7}.select.multi{min-height:120px}.field-error{grid-column:1/-1;color:#b91c1c;font-size:12px}.student-picker{display:grid;grid-gap:10px;gap:10px}.student-list{border:1px solid var(--border);border-radius:12px;background:#fff;padding:8px;max-height:220px;overflow:auto;display:grid;grid-gap:6px;gap:6px}.student-option{display:grid;grid-template-columns:18px 1fr;grid-gap:8px;gap:8px;align-items:center;font-size:13px;color:var(--ink)}.student-option input{accent-color:var(--accent)}.student-empty{font-size:12px;color:var(--muted);padding:6px 4px}.date-field{position:relative;display:flex;align-items:center}.date-field .date-display{flex:1 1;padding-right:38px}.date-icon-button{position:absolute;right:12px;top:50%;transform:translateY(-50%);border:none;background:transparent;padding:0;color:var(--muted);width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.date-icon-button svg{width:18px;height:18px}.date-picker-input{position:absolute;opacity:0;width:0;height:0;border:0;padding:0;pointer-events:none}.form-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.form-actions{display:flex;gap:12px;margin:12px 0}.form-errors{display:grid;grid-gap:6px;gap:6px;margin-bottom:12px}.button{background:var(--accent);color:#fff;border:none;border-radius:999px;padding:8px 16px;font-size:13px;cursor:pointer}.button:disabled{opacity:.6;cursor:not-allowed}.button.ghost{background:transparent;border:1px solid var(--border);color:var(--ink)}.link-button{border:none;background:none;color:var(--accent-2);cursor:pointer;font-size:12px}.link-button:disabled{cursor:not-allowed;opacity:.45}.link-button.warn{color:#b91c1c}.table{border:1px solid var(--border);border-radius:18px;background:#fff;overflow:hidden}.table .table-row{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));align-items:center}.row-actions{display:flex;gap:8px;flex-wrap:wrap}.pagination{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-top:12px}.pagination-info{font-size:12px;color:var(--muted)}.pair-builder{display:grid;grid-gap:12px;gap:12px;margin-top:10px}.pair-label{font-size:12px;color:var(--muted)}.pair-hint{font-size:12px;color:#b91c1c}.chip-list{display:flex;flex-wrap:wrap;gap:8px}.chip{display:inline-flex;align-items:center;gap:6px;background:#f3e7d9;padding:4px 10px;border-radius:999px}.chip,.chip-remove{color:#4a3527;font-size:12px}.chip-remove{border:none;background:rgba(74,53,39,.12);width:18px;height:18px;border-radius:50%;cursor:pointer;line-height:1}.chip-remove:hover{background:rgba(74,53,39,.2)}.notice{background:#fff7ed;border:1px solid #f1d4b3;color:#9a5b2a;padding:8px 12px;border-radius:12px;font-size:13px;margin-top:8px}.notice.error{background:#fee2e2;border-color:#fca5a5;color:#b91c1c}.notice.success{background:#dcfce7;border-color:#86efac;color:#166534}.toast-stack{position:fixed;top:20px;right:20px;grid-gap:12px;z-index:2000;max-width:min(420px,calc(100vw - 32px))}.toast,.toast-stack{display:grid;gap:12px}.toast{grid-template-columns:1fr auto;grid-gap:12px;align-items:center;background:#fff;border-radius:12px;padding:12px 14px;border:1px solid #e5e7eb;box-shadow:0 12px 24px rgba(15,23,42,.12);animation:toast-in .2s ease-out}.toast-message{font-size:13px;color:#1f2937;line-height:1.4}.toast-close{border:none;background:transparent;color:#64748b;cursor:pointer;font-size:14px;line-height:1;padding:4px}.toast-close:hover{color:#0f172a}.toast--success{border-left:4px solid #10b981}.toast--error{border-left:4px solid #ef4444}.toast--warning{border-left:4px solid #f59e0b}.toast--info{border-left:4px solid #3b82f6}@keyframes toast-in{0%{transform:translateY(-8px);opacity:0}to{transform:translateY(0);opacity:1}}.confirm-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:1000}.confirm-dialog{background:#fff;border-radius:12px;padding:28px;max-width:450px;width:90%;box-shadow:0 20px 60px rgba(0,0,0,.3);animation:dialog-in .2s ease-out}.confirm-dialog--dangerous{border-left:4px solid #ef4444}.confirm-dialog-title{margin:0 0 12px;font-size:1.25rem;font-weight:600;color:#1f2937}.confirm-dialog-message{margin:0 0 20px;font-size:.95rem;color:#4b5563;line-height:1.5;white-space:pre-wrap;word-wrap:break-word}.confirm-dialog-actions{display:flex;gap:12px;justify-content:flex-end}.confirm-dialog-button{padding:8px 16px;border:none;border-radius:6px;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .2s ease;min-width:80px}.confirm-dialog-button--cancel{background-color:#f0f0f0;color:#4b5563}.confirm-dialog-button--cancel:hover{background-color:#e5e5e5}.confirm-dialog-button--confirm{background-color:#3b82f6;color:#fff}.confirm-dialog-button--confirm:hover{background-color:#2563eb}.confirm-dialog-button--danger{background-color:#ef4444}.confirm-dialog-button--danger:hover{background-color:#dc2626}@keyframes dialog-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.calendar{border:1px solid var(--border);border-radius:18px;background:#fff;overflow:hidden}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr)}.calendar-header{padding:10px;background:#f3e7d9;font-size:12px;text-transform:uppercase;letter-spacing:.06em;text-align:center}.calendar-cell,.calendar-header{border-bottom:1px solid var(--border)}.calendar-cell{min-height:120px;border-right:1px solid var(--border);padding:8px;display:grid;grid-gap:6px;gap:6px}.calendar-cell:nth-child(7n){border-right:none}.calendar-cell.empty{background:#faf6ef}.calendar-date{font-weight:600;font-size:12px;color:var(--muted)}.calendar-events{display:grid;grid-gap:6px;gap:6px}.calendar-event{background:#f7efe5;border-radius:10px;padding:6px 8px;font-size:12px;display:grid;grid-gap:2px;gap:2px}.month-input{max-width:180px}@keyframes rise{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes fadeUp{0%{transform:translateY(18px);opacity:0}to{transform:translateY(0);opacity:1}}@media (max-width:960px){.hero,.reports,.split,.table-row{grid-template-columns:1fr}.table-row{gap:4px}}@media (max-width:720px){.topbar{flex-direction:column;align-items:flex-start;border-radius:24px}.nav{flex-wrap:wrap}.cta-panel{flex-direction:column;align-items:flex-start}}.clickable-text{cursor:pointer;color:var(--accent-2);text-decoration:underline;-webkit-text-decoration-style:dotted;text-decoration-style:dotted}.clickable-text:hover{color:var(--accent)}.table-filter{display:flex;align-items:center;gap:16px;margin-bottom:12px;flex-wrap:wrap}.table-row.inactive{background-color:#f3eded;opacity:.65}.table-row.inactive span{text-decoration:line-through;-webkit-text-decoration-color:#b0a0a0;text-decoration-color:#b0a0a0}.table-row.inactive .row-actions button,.table-row.inactive .row-actions span{text-decoration:none}.table-row.canceled{background-color:#fde8e8;opacity:.65}.table-row.canceled span{text-decoration:line-through;-webkit-text-decoration-color:#c07070;text-decoration-color:#c07070}.table-row.canceled .row-actions button,.table-row.canceled .row-actions span{text-decoration:none}.table-row.pending{background-color:#fff3cd}.success-message{position:fixed;top:20px;right:20px;background:#10b981;color:#fff;padding:16px 24px;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.15);animation:slideIn .3s ease-out;z-index:1000;font-weight:500}@keyframes slideIn{0%{transform:translateX(400px);opacity:0}to{transform:translateX(0);opacity:1}}.sms-stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));grid-gap:10px;gap:10px;margin-top:12px}.sms-stat{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:12px 14px;text-align:center}.sms-stat-val{display:block;font-size:22px;font-weight:700}.sms-stat-lbl{display:block;font-size:11px;color:var(--muted);margin-top:2px}.sms-stat[data-color=warn] .sms-stat-val{color:#d69e2e}.sms-stat[data-color=info] .sms-stat-val{color:#3182ce}.sms-stat[data-color=ok] .sms-stat-val{color:#38a169}.sms-stat[data-color=err] .sms-stat-val{color:#e53e3e}.sms-stat[data-color=muted] .sms-stat-val{color:var(--muted)}.sms-stat[data-color=accent] .sms-stat-val{color:var(--accent)}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600}.badge-warn{background:#fefcbf;color:#975a16}.badge-info{background:#bee3f8;color:#2a4365}.badge-ok{background:#c6f6d5;color:#22543d}.badge-err{background:#fed7d7;color:#9b2c2c}.badge-muted{background:#e2e8f0;color:#4a5568}.btn-xs{padding:3px 10px;font-size:11px;border-radius:6px}.btn-danger{background:#e53e3e!important;color:#fff!important}.btn-danger:hover{background:#c53030!important}.cell-truncate{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px}.modal-card{background:var(--card);border-radius:14px;max-width:540px;width:100%;box-shadow:var(--shadow);overflow:hidden}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border)}.modal-header h3{font-size:16px}.modal-close{background:none;border:none;font-size:18px;cursor:pointer;color:var(--muted)}.modal-body{padding:20px}.modal-footer{padding:12px 20px;border-top:1px solid var(--border);display:flex;gap:8px;justify-content:flex-end}.detail-grid{display:flex;flex-direction:column;gap:10px}.detail-row{display:flex;gap:12px;align-items:baseline}.detail-full{flex-direction:column}.detail-label{font-size:12px;color:var(--muted);min-width:90px;flex-shrink:0}.detail-message{background:#f7fafc;border:1px solid var(--border);border-radius:8px;padding:10px;font-size:13px;line-height:1.5}.detail-error{background:#fff5f5;border:1px solid #fed7d7;border-radius:8px;padding:10px;font-size:12px;color:#c53030}