@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/inter-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/inter-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{--primary: #16a34a;--primary-dark: #15803d;--primary-light: #dcfce7;--dark: #15803d;--dark-soft: #16a34a;--surface: #e9f7ee;--bg: #f7fcf9;--card: #ffffff;--border: #d4e8da;--border-focus: #22c55e;--text: #0f172a;--text-soft: #64748b;--text-faint: #94a3b8;--danger: #ef4444;--danger-light: #fee2e2;--gold: #f59e0b;--gold-light: #fefce8;--green-badge: #166534;--red-badge: #991b1b;--radius: 10px;--radius-sm: 6px;--maxw: 1920px;--gutter: clamp(24px, 4vw, 56px);--shadow: 0 1px 3px rgba(0,0,0,.08), 0 1px 2px rgba(0,0,0,.06);--shadow-md: 0 4px 6px rgba(0,0,0,.07), 0 2px 4px rgba(0,0,0,.06)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:15px;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body{background:var(--bg);color:var(--text);line-height:1.5}a{color:var(--primary);text-decoration:none;font-weight:500}a:hover{text-decoration:underline}.app-shell{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}.topbar{background:#fff;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:40}.topbar-inner{max-width:var(--maxw);margin:0 auto;display:flex;align-items:center;gap:18px;padding:0 var(--gutter);height:60px}.brand{display:flex;align-items:center;gap:10px;text-decoration:none}.brand:hover{text-decoration:none}.brand-logo{display:block;width:42px;height:42px;object-fit:contain;flex-shrink:0}.brand-logo.large{width:88px;height:88px;margin:0 auto}.brand-text{font-weight:700;font-size:16px;color:#0f5132}.nav{display:flex;align-items:center;gap:8px;flex:1;min-width:0;overflow-x:auto;scrollbar-width:none}.nav::-webkit-scrollbar{display:none}.nav-section{display:flex;flex-direction:column;gap:2px}.nav .nav-section{flex-direction:row;align-items:center;gap:0}.nav .nav-section-label{display:none}.nav .nav-section+.nav-section{border-left:1px solid var(--border);padding-left:8px;margin-left:4px}.nav-section-label{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:#9ca3af;font-weight:700;padding-left:2px;white-space:nowrap}.nav-section-links{display:flex;gap:4px}.nav-section--green .nav-section-label{color:#15803d}.nav-section--orange .nav-section-label{color:#b45309}.nav-section--blue .nav-section-label{color:#1d4ed8}.nav-section--green .nav-link:hover{color:#15803d;background:#f0fdf4}.nav-section--orange .nav-link:hover{color:#b45309;background:#fff7ed}.nav-section--blue .nav-link:hover{color:#1d4ed8;background:#eff6ff}.nav-section--green .nav-link.active{color:#15803d;background:#dcfce7}.nav-section--orange .nav-link.active{color:#b45309;background:#ffedd5}.nav-section--blue .nav-link.active{color:#1d4ed8;background:#dbeafe}.nav-link{color:#4b5563;padding:7px 11px;border-radius:var(--radius-sm);font-size:13px;font-weight:500;transition:all .15s;white-space:nowrap}.nav-link:hover{color:#0f5132;background:#f1f5f9;text-decoration:none}.nav-link.active{color:#15803d;background:#dcfce7;font-weight:600}.topbar-user{display:flex;align-items:center;gap:10px;margin-left:auto}.user-chip-wrap{position:relative}.user-chip{display:flex;align-items:center;gap:8px;background:#f1f5f9;padding:6px 12px 6px 6px;border-radius:var(--radius);border:none;font:inherit;cursor:pointer;text-align:left;transition:background .15s}.user-chip:hover,.user-chip.open{background:#e2e8f0}.user-avatar{width:30px;height:30px;border-radius:50%;background:#dcfce7;color:#0f5132;display:grid;place-items:center;font-weight:700;font-size:13px}.user-meta{display:flex;flex-direction:column;line-height:1.2}.user-name{font-size:13px;font-weight:600;color:#1f2937}.user-plan{font-size:11px;color:#6b7280}.user-pop{position:absolute;top:calc(100% + 8px);right:0;z-index:70;min-width:240px;background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 12px 30px #0f172a29;padding:14px;display:flex;gap:12px;align-items:flex-start}.user-chip-wrap--up .user-pop{top:auto;bottom:calc(100% + 8px);left:0;right:auto}.user-pop-avatar{width:42px;height:42px;border-radius:50%;background:#dcfce7;color:#0f5132;display:grid;place-items:center;font-weight:700;font-size:17px;flex-shrink:0}.user-pop-meta{display:flex;flex-direction:column;gap:6px;min-width:0}.user-pop-name{font-size:14px;font-weight:700;color:#1f2937}.user-pop-line{display:flex;flex-direction:column;font-size:12.5px;color:#374151;word-break:break-word}.user-pop-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:#9ca3af;font-weight:600}.content{max-width:var(--maxw);width:100%;margin:0 auto;padding:32px var(--gutter) 56px;flex:1}.nav-toggle{display:none;flex-direction:column;justify-content:center;gap:4px;width:38px;height:38px;padding:8px;background:transparent;border-radius:var(--radius-sm);transition:background .15s}.nav-toggle:hover{background:#f1f5f9}.nav-toggle-bar{display:block;height:2px;width:20px;border-radius:2px;background:#1f2937;transition:transform .2s,opacity .2s}.nav-toggle.open .nav-toggle-bar:nth-child(1){transform:translateY(6px) rotate(45deg)}.nav-toggle.open .nav-toggle-bar:nth-child(2){opacity:0}.nav-toggle.open .nav-toggle-bar:nth-child(3){transform:translateY(-6px) rotate(-45deg)}.drawer{position:fixed;top:0;left:0;bottom:0;width:272px;max-width:85vw;background:#fff;color:var(--text);z-index:60;display:flex;flex-direction:column;transform:translate(-100%);transition:transform .25s cubic-bezier(.4,0,.2,1);box-shadow:4px 0 24px #00000040;border-right:1px solid var(--border)}.drawer.open{transform:translate(0)}.drawer-brand{display:flex;align-items:center;gap:10px;padding:16px 20px;border-bottom:1px solid var(--border)}.drawer-nav{display:flex;flex-direction:column;padding:14px;overflow-y:auto;flex:1}.drawer-nav .nav-section{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}.drawer-nav .nav-section-label{padding:8px 14px 2px;font-size:11px}.drawer-nav .nav-section-links{flex-direction:column;gap:4px}.drawer-nav .nav-link{padding:11px 14px;font-size:14px;border-radius:var(--radius-sm)}.drawer-nav .nav-section{padding:8px;border-radius:var(--radius)}.drawer-nav .nav-section--green{background:#f0fdf4}.drawer-nav .nav-section--orange{background:#fff7ed}.drawer-nav .nav-section--blue{background:#eff6ff}.drawer-footer{padding:14px 16px;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:10px}.drawer-logout{flex-shrink:0}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:50;opacity:0;visibility:hidden;transition:opacity .2s}.drawer-backdrop.open{opacity:1;visibility:visible}@media (min-width: 1025px){.drawer,.drawer-backdrop,.nav-toggle{display:none}}@media (min-width: 1025px) and (max-width: 1360px){.app-shell--admin .nav{display:none}.app-shell--admin .nav-toggle,.app-shell--admin .drawer{display:flex}.app-shell--admin .drawer-backdrop{display:block}}button{cursor:pointer;border:none;font-family:inherit;font-size:inherit}.btn-primary{background:linear-gradient(135deg,#16a34a,#22c55e);color:#fff;padding:10px 20px;border-radius:var(--radius-sm);font-weight:600;box-shadow:0 6px 16px -6px #16a34a8c;transition:background .15s,box-shadow .15s,transform .15s}.btn-primary:hover{background:linear-gradient(135deg,#15803d,#16a34a);box-shadow:0 8px 20px -6px #16a34aa6}.btn-primary:disabled{opacity:.55;cursor:not-allowed}.btn-outline{background:transparent;border:1.5px solid var(--border);color:var(--text);padding:8px 16px;border-radius:var(--radius-sm);font-weight:500;transition:all .15s}.btn-outline:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-light)}.btn-outline:disabled{opacity:.5;cursor:not-allowed}.btn-danger{background:var(--danger);color:#fff;padding:8px 16px;border-radius:var(--radius-sm);font-weight:500}.btn-danger:hover{background:#dc2626}.btn-ghost{background:transparent;color:#4b5563;padding:6px 10px;border-radius:var(--radius-sm)}.btn-ghost:hover{color:#0f5132;background:#f1f5f9}.btn-sm{padding:7px 14px;font-size:13px}.btn-xs{padding:5px 10px;font-size:12px;border-radius:var(--radius-sm)}.btn-active{background:var(--primary-light)!important;border-color:var(--primary)!important;color:var(--primary)!important;font-weight:600}.btn-active-danger{background:var(--danger-light)!important;border-color:var(--danger)!important;color:var(--danger)!important;font-weight:600}.badge{display:inline-block;padding:3px 10px;border-radius:20px;font-size:12px;font-weight:600}.badge-green{background:var(--primary-light);color:var(--green-badge)}.badge-danger{background:var(--danger-light);color:var(--red-badge)}.badge-gold{background:var(--gold-light);color:#92400e}.badge-dark{background:#e2e8f0;color:#334155}.badge-muted{background:var(--surface);color:var(--text-faint)}.auth-page{min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding:24px;position:relative;overflow:hidden;background:linear-gradient(150deg,#052e1c61,#0b4d304d 52%,#136b4142),url(/auth-bg.jpg) center / cover no-repeat}.auth-page:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(120% 80% at 50% -10%,#ffffff1f,#fff0 55%);pointer-events:none}.auth-card{position:relative;background:#ffffffb8;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-radius:18px;padding:40px 38px;max-width:420px;width:100%;box-shadow:0 30px 60px -20px #02201299;border:1px solid rgba(255,255,255,.5)}.auth-brand{text-align:center;margin-bottom:28px}.auth-brand h1{font-size:23px;margin-top:14px;color:var(--primary-dark);letter-spacing:.2px}.auth-brand p{color:var(--text-soft);margin-top:5px}.auth-brand:after{content:"";display:block;width:56px;height:3px;margin:16px auto 0;border-radius:3px;background:linear-gradient(90deg,var(--primary),#22c55e)}.auth-form{display:flex;flex-direction:column;gap:16px}.auth-form .field input:focus{border-color:var(--primary-dark);box-shadow:0 0 0 3px #15803d1f}.auth-form button{align-self:stretch}.auth-form button.btn-primary{padding:12px 20px;border-radius:10px;font-weight:700;letter-spacing:.2px;box-shadow:0 8px 20px -6px #14532d73}.auth-form .remember-field{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--text-soft);cursor:pointer;-webkit-user-select:none;user-select:none}.auth-form .remember-field input{width:16px;height:16px;accent-color:var(--primary);cursor:pointer}.auth-footer{text-align:center;margin-top:20px;color:var(--text-soft);font-size:14px}.auth-card .field input,.auth-card .plan-option{background:#fff9;border-color:#0d281933;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.auth-card .field input:focus{background:#fffffff2}.auth-card .plan-option:has(input:checked){background:var(--primary-light);border-color:var(--primary)}.plan-picker{display:flex;flex-direction:column;gap:8px;margin-bottom:20px}.plan-option{display:flex;align-items:center;gap:10px;padding:10px 14px;border:1.5px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:all .15s}.plan-option:has(input:checked){border-color:var(--primary);background:var(--primary-light)}.plan-option input{accent-color:var(--primary);width:16px;height:16px}.plan-option strong{display:block;font-size:14px}.plan-option span{display:block;font-size:12.5px;color:var(--text-soft)}.field{display:flex;flex-direction:column;gap:5px}.field span{font-size:12.5px;font-weight:600;color:var(--text-soft)}.field small{font-size:12px;color:var(--text-faint)}.form-actions{display:flex;gap:10px;margin-top:18px}.field input,.field select,.form-section input,.form-section select,.inline-form input,.inline-form select{padding:9px 12px;border:1.5px solid var(--border);border-radius:var(--radius-sm);font-family:inherit;font-size:14px;background:#fff;transition:border-color .15s}.field input:focus,.field select:focus,.form-section input:focus,.form-section select:focus,.inline-form input:focus,.inline-form select:focus{outline:none;border-color:var(--primary)}.field-input{position:relative;display:flex}.field-input input{width:100%;padding-right:42px}.password-toggle{position:absolute;right:6px;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;border:none;border-radius:7px;background:transparent;color:var(--text-faint);cursor:pointer;transition:background .12s,color .12s}.password-toggle:hover{background:#eef1f4;color:var(--text-soft)}.password-toggle:focus-visible{outline:2px solid var(--primary);outline-offset:1px}.form-error{background:var(--danger-light);color:var(--danger);padding:10px 14px;border-radius:var(--radius-sm);font-size:13px}.small-label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--text-soft);font-weight:500}.small-label input,.small-label select{margin-top:0}.user-search{max-width:380px;margin-bottom:18px}.users-empty{text-align:center;color:var(--text-soft);padding:18px 12px}.users-alerts{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;margin-bottom:20px}.users-alert{padding:14px 16px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.users-alert.has-items{border-color:#fcd34d;background:#fffbeb}.users-alert-head{display:flex;align-items:flex-start;gap:10px;margin-bottom:10px}.users-alert-head strong{font-size:14px;color:var(--text)}.users-alert-head p{margin:2px 0 0;font-size:12px;color:var(--text-soft)}.users-alert-badge{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 7px;border-radius:12px;background:var(--surface);color:var(--text-soft);font-size:12.5px;font-weight:700;flex-shrink:0}.users-alert.has-items .users-alert-badge{background:var(--gold-light);color:#92400e}.users-alert-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.users-alert-item{display:flex;align-items:center;gap:8px;padding:6px 8px;background:#fff;border:1px solid var(--border);border-radius:var(--radius-sm)}.users-alert-name{font-size:13px;font-weight:600}.users-alert-meta{font-size:12px;color:var(--text-faint);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.users-alert-empty{font-size:12.5px;color:var(--text-faint);margin:0}.users-alert-item select{max-width:150px;padding:4px 6px;border:1px solid var(--border);border-radius:4px;font-size:12.5px}.users-more{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:-8px 0 20px}.users-more-hint{font-size:12.5px;color:var(--text-faint)}.dt tr.row-inactive{background:#fbf7f7}.dt tr.row-inactive td{opacity:.78}.dt tr.row-inactive:hover{background:#f8f1f1}.form-section .form-hint{font-size:12.5px;color:var(--text-soft);margin:-8px 0 14px}.page{animation:fadeIn .2s}.page-narrow{max-width:900px;width:100%;margin:0 auto}.page-dashboard{max-width:1280px;width:100%;margin:0 auto}.page h1{font-size:24px;font-weight:700;margin-bottom:6px}.page>p{color:var(--text-soft);margin-bottom:24px;font-size:14.5px}.page>h1+p{margin-top:-2px}.form-section{margin-top:32px;padding:20px;background:var(--card);border-radius:var(--radius);border:1px solid var(--border)}.form-section h2{font-size:16px;margin-bottom:14px;color:var(--text-soft)}.inline-form{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}.inline-form input,.inline-form select{min-width:140px;flex:1 1 140px}.inline-form button{flex:0 0 auto}.muted{color:var(--text-faint);padding:32px;text-align:center}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;flex-wrap:wrap;margin-bottom:24px}.page-head h1{margin-bottom:2px}.content--green .page h1{color:#15803d}.content--orange .page h1{color:#b45309}.content--blue .page h1{color:#1d4ed8}.content--green .page-head{border-left:4px solid #86efac;padding-left:14px}.content--orange .page-head{border-left:4px solid #fdba74;padding-left:14px}.content--blue .page-head{border-left:4px solid #93c5fd;padding-left:14px}.credit-chips{display:flex;gap:12px}.credit-chip{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:10px 16px;text-align:center;box-shadow:var(--shadow);min-width:130px}.cc-label{display:block;font-size:11.5px;font-weight:500;color:var(--text-faint);text-transform:uppercase;letter-spacing:.5px}.cc-sub{display:block;font-size:11.5px;color:var(--text-faint);margin-top:2px}.tabs{display:flex;gap:4px;margin-bottom:20px}.tab{padding:10px 20px;background:transparent;color:var(--text-soft);border-radius:var(--radius-sm) var(--radius-sm) 0 0;font-weight:500;border-bottom:2px solid transparent;transition:all .15s}.tab:hover{background:var(--surface);color:var(--text)}.tab.active{border-bottom-color:var(--primary);color:var(--primary);background:var(--primary-light)}.tab small{display:block;font-size:11.5px;color:var(--text-faint);font-weight:400;margin-top:2px}.tab.active small{color:var(--green-badge)}.week-body{min-height:200px}.day-block{margin-bottom:20px;border-radius:var(--radius);transition:box-shadow .15s}.day-block.selected{box-shadow:0 0 0 2px var(--primary)}.day-head{display:flex;align-items:baseline;gap:10px;padding:10px 14px;background:#f3f4f6;color:#1f2937;border-radius:var(--radius) var(--radius) 0 0;font-weight:600;font-size:14px}.day-head small{font-weight:400;opacity:.7}.day-block.selected .day-head{background:var(--primary-light);color:var(--primary-dark)}.day-body{background:var(--card);border:1px solid var(--border);border-top:none;border-radius:0 0 var(--radius) var(--radius);overflow:hidden;padding:10px;display:flex;flex-direction:column;gap:8px}.week-list .day-time .tt-card,.week-list .day-time .time-group{width:100%}.week-list.mode-user .day-head,.week-list.mode-admin .day-head{padding:8px 12px;font-size:13px}.tt-wrap{overflow-x:auto;margin-bottom:24px}.tt{width:100%;min-width:640px;border-collapse:collapse;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.tt th,.tt td{padding:8px;border:1px solid var(--border);vertical-align:top;text-align:left;font-size:13px}.tt thead th{background:#f3f4f6;color:#1f2937}.tt-corner{width:56px;background:#f3f4f6}.tt-head-col{min-width:130px;text-align:center;font-weight:600;text-transform:uppercase;letter-spacing:.4px}.tt-head-col small{display:block;font-size:11px;font-weight:400;text-transform:none;letter-spacing:0;opacity:.75;margin-top:2px}.tt-head-action{margin-top:6px}.tt-col-stop{display:inline-flex;align-items:center;font-size:11px;font-weight:600;text-transform:none;letter-spacing:0;color:var(--primary-dark);background:var(--primary-light);border:1px solid transparent;border-radius:4px;padding:3px 8px;cursor:pointer;transition:background .15s,color .15s}.tt-col-stop:hover{background:var(--primary);color:#fff}.tt-stop-form{display:flex;flex-direction:column;gap:6px;align-items:center}.tt-stop-form input[type=date]{font-family:inherit;font-size:12px;text-transform:none;letter-spacing:0;padding:4px 6px;border:1.5px solid var(--border);border-radius:4px;background:#fff}.tt-stop-form input[type=date]:focus{outline:none;border-color:var(--primary)}.tt-stop-form-actions{display:flex;gap:6px}.stop-modal{display:flex;flex-direction:column;gap:16px}.stop-mode{display:grid;grid-template-columns:1fr 1fr;gap:8px}.stop-mode-btn{display:flex;flex-direction:column;gap:3px;padding:10px 12px;border:1.5px solid var(--border);border-radius:var(--radius-sm);background:#fff;cursor:pointer;text-align:left;font-size:13px;font-weight:700;color:var(--text);transition:border-color .15s,background .15s}.stop-mode-btn small{font-size:11px;font-weight:400;color:var(--text-faint)}.stop-mode-btn.active{border-color:var(--primary);background:var(--primary-light);color:var(--primary-dark)}.stop-mode-btn.active small{color:var(--primary-dark)}.stop-hours{display:flex;flex-direction:column;gap:8px}.stop-hours-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.stop-hours-actions{display:flex;gap:4px}.stop-hour-list{display:flex;flex-direction:column;gap:2px;max-height:240px;overflow-y:auto;border:1px solid var(--border);border-radius:var(--radius-sm);padding:4px}.stop-hour{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:4px;cursor:pointer}.stop-hour:hover{background:var(--surface)}.stop-hour-day{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--primary-dark);background:var(--primary-light);border-radius:4px;padding:2px 6px}.stop-hour-time{font-weight:700;font-size:12.5px;min-width:44px}.stop-hour-name{font-size:12.5px;color:var(--text-soft);flex:1}.stop-hour .badge{font-size:10px}.bulk-edit{display:flex;flex-direction:column;gap:12px}.bulk-edit-hint{font-size:12.5px;color:var(--text-soft);line-height:1.5}.bulk-edit-row{display:grid;grid-template-columns:150px 1fr;gap:12px;align-items:center}.bulk-edit-toggle{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:600;color:var(--text);cursor:pointer}.bulk-edit-toggle input{width:16px;height:16px;accent-color:var(--primary)}.bulk-edit-input input,.bulk-edit-input select{width:100%}.bulk-edit-input input:disabled,.bulk-edit-input select:disabled{opacity:.5}.att-toolbar-count{font-size:13px;font-weight:600;color:var(--text-soft)}.tt-card-ends{align-self:flex-start;font-size:11px;font-weight:600;color:var(--gold);background:var(--gold-light);border-radius:4px;padding:3px 7px}.tt-time{width:56px;text-align:center;font-weight:700;background:var(--surface);color:var(--text-soft);white-space:nowrap;vertical-align:middle!important}.tt-cell{min-height:52px}.tt-empty{min-height:52px;background:#fbfbfc}.tt-card{border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 9px;background:#fff;display:flex;flex-direction:column;gap:4px}.tt-card+.tt-card{margin-top:6px}.tt-card.tt-gone{opacity:.55}.tt-card-name{font-weight:700;font-size:13px;line-height:1.25}.tt-card-meta{font-size:11.5px;color:var(--text-soft);display:flex;flex-wrap:wrap;gap:6px;align-items:center}.tt-card-actions{display:flex;gap:6px;flex-wrap:wrap}.tt-card-user{gap:6px}.tt-card-user .tt-card-name{display:flex;align-items:baseline;justify-content:space-between;gap:6px}.tt-card-user.tt-user-reserved{border-color:var(--primary);background:var(--primary-light)}.tt-card-user.tt-user-pending{border-color:#f59e0b;background:var(--gold-light)}.tt-card-user .btn-xs{padding:4px 9px;font-size:11.5px}.tt-card-user .hint-sub{margin-top:1px}.tt-cell .time-group{height:100%}.tt-cell .time-group,.week-list .time-group{min-width:0}.tt-cell .time-group-head,.week-list .time-group-head{display:flex;flex-direction:column;align-items:stretch;gap:3px;width:100%;padding:8px 9px;background:#fff;border:1px solid var(--border);border-radius:var(--radius-sm);font:inherit;text-align:left;cursor:pointer;transition:border-color .15s,background .15s}.tt-cell .time-group-row,.week-list .time-group-row{display:flex;align-items:baseline;justify-content:space-between;gap:6px}.tt-cell .time-group-time,.week-list .time-group-time{display:inline-flex;align-items:center;gap:6px}.tt-cell .time-group-time strong,.week-list .time-group-time strong{font-size:13px;line-height:1.2}.tt-cell .time-group-head.has-reservation,.week-list .time-group-head.has-reservation{border-color:var(--primary);background:var(--primary-light)}.tt-cell .time-group-head.has-reservation .time-group-time strong,.week-list .time-group-head.has-reservation .time-group-time strong{color:var(--primary)}.tt-cell .time-group-head.has-reservation .time-group-meta,.week-list .time-group-head.has-reservation .time-group-meta{color:var(--green-badge)}.tt-cell .time-group-head:hover,.week-list .time-group-head:hover{border-color:#cbd5e1;background:var(--surface)}.tt-cell .time-group-head.open,.week-list .time-group-head.open{border-color:#94a3b8;background:var(--surface)}.tt-cell .time-group-meta,.week-list .time-group-meta{font-size:11.5px;color:var(--text-soft)}.tt-cell .time-group-arrow,.week-list .time-group-arrow{color:var(--text-faint);font-size:11px;transition:transform .15s}.tt-cell .time-group-head.open .time-group-arrow,.week-list .time-group-head.open .time-group-arrow{transform:rotate(180deg)}.tt-cell .time-group-body,.week-list .time-group-body{display:flex;flex-direction:column;gap:6px;margin-top:6px}.tt-cell .time-group-body>.tt-card,.week-list .time-group-body>.tt-card{width:100%}.tt-cell .time-group-body .tt-card+.tt-card,.week-list .time-group-body .tt-card+.tt-card{margin-top:0}.tt-check{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--text-soft);cursor:pointer}.tt-students{margin-top:6px}.session-row{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;gap:16px;border-bottom:1px solid var(--border);transition:background .1s}.session-row:last-child{border-bottom:none}.session-row:hover{background:#f8fafc}.session-gone{opacity:.5}.session-main{display:flex;align-items:center;gap:16px;flex:1;min-width:0}.session-time{text-align:center;min-width:70px}.session-time strong{display:block;font-size:18px;line-height:1.2}.session-time span{font-size:11.5px;color:var(--text-faint);display:block}.session-info{flex:1;min-width:0}.session-name{font-weight:600;font-size:15px}.session-meta{font-size:13px;color:var(--text-soft);display:flex;gap:8px;margin-top:3px}.session-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}.cancel-zone{display:flex;align-items:center;gap:8px}.hint{font-size:12px;color:var(--text-faint);display:flex;flex-direction:column}.hint-sub{font-size:11px;font-style:italic}.tag{display:inline-block;padding:2px 8px;border-radius:12px;font-size:11px;font-weight:600;margin-left:8px}.tag-green{background:var(--primary-light);color:var(--green-badge)}.tag-gold{background:var(--gold-light);color:#92400e}.booking-section{margin-bottom:28px}.booking-section h2{font-size:16px;margin-bottom:12px;color:var(--text-soft)}.booking-list{display:flex;flex-direction:column;gap:8px}.booking-month+.booking-month{margin-top:18px}.booking-month-label{display:inline-block;font-size:12.5px;font-weight:700;text-transform:capitalize;letter-spacing:.02em;color:var(--green-badge);background:var(--primary-light);border:1px solid #bbf7d0;border-radius:999px;padding:3px 12px;margin-bottom:10px}.booking-card{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow);gap:12px}.booking-card.faded{opacity:.6;background:#f0fdf4}.booking-info{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.booking-info strong{font-size:14.5px}.booking-info span{font-size:13px;color:var(--text-soft)}.booking-actions{flex-shrink:0}.dt{width:100%;border-collapse:collapse;background:var(--card);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);margin-bottom:20px}.dt thead{background:#f3f4f6;color:#1f2937}.dt th{padding:12px 14px;text-align:left;font-size:12.5px;font-weight:700;text-transform:uppercase;letter-spacing:.5px}.dt td{padding:12px 14px;border-bottom:1px solid var(--border);font-size:14px;vertical-align:middle}.dt tbody tr:last-child td{border-bottom:none}.dt tbody tr:hover{background:#f8fafc}.cell-name{font-weight:600}.cell-actions{display:flex;gap:6px;flex-wrap:wrap}.dt select{max-width:160px;padding:6px 8px;border:1px solid var(--border);border-radius:4px;font-size:13px}.col-check{width:40px;text-align:center}.col-check input{margin:0;vertical-align:middle;cursor:pointer}.toggle{position:relative;display:inline-block;width:44px;height:24px}.toggle input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;top:0;left:0;right:0;bottom:0;background:#cbd5e1;border-radius:24px;cursor:pointer;transition:background .2s}.toggle-slider:before{content:"";position:absolute;width:18px;height:18px;border-radius:50%;background:#fff;left:3px;top:3px;transition:transform .2s}.toggle input:checked+.toggle-slider{background:var(--primary)}.toggle input:checked+.toggle-slider:before{transform:translate(20px)}.toggle input:disabled+.toggle-slider{opacity:.4}.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:16px;margin-bottom:28px}.stat-card{display:flex;align-items:center;gap:14px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;box-shadow:var(--shadow)}.stat-card-link{text-decoration:none;color:inherit;cursor:pointer;transition:border-color .15s,transform .15s,box-shadow .15s}.stat-card-link:hover{border-color:var(--primary);transform:translateY(-2px);box-shadow:var(--shadow-md);text-decoration:none}.stat-icon{font-size:28px}.stat-value{display:block;font-size:28px;font-weight:700;line-height:1.1}.stat-label{display:block;font-size:13px;color:var(--text-soft)}.stat-sub{display:block;font-size:12px;color:var(--text-faint)}.stat-body{line-height:1.4}.admin-links{display:flex;flex-wrap:wrap;gap:10px}.admin-links a{display:inline-flex;align-items:center;padding:10px 18px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);font-weight:500;font-size:14px;transition:all .15s;box-shadow:var(--shadow)}.admin-links a:hover{border-color:var(--primary);color:var(--primary);text-decoration:none}.day-sections{display:flex;flex-direction:column;gap:28px}.day-section h2{display:flex;align-items:center;gap:10px;font-size:16px;font-weight:600;color:var(--text-soft);margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--border)}.day-count{font-size:12px;font-weight:500;color:var(--text-faint)}.att-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:20px}.att-toolbar .field{max-width:260px}.att-session-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;margin-bottom:24px;align-items:start}.att-session-item{display:flex;flex-direction:column;gap:6px;min-width:0}.att-session-item.selected{grid-column:1 / -1}.att-session-btn{text-align:left;padding:14px 16px;background:var(--card);border:1.5px solid var(--border);border-radius:var(--radius-sm);display:flex;flex-direction:column;gap:4px;transition:all .15s}.att-session-btn:hover{border-color:var(--primary)}.att-session-btn.active{border-color:var(--primary);background:var(--primary-light)}.att-session-btn strong{font-size:14px}.att-session-btn span{font-size:12.5px;color:var(--text-soft)}.att-panel{padding:16px;background:var(--card);border:1px solid var(--primary);border-radius:var(--radius-sm);animation:fadeIn .2s}.att-panel h2{font-size:16px;margin-bottom:12px}.att-btns{gap:4px!important}.att-present{background:#f0fdf4!important}.att-noshow{background:#fef2f2!important}.att-session-list .time-group{min-width:0}.att-session-list .time-group-head{display:flex;flex-direction:column;align-items:stretch;gap:3px;width:100%;padding:13px 15px;background:var(--card);border:1.5px solid var(--border);border-radius:var(--radius-sm);font:inherit;text-align:left;cursor:pointer;transition:all .15s}.att-session-list .time-group-head:hover{border-color:var(--primary)}.att-session-list .time-group-head.open{border-color:var(--primary);background:var(--primary-light)}.att-session-list .time-group-row{display:flex;align-items:baseline;justify-content:space-between;gap:6px}.att-session-list .time-group-time{display:inline-flex;align-items:center;gap:6px}.att-session-list .time-group-time strong{font-size:14px;line-height:1.2}.att-session-list .time-group-arrow{color:var(--text-faint);font-size:11px;transition:transform .15s}.att-session-list .time-group-head.open .time-group-arrow{transform:rotate(180deg)}.att-session-list .time-group-meta{font-size:12.5px;color:var(--text-soft)}.att-session-list .time-group-body{display:flex;flex-direction:column;gap:8px;margin-top:8px}.att-session-list .time-group-body .att-session-item{grid-column:1 / -1}.att-session-list .time-group-body .att-session-btn{background:var(--surface);border-style:solid}.spinner-box{display:flex;flex-direction:column;align-items:center;gap:12px;padding:48px;color:var(--text-soft)}.spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{text-align:center;padding:48px 24px;background:var(--card);border-radius:var(--radius);border:1px solid var(--border)}.empty-icon{font-size:36px;margin-bottom:8px}.empty-state h3{font-size:17px;margin-bottom:4px}.empty-state p{color:var(--text-soft);font-size:14px}.toast-stack{position:fixed;top:70px;right:20px;z-index:100;display:flex;flex-direction:column;gap:8px;max-width:360px}.toast{padding:12px 18px;border-radius:var(--radius-sm);font-size:14px;font-weight:500;box-shadow:var(--shadow-md);animation:slideIn .25s;color:#fff}.toast-success{background:var(--primary)}.toast-error{background:var(--danger)}@keyframes slideIn{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:none}}.verify-banner{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;background:var(--primary-light);border:1px solid var(--primary);border-left:4px solid var(--primary);color:#2c5540;padding:10px 16px;border-radius:var(--radius-sm);margin-bottom:18px;font-size:13.5px}.verify-banner-link{padding:4px 10px;font-size:12.5px}.exc-form{align-items:flex-start}.exc-form>*{min-width:0}.exc-form button{align-self:flex-end;margin-top:18px}.exc-list-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px}.exc-select-all{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--text-soft);cursor:pointer;-webkit-user-select:none;user-select:none}.exc-select-all input{width:16px;height:16px;accent-color:var(--primary);cursor:pointer;margin:0}.exc-list-count{font-size:12.5px;color:var(--text-faint)}.exc-days{display:flex;flex-direction:column;gap:18px}.exc-days .day-block{margin-bottom:0}.exc-day-head{gap:8px;width:100%;border:none;font:inherit;font-weight:600;text-align:left}button.exc-day-head{cursor:pointer}button.exc-day-head:disabled{cursor:default}button.exc-day-head:not(:disabled):hover{background:#e8ebef}button.exc-day-head.open:not(:disabled):hover{background:var(--primary-light)}.day-block.collapsed .exc-day-head{border-radius:var(--radius)}.exc-day-count{margin-left:auto;display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 7px;border-radius:11px;background:#fff;border:1px solid var(--border);font-size:12px;font-weight:700;color:var(--text-soft)}.exc-day-caret{color:var(--text-faint);font-size:12px;line-height:1;transition:transform .15s}.exc-day-head.open .exc-day-caret{transform:rotate(180deg)}.exc-card{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;background:var(--card);border:1px solid var(--border);border-left:4px solid var(--text-faint);border-radius:var(--radius-sm);transition:box-shadow .15s,border-color .15s}.exc-card:hover{box-shadow:var(--shadow)}.exc-card.selected{border-color:var(--primary);background:var(--primary-light)}.exc-card.exc-cancel_template{border-left-color:var(--danger)}.exc-card.exc-reschedule{border-left-color:var(--gold)}.exc-card.exc-extra{border-left-color:var(--primary)}.exc-check{flex-shrink:0;width:16px;height:16px;margin-top:3px;accent-color:var(--primary);cursor:pointer}.exc-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}.exc-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.exc-title{font-size:14.5px;font-weight:700;color:var(--text)}.exc-meta{font-size:13px;color:var(--text-soft)}.exc-meta strong{color:var(--text)}.exc-actions{flex-shrink:0;align-self:center}.page-toolbar{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:20px}.page-toolbar h1{margin-bottom:0}.page-toolbar>p{margin-bottom:0;flex-basis:100%}.page-actions{display:flex;gap:10px;flex-shrink:0}.icon-btn{display:inline-flex;align-items:center;gap:7px;justify-content:center}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:grid;place-items:center;z-index:90;padding:20px;animation:fadeIn .15s}.modal{background:var(--card);border-radius:14px;width:100%;max-width:560px;box-shadow:0 20px 60px #0000004d;max-height:90vh;display:flex;flex-direction:column;animation:modalIn .2s}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 22px;border-bottom:1px solid var(--border)}.modal-head h2{font-size:17px;font-weight:700}.modal-close{background:transparent;border:none;font-size:24px;line-height:1;color:var(--text-faint);padding:4px 10px;border-radius:6px;transition:all .15s}.modal-close:hover{background:var(--surface);color:var(--text)}.modal-body{padding:20px 22px;overflow-y:auto}.modal-body form{display:flex;flex-direction:column;gap:14px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:6px;padding-top:16px;border-top:1px solid var(--border)}.confirm-message{margin:0;line-height:1.55;white-space:pre-line}.confirm-details{margin:12px 0 0;padding-left:20px;display:flex;flex-direction:column;gap:6px;font-size:14px;color:var(--text-soft)}.confirm-details li{line-height:1.5}.confirm-note{margin:14px 0 0;padding:10px 12px;border-radius:var(--radius-sm);font-size:13.5px;line-height:1.5;border-left:3px solid var(--primary);background:var(--surface);color:var(--text-soft)}.confirm-note-danger{border-left-color:var(--danger);background:var(--danger-light);color:var(--red-badge)}.confirm-dialog .modal-actions{margin-top:14px}.modal-foot{background:var(--surface);padding:12px 22px;border-top:1px solid var(--border);font-size:12.5px;color:var(--text-soft);border-radius:0 0 14px 14px}@keyframes modalIn{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}.slots-editor{display:flex;flex-direction:column;gap:8px;padding-top:2px}.slot-generator{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.slot-generator .field{min-width:0;display:flex;flex-direction:column;gap:4px}.slot-gen-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:var(--text-soft)}.slot-generator input,.slot-generator select{width:100%;box-sizing:border-box;padding:8px 10px;border:1.5px solid var(--border);border-radius:var(--radius-sm);font-family:inherit;font-size:14px;background:#fff}.slot-generator input:focus,.slot-generator select:focus{outline:none;border-color:var(--primary)}.slot-gen-btn{white-space:nowrap;grid-column:1 / -1;padding:8px 14px}.slot-gen-days{grid-column:1 / -1}.day-toggles{display:flex;gap:4px}.day-toggle{flex:1 1 0;padding:7px 10px;border:1.5px solid var(--border);border-radius:var(--radius-sm);background:#fff;font-family:inherit;font-size:12px;font-weight:600;cursor:pointer;transition:all .12s;color:var(--text-soft);line-height:1}.day-toggle:hover{border-color:var(--primary);color:var(--primary)}.day-toggle.active{background:var(--primary-light);border-color:var(--primary);color:var(--primary-dark)}.slot-chips{display:flex;flex-wrap:wrap;gap:6px;padding-top:4px}.slot-chip{display:inline-flex;align-items:center;gap:5px;background:var(--primary-light);border:1px solid var(--primary);border-radius:var(--radius-sm);padding:5px 9px;font-size:13px;line-height:1;transition:border-color .12s}.slot-chip-error{border-color:var(--danger);background:#fef2f2}.slot-chip-day{font-weight:700;font-size:11px;text-transform:uppercase;color:var(--primary-dark);letter-spacing:.3px}.slot-chip-error .slot-chip-day{color:var(--danger)}.slot-chip-time-input{width:64px;padding:2px 4px;font-size:12px;font-weight:600;text-align:center;border:1px solid var(--border);border-radius:4px;background:#fff;font-family:inherit}.slot-chip-cap{font-size:11px;color:var(--text-soft);display:inline-flex;align-items:center;gap:3px}.slot-chip-cap-input{width:44px;padding:2px 4px;font-size:12px;font-weight:600;text-align:center;border:1px solid var(--primary);border-radius:4px;background:#fff;font-family:inherit}.slot-chip-error .slot-chip-time-input,.slot-chip-error .slot-chip-cap-input{border-color:var(--danger)}.slot-chip-remove{padding:0 2px!important;font-size:13px;color:var(--text-faint);margin-left:1px}.slot-chip-remove:hover{color:var(--danger)}.form-field{display:flex;flex-direction:column;gap:5px}.form-label{font-size:12.5px;font-weight:600;color:var(--text-soft)}.form-label .req{color:var(--danger);margin-left:2px}.form-hint{font-size:11.5px;color:var(--text-faint);line-height:1.4}.form-error-msg{font-size:12px;color:var(--danger);font-weight:500}.form-field input,.form-field select{padding:9px 12px;border:1.5px solid var(--border);border-radius:var(--radius-sm);font-family:inherit;font-size:14px;background:#fff;transition:border-color .15s}.form-field input:focus,.form-field select:focus{outline:none;border-color:var(--primary)}.form-field.has-error input,.form-field.has-error select{border-color:var(--danger)}.form-field.has-error input:focus,.form-field.has-error select:focus{border-color:var(--danger)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid .full{grid-column:1 / -1}.empty-actions{margin-top:16px;display:flex;justify-content:center;gap:8px}.month-nav{display:flex;align-items:center;gap:8px;margin-bottom:18px}.month-nav-label{font-size:18px;font-weight:700;text-transform:capitalize;min-width:170px;text-align:center}.sync-square{width:36px;height:36px;padding:0;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.sync-square svg{display:block}.sync-square.syncing svg{animation:spin .9s linear infinite}.month-grid{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:24px;overflow:hidden}.att-cal{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px;margin-bottom:20px;max-width:480px}.att-cal-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}.att-cal-head strong{flex:1;text-transform:capitalize;font-size:15px}.att-cal-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.att-cal-col{text-align:center;font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--text-soft);padding:2px 0}.att-cal-day{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:46px;padding:5px 2px;border:1px solid var(--border);border-radius:8px;background:#f1f5f9;cursor:pointer;transition:background .12s,border-color .12s;font:inherit}.att-cal-day:hover{background:#e2e8f0;border-color:#cbd5e1}.att-cal-day.blank{cursor:default;background:#f8fafc;border-color:transparent}.att-cal-day.blank:hover{background:#f8fafc;border-color:transparent}.att-cal-day.today{border-color:#15803d}.att-cal-day.active{background:#dcfce7;border-color:#15803d}.att-cal-day.active .att-cal-num{color:#0f5132}.att-cal-num{font-size:13px;font-weight:600;color:var(--text)}.att-cal-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 4px;border-radius:9px;background:var(--dark);color:#fff;font-size:11px;font-weight:700}.att-cal-day.active .att-cal-badge{background:#15803d;color:#fff}.att-cal-badges{display:inline-flex;align-items:center;gap:3px}.att-cal-gdot{width:8px;height:8px;border-radius:50%;background:var(--blue)}.att-google-list{display:flex;flex-direction:column;gap:8px;margin-bottom:20px}.att-cal-day.in-week{background:#eef2f7;border-color:#94a3b8}.att-cal-day.in-week.active{background:#dcfce7;border-color:#15803d}.month-grid{background:#fafafa;border:1px solid #e5e7eb;border-radius:var(--radius)}.month-grid-head{display:grid;grid-template-columns:repeat(5,1fr);background:#f3f4f6;color:#1f2937;border-bottom:1px solid #e5e7eb}.month-grid-col{padding:10px 8px;text-align:center;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.month-grid-body{display:grid;grid-template-columns:repeat(5,1fr)}.month-day{min-height:96px;padding:7px 8px;border-top:1px solid #e5e7eb;border-right:1px solid #e5e7eb;cursor:pointer;transition:background .12s;overflow:hidden;background:#fafafa}.month-day:nth-child(5n){border-right:none}.month-day:hover{background:#f3f4f6}.month-day.blank{cursor:default;background:#fafafa}.month-day.blank:hover,.month-day.empty:hover{background:#fafafa}.month-day.disabled{cursor:default}.month-day-num{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:15px;font-weight:700;color:#1f2937;margin-bottom:6px}.month-day-caret{background:transparent;border:none;color:#9ca3af;font-size:11px;line-height:1;cursor:pointer;padding:2px 4px;border-radius:5px;transition:background .12s,color .12s,transform .12s}.month-day-caret:hover{background:#e5e7eb;color:#1f2937}.month-day-caret.open{transform:rotate(180deg)}.month-day-actions{display:inline-flex;align-items:center;gap:2px}.month-day-add{background:transparent;border:none;color:#15803d;font-size:16px;font-weight:700;line-height:1;cursor:pointer;padding:1px 5px;border-radius:5px;transition:background .12s,color .12s}.month-day-add:hover{background:#dcfce7;color:#166534}.day-summary{display:inline-flex;align-items:center;gap:6px;width:100%;padding:6px 8px;border-radius:6px;background:#fff;border:1px solid #e5e7eb;font-size:11.5px;font-weight:600;color:#374151;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:border-color .12s,box-shadow .12s}.day-summary:hover{border-color:#cbd5e1;box-shadow:0 1px 2px #0000000d}.day-summary.has-pending{border-color:#fcd34d}.day-summary-text{overflow:hidden;text-overflow:ellipsis}.day-detail{display:none;flex-direction:column;gap:4px}.month-day.expanded .day-detail{display:flex}.month-day.expanded .day-summary{display:none}.day-row{display:flex;align-items:center;gap:6px;width:100%;text-align:left;padding:5px 8px;border-radius:6px;background:#fff;border:1px solid #e5e7eb;font-size:11.5px;color:#374151;cursor:pointer;transition:border-color .12s}.day-row:hover{border-color:#15803d}.day-row.mine{background:#dcfce7;border-color:#bbf7d0;font-weight:600}.day-row.mine:hover{border-color:#15803d}.day-row.mine .day-row-time{color:#15803d}.day-row.mine .day-row-name{color:#0f5132}.day-row.mine.pending{background:var(--gold-light);border-color:#fcd34d}.day-row.mine.pending:hover{border-color:#f59e0b}.day-row.mine.pending .day-row-time,.day-row.mine.pending .day-row-name{color:#92400e}.day-row-time{font-weight:600;color:#111827}.day-row-name{color:#6b7280;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.month-day-full{grid-column:1 / -1;background:#fff;border-top:1px solid #e5e7eb;padding:10px 12px;display:flex;flex-direction:column;gap:8px}.month-day-full-head{display:flex;align-items:baseline;gap:8px;font-weight:700;font-size:13px;color:#1f2937;text-transform:capitalize}.month-day-full-head small{font-weight:400;color:var(--text-faint);text-transform:none}.month-day-full-body{display:flex;flex-direction:column;gap:6px}.month-day-full .day-row{font-size:12.5px;padding:8px 10px}.month-day-full .day-row-name{white-space:normal;overflow:visible;text-overflow:clip}.month-day.day-selected{background:#eef2f7;box-shadow:inset 0 0 0 2px var(--primary)}.month-day-reserved{display:flex;flex-direction:column;gap:3px}.month-day-reserved .day-row{flex-direction:column;align-items:flex-start;gap:1px;font-size:10.5px;padding:4px 5px}.month-day-reserved .day-row-time{font-size:10.5px;line-height:1.15}.month-day-reserved .day-row-name{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:normal;word-break:normal;line-height:1.2}.day-dot{flex-shrink:0;width:8px;height:8px;border-radius:50%;display:inline-block}.dot-ok{background:#22c55e}.dot-pending{background:#f59e0b}.dot-neutral{background:#d1d5db}.chip{display:block;width:100%;text-align:left;font-size:11.5px;padding:3px 6px;border-radius:5px;margin-bottom:4px;border:1px solid transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:all .12s}.chip:hover{transform:translateY(-1px)}.chip-mine{background:var(--primary);color:#fff;font-weight:600}.chip-mine:hover{background:var(--primary-dark)}.chip-free{background:var(--surface);color:var(--text-soft);border-color:var(--border);font-weight:500}.chip-free:hover{background:#e1f2e6}.chip-dark{background:#64748b;color:#fff;font-weight:600}.chip-dark:hover{background:#475569}.chip-muted{background:var(--surface);color:var(--text-faint);opacity:.8}.month-legend{display:flex;align-items:center;flex-wrap:wrap;gap:14px;padding:10px 14px;border-top:1px solid #e5e7eb;font-size:12px;color:var(--text-soft)}.legend-item{display:inline-flex;align-items:center;gap:6px}.swatch{width:10px;height:10px;border-radius:50%;display:inline-block}.swatch-ok{background:#22c55e}.swatch-pending{background:#f59e0b}.swatch-neutral{background:#d1d5db}.legend-hint{margin-left:auto;color:var(--text-faint);font-style:italic}.swatch-blocked,.dot-blocked{background:#ef4444}.month-day.blocked{background:#fff1f2}.month-day.blocked:hover,.month-day.blocked.empty:hover{background:#ffe4e6}.month-day.blocked .month-day-num{color:#b91c1c}.day-summary-blocked{background:#fee2e2;border-color:#fecaca;color:#991b1b}.att-cal-day.blocked{background:#fee2e2;border-color:#fca5a5}.att-cal-day.blocked:hover{background:#fecaca;border-color:#f87171}.att-cal-day.blocked .att-cal-num{color:#991b1b}.att-cal-lock{font-size:11px;line-height:1}.att-cal-legend{display:flex;align-items:center;gap:14px;margin-top:10px;font-size:12px;color:var(--text-soft)}.block-banner{display:flex;align-items:center;gap:8px;padding:10px 14px;margin-bottom:12px;border-radius:var(--radius-sm);background:#fee2e2;border:1px solid #fecaca;color:#991b1b;font-size:13px}.block-warning{color:#991b1b}.section-accent{border-left:4px solid #93c5fd}.section-accent>h2{color:#1d4ed8}.gcal-head{display:flex;justify-content:space-between;align-items:center;gap:12px 16px;flex-wrap:wrap;margin-bottom:8px}.gcal-head h2{color:#1d4ed8;margin-bottom:0}.gcal-head .page-actions{flex-wrap:wrap}.gcal-intro{color:var(--text-soft);font-size:13px;line-height:1.5;margin:0}.gcal-block{margin-top:18px;padding-top:18px;border-top:1px solid var(--border)}.gcal-alert{margin-top:16px;padding:16px;border-radius:var(--radius-sm);border:1px solid var(--border)}.gcal-alert .muted{text-align:left;padding:0;margin:6px 0 0}.gcal-share-head{display:flex;align-items:baseline;gap:6px 10px;flex-wrap:wrap}.gcal-tight{margin:6px 0 0}.gcal-list{margin:6px 0 0;padding-left:18px;overflow-wrap:anywhere}.gcal-accounts{margin-top:12px}.gcal-share-form{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px}.gcal-share-form input[type=email]{min-width:220px;flex:1 1 220px}.gcal-alert-actions{margin-top:8px;flex-wrap:wrap}.gcal-conflicts-hint{margin:6px 0 10px}.modal-delete{margin-right:auto}.info-details{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);padding:0 14px}.info-details>summary{cursor:pointer;padding:11px 0;font-size:13.5px;color:var(--text-soft);list-style:none;display:flex;align-items:center;gap:8px}.info-details>summary::-webkit-details-marker{display:none}.info-details>summary:before{content:"▸";font-size:11px;color:var(--text-faint);transition:transform .15s}.info-details[open]>summary:before{content:"▾"}.info-details>summary:hover{color:var(--text)}.info-details .muted{padding:0 0 12px;text-align:left;color:var(--text-soft);font-size:13px;line-height:1.55}.info-details .muted+.muted{padding-top:0}.info-details+.info-details{margin-top:12px}.week-detail{scroll-margin-top:76px}.week-chip{cursor:pointer;transition:all .15s}.week-chip:hover{border-color:var(--primary)}.week-chip.active{border-color:var(--primary);background:var(--primary-light)}.credit-chips.wrap{flex-wrap:wrap;margin-bottom:18px}.today-panel{margin-bottom:28px}.today-panel h2{font-size:17px;margin-bottom:12px;color:var(--dark-soft)}.session-row{flex-wrap:wrap}.session-students{width:100%;padding:12px 16px;background:#f0fdf4;border-radius:var(--radius-sm);margin-top:4px}.students-list{display:flex;flex-direction:column;gap:8px}.student-chip{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 12px}.student-name{font-weight:600;font-size:13.5px}.student-mail{color:var(--text-faint);font-size:12.5px}.student-mail:before{content:"· "}.student-cancel{margin-left:auto}.students-loading,.students-empty{padding:16px;color:var(--text-faint);font-size:13.5px;text-align:center}.session-row-admin-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.admin-book-session{background:var(--primary-light);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px;margin-bottom:16px}.admin-book-session-name{font-weight:700;font-size:15px;display:flex;align-items:center;gap:8px}.admin-book-session-meta{font-size:12.5px;color:var(--text-soft);margin-top:3px}.admin-book-body{display:flex;flex-direction:column;gap:12px;margin-bottom:6px}.admin-book-credit{border-top:1px dashed var(--border);padding-top:10px;font-size:13px}.admin-book-credit p{margin:0}.admin-book-credit strong{color:var(--primary)}.admin-book-warn{color:var(--danger);font-weight:500}.admin-book-results{display:flex;flex-direction:column;gap:4px;max-height:220px;overflow-y:auto}.admin-book-result{display:flex;flex-direction:column;align-items:flex-start;gap:1px;width:100%;text-align:left;padding:9px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface, #fff);cursor:pointer;font:inherit;transition:background .12s,border-color .12s}.admin-book-result:hover{background:var(--primary-light);border-color:var(--primary)}.abr-name{font-weight:600;font-size:14px}.abr-mail{font-size:12px;color:var(--text-soft)}.admin-book-results-more{font-size:12px;color:var(--text-faint);text-align:center;padding:4px 0}.admin-book-selected{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--primary);border-radius:8px;background:var(--primary-light)}.admin-book-selected .abr-name{flex:1}.admin-book-empty{font-size:13px;color:var(--text-soft);margin:0}.admin-book-create-toggle{align-self:flex-start}.admin-book-create{border-top:1px dashed var(--border);padding-top:14px;display:flex;flex-direction:column;gap:12px}.admin-book-create h3{font-size:14px;margin:0}.admin-book-create-actions{display:flex;justify-content:flex-end;gap:8px}.admin-book-chosen{display:flex;flex-direction:column;gap:6px}.admin-book-chosen-item{display:flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid var(--primary);border-radius:8px;background:var(--primary-light)}.admin-book-chosen-item .abc-info{flex:1;display:flex;flex-direction:column}.admin-book-chosen-item .abc-credit{font-size:12px;color:var(--text-soft);text-align:right}.admin-book-chosen-item .abc-credit .admin-book-warn{font-size:12px}.admin-book-failures{display:flex;flex-direction:column;gap:4px;border-top:1px dashed var(--border);padding-top:10px}.admin-book-failures .admin-book-warn{margin:0;font-size:13px}@media (max-width: 1024px){.topbar-inner{gap:14px;padding:0 16px}.content{padding:20px}.nav{display:none}.nav-toggle{display:flex}.month-grid-head,.month-grid-body{grid-template-columns:repeat(5,minmax(52px,1fr))}.month-day{min-height:78px;padding:5px}}@media (max-width: 860px){.topbar-inner{padding:0 16px;gap:10px}.user-meta{display:none}.content{padding:16px}.session-row{flex-direction:column;align-items:stretch}.session-actions{width:100%;justify-content:flex-start;flex-wrap:wrap}.page-head{flex-direction:column}.credit-chips{width:100%}.credit-chip{flex:1 1 auto;min-width:0}.dt{display:block;overflow-x:auto}.form-grid{grid-template-columns:1fr}.modal{max-width:100%;margin:0 8px}.modal-body{padding:16px 18px}.tab{padding:10px 14px;font-size:13px}.month-grid-head,.month-grid-body{grid-template-columns:repeat(5,minmax(44px,1fr))}.month-day{min-height:70px;padding:4px}.chip{font-size:10px;padding:2px 4px}.legend-hint{display:none}.att-toolbar .field{max-width:100%}.gcal-head{align-items:flex-start}.gcal-head .page-actions{flex-wrap:wrap}.gcal-share-form input[type=email]{min-width:0;flex:1 1 100%}.week-chip{flex:1 1 45%}.booking-card{flex-direction:column;align-items:stretch;gap:10px}.booking-actions{width:100%;display:flex}.booking-actions button{flex:1}.session-main{flex-wrap:wrap}.page-toolbar{align-items:flex-start}.page-actions button{white-space:nowrap}}@media (max-width: 640px){html{font-size:14px}body{padding-bottom:env(safe-area-inset-bottom)}.topbar-inner{padding:8px 12px}.content{padding-bottom:calc(12px + env(safe-area-inset-bottom))}.auth-page{padding:16px}.auth-card{padding:28px 20px}.auth-brand h1{font-size:19px}.auth-brand .brand-logo.large{width:72px;height:72px}.brand-text{display:none}.brand-logo{width:36px;height:36px}.user-chip{padding:4px 8px 4px 4px}.user-avatar{width:26px;height:26px;font-size:12px}.user-plan{display:none}.content{padding:12px}h1,.page h1{font-size:20px}.month-nav{gap:6px}.month-nav-label{min-width:0;font-size:15px;flex:1}.month-grid{overflow:hidden}.month-grid-head,.month-grid-body{grid-template-columns:repeat(5,1fr)}.month-day{min-height:80px;padding:4px}.chip{font-size:9px;padding:2px 3px;border-radius:4px;margin-bottom:3px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.month-day-num{margin-bottom:3px}.day-summary{white-space:normal;align-items:flex-start;padding:4px 5px;gap:4px;font-size:10px}.day-summary-text{white-space:normal;overflow:visible;text-overflow:clip}.tabs{overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:2px}.tab{flex-shrink:0}.credit-chips.wrap{gap:8px}.week-chip{flex:1 1 45%}.session-row{padding:12px 14px;gap:10px}.session-row-admin-actions{width:100%}.session-row-admin-actions button{flex:1 1 100%;justify-content:center}.session-main{flex-direction:column;align-items:flex-start;gap:8px}.session-time{text-align:left;min-width:0;display:flex;gap:6px;align-items:baseline}.session-time strong{font-size:16px}.session-time span{display:inline}.session-actions{gap:8px}.cancel-zone{flex-wrap:wrap;gap:6px}.dt{display:block;overflow:visible;background:transparent;box-shadow:none;border-radius:0}.dt thead{display:none}.dt tbody{display:flex;flex-direction:column;gap:10px}.dt tr{display:block;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:4px 0;box-shadow:var(--shadow)}.dt td{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:9px 14px;border-bottom:1px solid var(--border);text-align:right}.dt td:before{content:attr(data-label);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--text-faint);flex-shrink:0;padding-top:2px;align-self:flex-start}.dt tr td:last-child{border-bottom:none}.dt tr:last-child td:last-child{border-bottom:none}.dt .cell-name{font-size:15px;font-weight:700}.dt .cell-name:before{padding-top:3px}.cell-actions button{white-space:nowrap}.dt select{flex:0 1 auto;min-width:0;max-width:100%}.dt tbody tr:hover{background:var(--card)}.exc-card{flex-wrap:wrap}.exc-actions{width:100%;align-self:stretch}.exc-actions button{width:100%;justify-content:center}.form-section{padding:14px}.inline-form input,.inline-form select{flex:1 1 100%;min-width:0}.inline-form button{width:100%}.modal-overlay{padding:8px}.modal{max-height:92vh;margin-bottom:env(safe-area-inset-bottom)}.modal-actions{flex-direction:column}.modal-actions button{width:100%}.slot-generator{grid-template-columns:1fr}.slot-gen-days,.slot-gen-btn{grid-column:auto}.day-toggle{flex:1 1 0;padding:8px 6px}.stat-grid{grid-template-columns:repeat(2,1fr);gap:10px}.stat-card{padding:14px}.stat-value,.stat-icon{font-size:22px}.admin-links a{flex:1 1 45%;justify-content:center}.toast-stack{top:auto;bottom:16px;left:12px;right:12px;max-width:none}.student-chip{flex-wrap:wrap;gap:4px 8px}.student-mail{width:100%}.student-mail:before{content:""}.att-btns{gap:4px}.att-session-list{grid-template-columns:1fr}}.whatsapp-fab-wrap{position:fixed;right:20px;bottom:20px;z-index:80}.whatsapp-fab{width:56px;height:56px;padding:0;border:none;border-radius:50%;background:#25d366;color:#fff;display:grid;place-items:center;box-shadow:0 6px 16px #00000038;transition:transform .2s ease,box-shadow .2s ease;cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none}.whatsapp-fab:active{cursor:grabbing}.whatsapp-fab:hover{transform:scale(1.08);box-shadow:0 8px 20px #25d36666}.whatsapp-fab svg{display:block}.whatsapp-menu{position:absolute;bottom:calc(100% + 10px);right:0;z-index:1;min-width:216px;max-width:78vw;display:flex;flex-direction:column;gap:2px;padding:6px;background:#fff;border:1px solid #eceff1;border-radius:12px;box-shadow:0 12px 30px #0000002e}.whatsapp-menu.below{top:calc(100% + 10px);bottom:auto}.whatsapp-menu.align-left{right:auto;left:0}.whatsapp-menu-title{padding:4px 8px 6px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.02em;color:#9aa0a6}.whatsapp-menu-item{display:block;padding:8px 10px;border-radius:8px;text-decoration:none;color:inherit;transition:background .15s ease}.whatsapp-menu-item:hover{background:#f0fdf4}.whatsapp-menu-item strong{display:block;color:#111827;font-size:.85rem}.whatsapp-menu-item span{display:block;margin-top:1px;color:#6b7280;font-size:.74rem;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}html{-webkit-text-size-adjust:100%}body{-webkit-tap-highlight-color:transparent;overflow-x:clip}.page,.content,.form-section,.modal-body,.att-panel,.day-body,.week-list,.booking-list{min-width:0}.page,.form-section,.day-body,.tt-card,.booking-card,.admin-book-session,.att-session-btn{overflow-wrap:anywhere}.tt-wrap{-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}.tt-scroll-hint{display:none}@media (max-width: 1024px){.tt{min-width:560px}.tt-time,.tt-corner{position:sticky;left:0}.tt-time{z-index:2}.tt thead .tt-corner{z-index:3}}@media (max-width: 860px){.btn-primary,.btn-outline,.btn-danger{min-height:40px}.btn-sm{min-height:38px}.btn-xs{min-height:34px}.btn-ghost{min-height:38px}.field input,.field select,.form-section input,.form-section select,.inline-form input,.inline-form select,.form-field input,.form-field select,.slot-generator input,.slot-generator select,.att-toolbar select{min-height:44px}.tab{min-height:44px;display:inline-flex;align-items:center}.day-toggle{min-height:40px}.admin-links a{min-height:44px}.att-cal-day{min-height:52px}.tt-scroll-hint{display:block;margin:0 0 8px;font-size:12px;color:var(--text-faint);text-align:center;font-style:italic}}@media (max-width: 640px){.topbar{padding-top:env(safe-area-inset-top)}.tt-card .btn-xs,.tt-card-user .btn-xs{min-height:36px;padding:6px 12px;font-size:12.5px}.tt-card-actions{gap:8px}.time-group-head{min-height:52px}.month-day{min-height:88px;padding:5px}.month-day-num{font-size:14px}.chip{min-height:20px;font-size:10px;padding:4px 5px}.page-toolbar .page-actions{width:100%}.page-toolbar .page-actions .btn-primary,.page-toolbar .page-actions .btn-outline,.page-toolbar .page-actions .btn-danger{width:100%;justify-content:center}.gcal-head{align-items:flex-start;flex-direction:column}.gcal-head .page-actions{width:100%;flex-direction:column}.gcal-head .page-actions .btn-primary,.gcal-head .page-actions .btn-outline,.gcal-head .page-actions .btn-danger{width:100%;justify-content:center}.gcal-share-form{flex-direction:column;align-items:stretch}.gcal-share-form input[type=email]{min-width:0;flex:none;width:100%}.gcal-share-form select,.gcal-share-form button{width:100%}.gcal-alert-actions{flex-direction:column}.gcal-alert-actions .btn-primary,.gcal-alert-actions .btn-outline,.att-toolbar .btn-danger,.att-toolbar .btn-outline{width:100%;justify-content:center}.bulk-edit-row{grid-template-columns:1fr;gap:6px}.dt td.col-check{justify-content:flex-start}.cell-actions .btn-xs{min-height:36px;padding:6px 12px;font-size:12.5px}.student-cancel{min-height:34px}.modal-overlay{align-items:end;padding:0}.modal{max-height:94vh;border-radius:16px 16px 0 0;padding-bottom:env(safe-area-inset-bottom);animation:sheetUp .25s ease}.modal-head{position:sticky;top:0;background:var(--card);z-index:1;border-radius:16px 16px 0 0}.whatsapp-fab-wrap{right:14px;bottom:64px}.whatsapp-fab{width:48px;height:48px}}@keyframes sheetUp{0%{transform:translateY(100%)}to{transform:none}}:root{--blue: #2563eb;--blue-dark: #1d4ed8;--blue-light: #dbeafe;--blue-badge: #1e40af}.badge-blue,.tag-blue{background:var(--blue-light);color:var(--blue-badge)}.dot-specific,.swatch-specific{background:var(--blue)}.day-row.specific{background:var(--blue-light);border-color:#bfdbfe}.day-row.specific:hover{border-color:var(--blue)}.day-row.specific .day-row-time{color:var(--blue-dark)}.day-row.specific .day-row-name{color:var(--blue-badge)}.tt-card.specific{border-color:#93c5fd;background:#eff6ff}.tt-card.specific .tt-card-name{color:var(--blue-badge)}.tt-card.external{border-color:#93c5fd;background:#eff6ff;border-style:dashed}.tt-card.external .tt-card-name{color:var(--blue-badge)}.tt-card.external .tt-card-meta{color:#3b5b8c}.time-group-head.specific{border-color:#93c5fd;background:#eff6ff}.time-group-head.specific .time-group-time strong{color:var(--blue-dark)}:root{--purple: #7c3aed;--purple-dark: #5b21b6;--purple-light: #ede9fe;--purple-badge: #6d28d9}.tag-purple{background:var(--purple-light);color:var(--purple-badge)}.dot-personal,.swatch-personal{background:var(--purple)}.day-row.personal{background:var(--purple-light);border-color:#ddd6fe;font-style:normal}.day-row.personal:hover{border-color:var(--purple)}.day-row.personal .day-row-time{color:var(--purple-dark)}.day-row.personal .day-row-name{color:var(--purple-badge)}.tt-card.personal{border-color:#c4b5fd;background:#f5f3ff;border-style:dashed}.tt-card.personal .tt-card-name{color:var(--purple-badge)}.tt-card.personal .tt-card-meta{color:#5b4b8a}.tt-card-clickable{cursor:pointer}.tt-card-clickable:hover{border-color:var(--purple);box-shadow:0 1px 3px #00000014}.tt-card-clickable.external:hover{border-color:var(--blue)}.event-author-note{margin:2px 0 10px;font-size:13px}.event-author-note strong{color:var(--text)}.checkbox-row{display:flex;align-items:center;gap:8px;margin:2px 0 12px;font-size:13.5px;font-weight:600;color:var(--text-soft);cursor:pointer}.checkbox-row input{width:16px;height:16px;accent-color:var(--primary)}.event-kind{display:flex;gap:8px;margin-bottom:14px}.event-kind button{flex:1;padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);font-weight:600;font-size:13.5px;color:var(--text-soft);transition:border-color .12s,background .12s,color .12s}.event-kind button.active{border-color:var(--primary);background:var(--primary-light);color:var(--primary-dark)}.day-add-personal{margin-left:auto;color:var(--purple-badge)}.day-add-personal:hover{color:var(--purple-dark)}.conflict-list{display:flex;flex-direction:column;gap:10px;margin-bottom:20px}.conflict-card{border:1px solid var(--gold);border-left:4px solid var(--gold);border-radius:var(--radius-sm);padding:12px 14px;background:#fffbeb}.conflict-card h3{font-size:14.5px;margin-bottom:4px}.conflict-card .conflict-meta{font-size:12.5px;color:var(--text-soft);margin-bottom:8px}.conflict-actions{display:flex;gap:8px;flex-wrap:wrap}.admin-session-warning{color:#92400e;background:#fffbeb;border:1px solid #fde68a;border-radius:8px;padding:8px 10px;margin-top:6px}.reconnect-alert{border-left:4px solid #f59e0b}.reconnect-alert-warn{background:#fffbeb;border-color:#fde68a}.reconnect-alert-warn strong{color:#92400e}.reconnect-alert-danger{background:var(--danger-light);border-color:var(--danger)}.reconnect-alert-danger strong{color:var(--danger)}.dash-alert{display:flex;flex-direction:column;gap:2px;margin:12px 0 4px;padding:12px 16px;border-radius:var(--radius);border-left:4px solid #f59e0b;text-decoration:none}.dash-alert strong{font-size:14.5px}.dash-alert span{font-size:13px;opacity:.9}.dash-alert-warn{background:#fffbeb;border-color:#fde68a;color:#92400e}.dash-alert-danger{background:var(--danger-light);border-color:var(--danger);color:var(--danger)}.dash-alert:hover{filter:brightness(.97)}.day-row.admin-tint{background:color-mix(in srgb,var(--admin-color) 12%,#fff);border-color:color-mix(in srgb,var(--admin-color) 45%,#fff)}.day-row.admin-tint:hover{border-color:var(--admin-color)}.day-row.admin-tint .day-row-time,.day-row.admin-tint .day-row-name{color:var(--admin-color)}.day-row.has-author{font-weight:500}.tt-card.tt-card-authored{border-color:var(--border);background:#fff}.tt-card-author{align-self:flex-start;display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;color:var(--admin-color, #64748b);background:color-mix(in srgb,var(--admin-color, #64748b) 12%,#fff);border:1px solid color-mix(in srgb,var(--admin-color, #64748b) 35%,#fff);border-radius:999px;padding:2px 9px;margin-top:2px}.tt-card-author:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--admin-color, #64748b)}.day-row-author{margin-left:6px;padding:1px 8px;border-radius:999px;font-size:10.5px;font-weight:600;color:var(--admin-color, #3b5b8c);background:color-mix(in srgb,var(--admin-color, #3b5b8c) 12%,#fff);border:1px solid color-mix(in srgb,var(--admin-color, #3b5b8c) 35%,#fff)}.day-row.specific .day-row-author{color:var(--admin-color, var(--blue-badge))}.day-row.specific .day-row-author:before{content:"";display:inline-block;width:6px;height:6px;margin-right:5px;border-radius:50%;background:var(--admin-color, var(--blue))}.time-group-head.admin-tint{border-color:var(--border);background:#fff;border-left:3px solid var(--admin-color, #64748b)}.time-group-author{display:inline-flex;align-items:center;margin-left:6px;padding:1px 8px;border-radius:999px;font-size:10.5px;font-weight:600;color:var(--admin-color, #64748b);background:color-mix(in srgb,var(--admin-color, #64748b) 12%,#fff);border:1px solid color-mix(in srgb,var(--admin-color, #64748b) 35%,#fff)}.tag-admin{background:color-mix(in srgb,var(--admin-color, #64748b) 15%,#fff);color:var(--admin-color, #64748b);border:1px solid color-mix(in srgb,var(--admin-color, #64748b) 35%,#fff)}.day-columns{margin:16px 0;scroll-margin-top:80px}.day-columns-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:10px}.day-columns-head h2{font-size:16px}.day-columns-head small{font-size:12.5px;color:var(--text-soft)}.day-columns-block{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:var(--danger)}.day-columns-toggle{margin-left:auto}.day-columns-people{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:10px}.day-columns-people-label{font-size:12.5px;font-weight:600;color:var(--text-soft)}.day-person-chip{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:999px;cursor:pointer;font-size:12px;font-weight:600;color:var(--admin-color, var(--text-soft));background:color-mix(in srgb,var(--admin-color, #64748b) 12%,#fff);border:1px solid color-mix(in srgb,var(--admin-color, #64748b) 35%,#fff)}.day-person-dot{width:7px;height:7px;border-radius:50%;background:var(--admin-color, var(--text-soft))}.day-person-chip.off{opacity:.45;text-decoration:line-through}.day-columns-empty{font-size:13.5px}.day-grid-scroll{overflow-x:auto;padding-bottom:4px}.day-grid{display:grid;min-width:max-content;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;background:#fff}.day-grid-corner{position:sticky;left:0;z-index:2;background:#f1f5f9;border-right:1px solid var(--border);border-bottom:1px solid var(--border)}.day-grid-colhead{position:sticky;top:0;z-index:3;display:flex;align-items:center;gap:6px;padding:0 10px;background:color-mix(in srgb,var(--admin-color, #64748b) 10%,#fff);border-bottom:2px solid var(--admin-color, var(--border));border-left:1px solid var(--border);font-size:12.5px;font-weight:700;color:var(--admin-color, var(--text));min-height:34px}.day-column-dot{width:9px;height:9px;border-radius:50%;background:var(--admin-color, var(--text-soft));flex:none}.day-column-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.day-column-count{font-size:11px;font-weight:700;color:var(--admin-color, var(--text-soft));background:color-mix(in srgb,var(--admin-color, #64748b) 14%,#fff);border-radius:999px;padding:1px 7px}.day-grid-time{position:sticky;left:0;z-index:1;display:flex;align-items:flex-start;justify-content:flex-end;padding:1px 6px 0 0;background:#f8fafc;border-right:1px solid var(--border);border-bottom:1px solid var(--border);font-size:10.5px;color:var(--text-soft)}.day-grid-time.on-hour{font-weight:700;color:var(--text);border-top:1px solid var(--border)}.day-grid-slot{display:flex;flex-direction:column;gap:2px;border-left:1px solid var(--border);border-bottom:1px solid var(--border);padding:2px;min-width:0;overflow:hidden}.dcb{display:flex;flex-direction:column;gap:0;height:100%;box-sizing:border-box;padding:3px 6px;border-radius:5px;border:1px solid var(--border);border-left:3px solid var(--admin-color, var(--border));background:#f1f5f9;overflow:hidden;font-size:11px;line-height:1.25}.dcb-clickable{cursor:pointer}.dcb-clickable:hover{border-color:var(--admin-color, var(--blue))}.dcb-time{font-weight:700;color:var(--text-soft);font-size:10.5px}.dcb-name{font-weight:600;color:var(--text)}.dcb-author{font-size:10px;font-weight:700;color:var(--admin-color, var(--text-soft))}.dcb-meta{font-size:10px;color:var(--text-soft)}.dcb-short{flex-direction:row;align-items:center;gap:6px;padding:0 6px}.dcb-short .dcb-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.day-group{border-left:3px solid var(--admin-color, var(--border));border-radius:var(--radius-sm);padding:4px 0 4px 8px;margin-bottom:8px;background:color-mix(in srgb,var(--admin-color, #64748b) 4%,#fff)}.day-group-head{display:flex;align-items:center;gap:6px;margin-bottom:4px;font-size:12.5px;font-weight:700;color:var(--admin-color, var(--text))}.day-group-dot{width:9px;height:9px;border-radius:50%;background:var(--admin-color, var(--text-soft));flex:none}.day-group-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.day-group-count{font-size:11px;font-weight:700;color:var(--admin-color, var(--text-soft));background:color-mix(in srgb,var(--admin-color, #64748b) 14%,#fff);border-radius:999px;padding:1px 7px}.day-group-body{display:flex;flex-direction:column;gap:8px}.dcb-google{border-style:dashed;border-color:#93c5fd;background:#eff6ff}.dcb-extra{border-color:#86efac;background:#f0fdf4}.dcb-full{border-color:var(--danger);background:#fef2f2}.btn-outline.dup-alert{border-color:var(--danger);color:var(--danger)}.dup-actions-bar{display:flex;justify-content:flex-end;margin-top:10px}.dup-list{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}.dup-item{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 10px;background:#fff}.dup-info{display:flex;flex-direction:column;gap:2px;min-width:0}.dup-info strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dup-info .muted{font-size:12px}
