.auth{min-height:100vh;display:grid;grid-template-columns:1.05fr 1fr;background:var(--bg);position:relative}.auth-theme-toggle{position:absolute;top:18px;right:18px;z-index:5;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-sm)}.auth-aside{position:relative;overflow:hidden;background:radial-gradient(900px 500px at 15% 10%,rgba(255,255,255,.1),transparent 60%),var(--brand-grad);color:#fff;display:flex;align-items:center;padding:64px}.auth-aside-inner{position:relative;z-index:2;max-width:420px}.auth-aside-logo{height:42px;width:auto;margin-bottom:38px;filter:brightness(0) invert(1)}.auth-aside h2{color:#fff;font-size:2rem;line-height:1.18;letter-spacing:-.02em}.auth-aside p{color:#ffffffdb;margin-top:16px;font-size:1.02rem;line-height:1.6}.auth-points{list-style:none;padding:0;margin:36px 0 0;display:flex;flex-direction:column;gap:15px}.auth-points li{display:flex;align-items:center;gap:12px;color:#fffffff2;font-weight:500}.auth-points li span{width:22px;height:22px;border-radius:7px;flex:none;background:rgba(255,255,255,.18);position:relative}.auth-points li span:after{content:"";position:absolute;left:7px;top:4px;width:6px;height:10px;border:solid #fff;border-width:0 2.4px 2.4px 0;transform:rotate(45deg)}.auth-aside-glow{position:absolute;right:-120px;bottom:-120px;width:360px;height:360px;background:radial-gradient(circle,rgba(255,255,255,.22),transparent 65%);border-radius:50%}.auth-main{display:flex;align-items:center;justify-content:center;padding:40px 24px}.auth-card{width:100%;max-width:380px}.auth-logo{height:38px;width:auto;margin-bottom:30px}[data-theme=dark] .auth-logo{content:url(/tutorvio-logo-dark.png)}.auth-heading h1{font-size:1.7rem}.auth-heading p{color:var(--text-3);margin-top:6px}.auth-form{display:flex;flex-direction:column;gap:16px;margin-top:28px}.auth-submit{height:46px;font-size:.95rem;margin-top:6px}.auth-footnote{margin-top:22px;text-align:center;color:var(--text-3);font-size:.85rem}@media (max-width: 860px){.auth{grid-template-columns:1fr}.auth-aside{display:none}}.sidebar{width:var(--sidebar-w);flex:none;height:100vh;position:sticky;top:0;z-index:70;display:flex;flex-direction:column;background:var(--surface);border-right:1px solid var(--border);padding:20px 14px 16px}.sidebar-brand{display:flex;align-items:center;gap:8px;padding:4px 10px 22px}.sidebar-logo{height:26px;width:auto;flex:none}[data-theme=dark] .sidebar-logo{content:url(/tutorvio-logo-dark.png)}.sidebar-sub{font-size:.6rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--primary);background:var(--primary-soft);padding:3px 7px;border-radius:6px;line-height:1;white-space:nowrap}.bell-wrap{position:relative;margin-left:auto}.bell-btn{position:relative;display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:none;border:none;cursor:pointer;color:var(--text-2);transition:background .14s,color .14s}.bell-btn:hover{background:var(--surface-3);color:var(--text)}.bell-btn.has-alerts{color:var(--danger)}.bell-badge{position:absolute;top:1px;right:0;min-width:16px;height:16px;padding:0 4px;border-radius:99px;background:var(--danger);color:#fff;font-size:.62rem;font-weight:800;line-height:16px;text-align:center;box-shadow:0 0 0 2px var(--surface)}.bell-pop{position:absolute;z-index:90;top:calc(100% + 8px);left:-12px;width:330px;max-width:calc(100vw - 32px);background:var(--surface);border:1px solid var(--border-strong);border-radius:12px;box-shadow:var(--shadow-md);display:flex;flex-direction:column}.bell-pop-head{display:flex;align-items:center;gap:8px;padding:12px 14px;font-weight:700;font-size:.88rem;border-bottom:1px solid var(--border)}.bell-empty{padding:16px 14px;font-size:.86rem}.bell-list{max-height:330px;overflow-y:auto}.bell-row{display:flex;flex-direction:column;gap:8px;padding:11px 14px;border-bottom:1px solid var(--border)}.bell-row:last-child{border-bottom:none}.bell-row-main{display:flex;flex-direction:column;gap:1px;min-width:0}.bell-row-name{font-weight:600;font-size:.88rem}.bell-row-meta{font-size:.74rem}.bell-row-actions{display:flex;gap:8px}.bell-row-actions .btn{flex:1;white-space:nowrap}.bell-foot{display:block;padding:10px 14px;text-align:center;font-size:.84rem;font-weight:600;color:var(--primary);text-decoration:none;border-top:1px solid var(--border)}.bell-foot:hover{background:var(--surface-2)}.sidebar-nav{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:18px}.nav-section{display:flex;flex-direction:column;gap:3px}.nav-label{font-size:.68rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--text-3);padding:6px 10px 4px}.nav-item{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:10px;color:var(--text-2);font-weight:600;font-size:.9rem;text-decoration:none;position:relative;transition:background .14s,color .14s}.nav-item:hover{background:var(--surface-2);color:var(--text);text-decoration:none}.nav-item-icon{width:19px;height:19px;flex:none;color:var(--text-3);transition:color .14s}.nav-item:hover .nav-item-icon{color:var(--text-2)}.nav-item.active{background:var(--primary-soft);color:var(--primary)}.nav-item.active .nav-item-icon{color:var(--primary)}.nav-item.active:before{content:"";position:absolute;left:-14px;top:50%;transform:translateY(-50%);width:3px;height:20px;border-radius:0 3px 3px 0;background:var(--brand-grad)}.sidebar-foot{display:flex;flex-direction:column;gap:8px;padding-top:12px;border-top:1px solid var(--border)}.theme-row{display:flex;align-items:center;justify-content:space-between;gap:10px;background:transparent;border:none;cursor:pointer;padding:8px 11px;border-radius:10px;color:var(--text-2);font:inherit;font-weight:600;font-size:.86rem;transition:background .14s}.theme-row:hover{background:var(--surface-2)}.theme-row-label{display:inline-flex;align-items:center;gap:9px}.user-card{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:12px;border:1px solid var(--border);background:var(--surface-2);text-decoration:none;transition:border-color .14s,background .14s}.user-card:hover{text-decoration:none;border-color:var(--border-strong)}.user-avatar{width:36px;height:36px;flex:none;border-radius:10px;background:var(--brand-grad);color:#fff;font-weight:700;font-size:.82rem;display:grid;place-items:center;letter-spacing:.02em}.user-meta{display:flex;flex-direction:column;min-width:0;flex:1}.user-name{font-weight:600;font-size:.86rem;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-email{font-size:.76rem;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-card-go{color:var(--text-3);flex:none}.logout-btn{color:var(--text-2)}.logout-btn:hover{color:var(--danger)}.react-calendar{width:350px;max-width:100%;background:white;border:1px solid #a0a096;font-family:Arial,Helvetica,sans-serif;line-height:1.125em}.react-calendar--doubleView{width:700px}.react-calendar--doubleView .react-calendar__viewContainer{display:flex;margin:-.5em}.react-calendar--doubleView .react-calendar__viewContainer>*{width:50%;margin:.5em}.react-calendar,.react-calendar *,.react-calendar *:before,.react-calendar *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.react-calendar button{margin:0;border:0;outline:none}.react-calendar button:enabled:hover{cursor:pointer}.react-calendar__navigation{display:flex;height:44px;margin-bottom:1em}.react-calendar__navigation button{min-width:44px;background:none}.react-calendar__navigation button:disabled{background-color:#f0f0f0}.react-calendar__navigation button:enabled:hover,.react-calendar__navigation button:enabled:focus{background-color:#e6e6e6}.react-calendar__month-view__weekdays{text-align:center;text-transform:uppercase;font:inherit;font-size:.75em;font-weight:700}.react-calendar__month-view__weekdays__weekday{padding:.5em}.react-calendar__month-view__weekNumbers .react-calendar__tile{display:flex;align-items:center;justify-content:center;font:inherit;font-size:.75em;font-weight:700}.react-calendar__month-view__days__day--weekend{color:#d10000}.react-calendar__month-view__days__day--neighboringMonth,.react-calendar__decade-view__years__year--neighboringDecade,.react-calendar__century-view__decades__decade--neighboringCentury{color:#757575}.react-calendar__year-view .react-calendar__tile,.react-calendar__decade-view .react-calendar__tile,.react-calendar__century-view .react-calendar__tile{padding:2em .5em}.react-calendar__tile{max-width:100%;padding:10px 6.6667px;background:none;text-align:center;line-height:16px;font:inherit;font-size:.833em}.react-calendar__tile:disabled{background-color:#f0f0f0;color:#ababab}.react-calendar__month-view__days__day--neighboringMonth:disabled,.react-calendar__decade-view__years__year--neighboringDecade:disabled,.react-calendar__century-view__decades__decade--neighboringCentury:disabled{color:#cdcdcd}.react-calendar__tile:enabled:hover,.react-calendar__tile:enabled:focus{background-color:#e6e6e6}.react-calendar__tile--now{background:#ffff76}.react-calendar__tile--now:enabled:hover,.react-calendar__tile--now:enabled:focus{background:#ffffa9}.react-calendar__tile--hasActive{background:#76baff}.react-calendar__tile--hasActive:enabled:hover,.react-calendar__tile--hasActive:enabled:focus{background:#a9d4ff}.react-calendar__tile--active{background:#006edc;color:#fff}.react-calendar__tile--active:enabled:hover,.react-calendar__tile--active:enabled:focus{background:#1087ff}.react-calendar--selectRange .react-calendar__tile--hover{background-color:#e6e6e6}.calendar-wrap{width:100%}.react-calendar{width:100%;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:12px;font-family:var(--font);line-height:1.4}.react-calendar button{font-family:var(--font);color:var(--text)}.react-calendar__navigation{height:40px;margin-bottom:6px}.react-calendar__navigation button{min-width:38px;background:none;border-radius:9px;font-size:.95rem;font-weight:600;color:var(--text)}.react-calendar__navigation button:enabled:hover,.react-calendar__navigation button:enabled:focus{background:var(--surface-2)}.react-calendar__navigation button:disabled{background:none;color:var(--text-3);opacity:.5}.react-calendar__navigation__label{font-weight:700;flex-grow:1}.react-calendar__month-view__weekdays{text-transform:none;font-weight:700;font-size:.7rem;color:var(--text-3)}.react-calendar__month-view__weekdays__weekday{padding:6px 0;text-align:center}.react-calendar__month-view__weekdays__weekday abbr{text-decoration:none}.react-calendar__tile{position:relative;padding:10px 0;border-radius:10px;background:none;font-size:.86rem;font-weight:500;transition:background .12s,color .12s}.react-calendar__tile:enabled:hover,.react-calendar__tile:enabled:focus{background:var(--primary-soft);color:var(--primary)}.react-calendar__tile--now{background:var(--surface-3)}.react-calendar__tile--now:enabled:hover{background:var(--primary-soft)}.react-calendar__tile--active,.react-calendar__tile--active:enabled:hover,.react-calendar__tile--active:enabled:focus{background:var(--brand-grad);color:#fff;font-weight:700}.react-calendar__tile:disabled{background:none;color:var(--text-3);opacity:.4;cursor:not-allowed}.react-calendar__month-view__days__day--neighboringMonth{color:var(--text-3)}.cal-dot{position:absolute;bottom:5px;left:50%;transform:translate(-50%);width:5px;height:5px;border-radius:50%;background:var(--primary)}.react-calendar__tile--active .cal-dot{background:#fff}.date-display{margin-top:12px;font-weight:600;color:var(--text-2);font-size:.9rem;text-align:center}.time-slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:9px}.time-slot{padding:11px 8px;border:1px solid var(--border-strong);border-radius:10px;background:var(--surface);color:var(--text);font:inherit;font-weight:600;font-size:.88rem;cursor:pointer;transition:all .13s var(--ease)}.time-slot:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-soft)}.time-slot.selected{border-color:transparent;background:var(--brand-grad);color:#fff;box-shadow:0 6px 16px #01a2b847}.event-sections{display:flex;flex-direction:column;gap:30px}.event-section-head{display:flex;align-items:center;gap:10px;margin-bottom:14px}.event-section-head h2{font-size:1.1rem}.event-count{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 7px;border-radius:99px;background:var(--surface-3);color:var(--text-2);font-size:.74rem;font-weight:700}.event-section-hint{font-size:.84rem;margin-left:4px}.events-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px}.event-card.past{opacity:.62;background:var(--surface-2)}.event-card.past:hover{box-shadow:var(--shadow-sm);border-color:var(--border)}.event-card.past .cell-avatar{background:var(--text-3)}.badge.live:before{animation:live-pulse 1.6s ease-in-out infinite}@keyframes live-pulse{0%,to{opacity:1}50%{opacity:.35}}.event-card{padding:18px;display:flex;flex-direction:column;gap:14px;transition:border-color .15s,box-shadow .15s}.event-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md)}.event-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.event-customer{display:flex;align-items:center;gap:11px;min-width:0}.event-customer h3{font-size:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.event-tutor{font-size:.82rem}.event-alert{font-size:.82rem;color:var(--danger);background:var(--danger-soft);padding:9px 11px;border-radius:10px;line-height:1.45}.event-rows{display:flex;flex-direction:column;gap:8px}.event-row{display:flex;align-items:center;gap:9px;font-size:.88rem;color:var(--text)}.event-row svg{color:var(--text-3);flex:none}.event-row .cap{text-transform:capitalize}.event-row.muted-row{color:var(--text-3);font-size:.84rem;padding-left:24px}.event-meeting{display:flex;align-items:center;gap:8px;padding-top:2px}.event-nolink{font-size:.84rem;font-style:italic}.event-actions{display:flex;align-items:center;gap:8px;margin-top:auto;padding-top:14px;border-top:1px solid var(--border)}.event-actions .btn{flex:1;height:38px}.event-actions .btn-icon{flex:none;width:38px;height:38px;border:1px solid var(--border);color:var(--danger)}.event-actions .btn-icon:hover{background:var(--danger-soft);border-color:transparent}.readonly-pill{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:10px 12px;color:var(--text-2);font-size:.88rem}.transfer-confirm{display:flex;align-items:center;gap:8px;font-size:.86rem;font-weight:600;color:var(--primary);background:var(--primary-soft);padding:10px 12px;border-radius:10px}.help-text.resched-rep-warn{color:var(--danger);font-weight:600}.resched-original{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:10px 14px}.resched-original>span{font-size:.82rem}.avail-schedule{display:flex;flex-direction:column;gap:16px}.avail-day{overflow:hidden}.avail-day-head{padding:13px 18px;font-weight:700;font-size:.92rem;color:var(--text);background:var(--surface-2);border-bottom:1px solid var(--border)}.avail-slots{display:flex;flex-direction:column}.avail-slot{border-bottom:1px solid var(--border)}.avail-slot:last-child{border-bottom:none}.avail-slot.editing{background:var(--surface-2)}.avail-slot-main{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 18px}.avail-slot-time{display:flex;align-items:center;gap:10px;font-weight:600;flex-wrap:wrap}.avail-slot-time>svg{color:var(--primary);flex:none}.avail-zone{font-size:.74rem;font-weight:600;color:var(--text-3);background:var(--surface-3);padding:2px 8px;border-radius:99px}.avail-edit{padding:4px 18px 16px;display:flex;flex-direction:column;gap:12px}.avail-edit-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;max-width:360px}.avail-local{font-weight:500;font-size:.85rem}.planner-toolbar{align-items:center;flex-wrap:wrap}.planner-tutor-select{min-width:250px}.planner-date-filter{display:flex;align-items:center;gap:4px}.planner-date-filter input[type=date]{width:auto}.planner-range-nav{display:flex;align-items:center;gap:6px}.planner-range-label{font-weight:600;font-size:.9rem;color:var(--text-2);padding:0 6px;white-space:nowrap}.acc-head{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;border:none;cursor:pointer;text-align:left;font:inherit}.acc-head:hover{background:var(--surface-3)}.acc-meta{display:inline-flex;align-items:center;gap:10px}.acc-chevron{width:9px;height:9px;flex:none;border-right:2px solid var(--text-3);border-bottom:2px solid var(--text-3);transform:rotate(-45deg);transition:transform .15s}.acc-chevron.open{transform:rotate(45deg)}.ov-day-head{display:flex;align-items:center;justify-content:space-between}.ov-day-count{font-weight:500;font-size:.8rem}.ov-rows{display:flex;flex-direction:column}.ov-row{display:grid;grid-template-columns:200px 1fr;gap:12px;align-items:start;padding:11px 18px;border-bottom:1px solid var(--border)}.ov-row:last-child{border-bottom:none}.ov-tutor{background:none;border:none;padding:4px 0;text-align:left;cursor:pointer;font:inherit;font-weight:600;font-size:.9rem;color:var(--text)}.ov-tutor:hover{color:var(--primary);text-decoration:underline}.ov-chips{display:flex;flex-wrap:wrap;gap:8px}.ov-chip{display:flex;flex-direction:column;align-items:flex-start;gap:1px;background:var(--primary-soft);color:var(--primary);border:1px solid transparent;border-radius:9px;padding:5px 10px;font:inherit;font-size:.84rem;font-weight:600;cursor:pointer;transition:border-color .15s,transform .1s}.ov-chip:hover{border-color:var(--primary);transform:translateY(-1px)}.ov-chip.booked{background:var(--surface-3);color:var(--text-2)}.ov-chip-time{display:inline-flex;align-items:center;gap:6px}.ov-chip-zone{font-size:.7rem;font-weight:600;opacity:.75}.ov-chip-dot{width:7px;height:7px;border-radius:99px;background:var(--primary);flex:none}.ov-chip.booked .ov-chip-dot{background:var(--warning, #e8a13c)}.ov-chip-local{font-size:.74rem;font-weight:500;opacity:.85}@media (max-width: 720px){.ov-row{grid-template-columns:1fr;gap:6px}}.cust-table td{vertical-align:middle}.cust-id{display:flex;flex-direction:column;min-width:0}.cust-sub{font-size:.78rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:360px}.cust-linkbtn{display:inline-flex;align-items:center;gap:8px;background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:6px 10px;cursor:pointer;color:var(--text-2);font:inherit;transition:all .14s}.cust-linkbtn:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-soft)}.cust-linktext{font-size:.8rem}.cell-user{display:flex;align-items:center;gap:11px}.cell-avatar{width:34px;height:34px;flex:none;border-radius:9px;background:var(--brand-grad);color:#fff;font-weight:700;font-size:.78rem;display:grid;place-items:center}.cell-name{font-weight:600}.btn-icon.danger:hover{background:var(--danger-soft);color:var(--danger)}.role-toggles{display:flex;gap:22px;padding:4px 0}.alert-panel{margin-bottom:22px;padding:14px 18px 6px;border-color:var(--danger-soft)}.alert-panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:8px;flex-wrap:wrap}.alert-panel-title{display:inline-flex;align-items:center;gap:8px;font-weight:700}.alert-panel-title svg{color:var(--danger)}.alert-panel-sub{display:inline-flex;align-items:center;gap:6px;font-size:.8rem}.alert-settings{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;padding:10px 0 14px;border-bottom:1px solid var(--border)}.alert-settings .field{max-width:170px}.alert-rows{max-height:290px;overflow-y:auto}.alert-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;border-top:1px solid var(--border);flex-wrap:wrap}.alert-row:first-of-type{border-top:none}.alert-row-text{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.alert-row-name{font-weight:600}.tier-face{display:inline-flex;align-items:center;gap:7px}.tier-face-label{font-weight:600;font-size:.9rem}.tier-btn{display:inline-flex;align-items:center;gap:6px;background:none;border:none;padding:4px 6px;border-radius:8px;cursor:pointer;font:inherit}.tier-btn:hover{background:var(--surface-3)}.tier-pts{font-weight:700;font-size:.8rem;color:var(--text-2)}.rep-summary{display:flex;align-items:center;gap:12px}.rep-add{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}.rep-add .grow{flex:1;min-width:240px}.rep-add-points{width:150px}.rep-empty{padding:18px 0}.rep-list{display:flex;flex-direction:column;border-top:1px solid var(--border);max-height:320px;overflow-y:auto}.rep-entry{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:11px 2px;border-bottom:1px solid var(--border)}.rep-entry.expired{opacity:.55}.rep-entry-main{display:flex;flex-direction:column;gap:2px;min-width:0}.rep-entry-type{font-weight:600;font-size:.88rem}.rep-entry-reason{font-size:.86rem;color:var(--text-2)}.rep-entry-meta{font-size:.76rem}.rep-entry-side{display:inline-flex;align-items:center;gap:6px;flex:none}.intg-default{margin-left:8px;vertical-align:middle}.integrations-page .conn-row-name{display:flex;align-items:center;gap:4px}.notif-layout{display:grid;grid-template-columns:1.25fr 1fr;gap:18px;align-items:start}.notif-preview-card{position:sticky;top:24px}.var-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.notif-page code{background:var(--surface-3);border-radius:6px;padding:1px 6px;font-size:.78rem;font-family:SF Mono,ui-monospace,Menlo,monospace;color:var(--primary)}.template-preview{border:1px solid var(--border);border-radius:12px;padding:14px;background:var(--surface-2)}.preview-subject{border-bottom:1px solid var(--border);padding-bottom:9px;margin-bottom:9px;color:var(--text)}.preview-body{background:#fff;color:#1a1a1a;border-radius:8px;padding:12px;max-height:460px;overflow:auto}.preview-sms{font-family:SF Mono,ui-monospace,Menlo,monospace;white-space:pre-wrap;font-size:.85rem;color:var(--text);margin:0}@media (max-width: 900px){.notif-layout{grid-template-columns:1fr}.notif-preview-card{position:static}}.alerts-settings{margin-bottom:26px}.alerts-settings-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:16px}.alerts-settings-sub{font-size:.86rem;margin-top:3px}.alerts-settings-row{display:flex;align-items:flex-end;gap:18px;flex-wrap:wrap}.alerts-settings-row .field{flex:none}.alerts-field-time input{width:120px}.alerts-field-tz{width:230px}.alerts-field-look .alerts-look-wrap{display:flex;align-items:center;gap:8px}.alerts-field-look input{width:80px}.alerts-look-suffix{font-size:.86rem}.alerts-settings-save{margin-left:auto}.day-chips{display:flex;gap:6px;flex-wrap:wrap}.day-chip{min-width:46px;padding:10px 0;border-radius:10px;text-align:center;font:inherit;font-size:.84rem;font-weight:700;cursor:pointer;background:var(--surface-2);border:1.5px solid var(--border);color:var(--text-2);transition:all .14s}.day-chip:hover{border-color:var(--border-strong);color:var(--text)}.day-chip.active{background:var(--primary-soft);border-color:var(--primary);color:var(--primary)}.alerts-columns{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start}.alerts-section{min-width:0}.alerts-section-head{display:flex;align-items:center;gap:9px;margin-bottom:12px;color:var(--text-2)}.alerts-section-head h2{font-size:1.02rem}.alerts-section-head svg{color:var(--primary)}.alerts-allgood{display:flex;align-items:center;gap:13px}.alerts-allgood>svg{color:var(--success);flex:none}.alerts-allgood-title{font-weight:700}.alerts-list{padding:2px 18px}.alerts-list.history{max-height:560px;overflow-y:auto}.alerts-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 0;border-top:1px solid var(--border);flex-wrap:wrap}.alerts-row:first-child{border-top:none}.alerts-row-main{display:flex;align-items:center;gap:11px;min-width:0}.alerts-row-dot{width:8px;height:8px;border-radius:99px;background:var(--danger);flex:none}.alerts-row-name{font-weight:600;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.alerts-row-meta{font-size:.78rem;margin-top:2px}.alerts-row-note{font-size:.86rem;color:var(--text-2);margin-top:2px}.alerts-row-until{font-size:.8rem}.alerts-row-actions{display:flex;gap:8px;flex:none}.alerts-row-actions .btn{white-space:nowrap}.alerts-row.read{opacity:.88}@media (max-width: 1100px){.alerts-columns{grid-template-columns:1fr}}.audit-table .nowrap{white-space:nowrap}.audit-table .audit-details{max-width:380px;word-break:break-word;font-size:.82rem}.audit-pager{display:flex;align-items:center;gap:16px;margin-top:16px}.conn-hero{display:flex;align-items:center;gap:18px;padding:20px 22px;margin-bottom:28px;background:var(--brand-grad-soft);border-color:transparent}.conn-hero-icon{width:52px;height:52px;flex:none;border-radius:14px;background:var(--surface);color:var(--primary);display:grid;place-items:center;box-shadow:var(--shadow-sm)}.conn-hero-text h3{margin-bottom:3px}.conn-section{margin-bottom:30px}.conn-section-head{display:flex;align-items:center;gap:9px;margin-bottom:14px;color:var(--text-2)}.conn-section-head h2{font-size:1.05rem}.conn-section-head svg{color:var(--primary)}.conn-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px}.conn-card{padding:18px;display:flex;flex-direction:column;gap:10px;transition:border-color .15s,box-shadow .15s,transform .15s}.conn-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md);transform:translateY(-2px)}.conn-card-top{display:flex;align-items:center;justify-content:space-between}.conn-logo{width:42px;height:42px;border-radius:11px;display:grid;place-items:center;font-weight:800;font-size:1.1rem}.conn-card h4{font-size:.98rem}.conn-card-desc{font-size:.84rem;line-height:1.5;flex:1}.conn-card .btn{margin-top:4px}.conn-list{padding:4px 18px}.conn-row{display:flex;align-items:center;gap:14px;padding:16px 0}.conn-row.bordered{border-top:1px solid var(--border)}.conn-row-icon{width:42px;height:42px;flex:none;border-radius:11px;display:grid;place-items:center;background:var(--surface-3);color:var(--text-2)}.conn-row-text{flex:1;min-width:0}.conn-row-name{font-weight:600}.conn-row-desc{font-size:.84rem}.conn-note{display:flex;align-items:center;gap:8px;font-size:.84rem;margin-top:8px}.conn-note svg{color:var(--success);flex:none}.conn-loading{padding:24px 4px}.conn-sync{font-size:.78rem;margin-top:2px;flex:1}.conn-actions{display:flex;gap:8px;margin-top:6px}.conn-actions .btn{flex:1}.conn-danger{color:var(--danger)}.conn-danger:hover:not(:disabled){background:var(--danger-soft, rgba(220, 53, 69, .08))}.account-page{max-width:920px}.account-identity{display:flex;align-items:center;gap:18px;margin-bottom:20px}.account-avatar{width:62px;height:62px;flex:none;border-radius:16px;background:var(--brand-grad);color:#fff;font-weight:700;font-size:1.3rem;display:grid;place-items:center}.account-identity h2{font-size:1.2rem}.account-roles{display:flex;gap:6px;margin-top:8px}.account-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.account-grid .account-appearance{grid-column:1 / -1}.account-card-sub{font-size:.86rem;margin-top:3px}.theme-choices{display:flex;gap:12px}.theme-choice{flex:1;max-width:200px;display:inline-flex;align-items:center;justify-content:center;gap:9px;padding:14px;border-radius:12px;cursor:pointer;font:inherit;font-weight:600;background:var(--surface-2);border:1.5px solid var(--border);color:var(--text-2);transition:all .15s}.theme-choice:hover{color:var(--text);border-color:var(--border-strong)}.theme-choice.active{border-color:var(--primary);color:var(--primary);background:var(--primary-soft)}.account-reputation{grid-column:1 / -1}.rep-tier{display:flex;align-items:center;gap:10px}.rep-tier-label{font-weight:700}.rep-tier-points{font-size:.85rem}.rep-own-list{display:flex;flex-direction:column;border-top:1px solid var(--border);max-height:280px;overflow-y:auto}.rep-own-entry{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:10px 2px;border-bottom:1px solid var(--border)}.rep-own-entry.expired{opacity:.55}.rep-own-type{font-weight:600;font-size:.88rem}.rep-own-reason{font-size:.85rem}.rep-own-meta{font-size:.76rem}@media (max-width: 720px){.account-grid{grid-template-columns:1fr}}.shell{display:flex;min-height:100vh;background:var(--bg);background-image:var(--bg-grad);background-attachment:fixed}.shell-sidebar{flex:none}.shell-main{flex:1;min-width:0;display:flex;flex-direction:column}.shell-topbar{display:none;align-items:center;gap:12px;height:var(--topbar-h);padding:0 14px;background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:40}.shell-topbar-logo{height:24px}[data-theme=dark] .shell-topbar-logo{content:url(/tutorvio-logo-dark.png)}.shell-content{flex:1;min-width:0}.shell-scrim{display:none}@media (max-width: 920px){.shell-topbar{display:flex}.shell-sidebar{position:fixed;inset:0 auto 0 0;z-index:60;transform:translate(-100%);transition:transform .26s var(--ease);box-shadow:var(--shadow-lg)}.shell-sidebar.open{transform:translate(0)}.shell-scrim{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:rgba(8,20,22,.5);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:overlay-in .2s ease}}.pb-shell{min-height:100vh;background:var(--bg);background-image:var(--bg-grad);background-attachment:fixed;padding:22px clamp(16px,4vw,40px) 40px}.pb-top{max-width:1040px;margin:0 auto 26px;display:flex;align-items:center;justify-content:space-between}.pb-logo{height:30px;width:auto}[data-theme=dark] [data-theme-img]{content:url(/tutorvio-logo-dark.png)}.pb-top-right{display:flex;align-items:center;gap:10px}.pb-top-right .btn-icon{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-sm)}.pb-intro{max-width:1040px;margin:0 auto 22px}.pb-intro h1{font-size:1.9rem}.pb-intro p{margin-top:7px;font-size:1rem}.pb-intro-tag{display:inline-block;margin-bottom:8px;font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--primary);background:var(--primary-soft);padding:4px 9px;border-radius:6px}.pb-grid{max-width:1040px;margin:0 auto;display:grid;grid-template-columns:1.05fr 1fr;gap:18px;align-items:start}.pb-col{display:flex;flex-direction:column;gap:18px}.pb-step{display:flex;align-items:center;gap:11px}.pb-step-no{width:26px;height:26px;flex:none;border-radius:8px;background:var(--brand-grad);color:#fff;font-weight:700;font-size:.85rem;display:grid;place-items:center}.pb-step h3{font-size:1.05rem}.pb-times{display:flex;flex-direction:column;gap:12px}.pb-times-head{display:flex;align-items:center;gap:9px;font-weight:600;color:var(--text-2);font-size:.9rem}.pb-times-head svg{color:var(--primary)}.calendar-wrap{position:relative}.pb-cal-loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:color-mix(in srgb,var(--surface) 60%,transparent);-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);border-radius:12px;font-size:.86rem;font-weight:600;color:var(--text-2)}.pb-slots-loading{display:flex;align-items:center;gap:10px;padding:18px 4px;color:var(--text-2);font-size:.88rem;font-weight:600}.pb-slots-loading .spinner{width:18px;height:18px;border-width:2px}.pb-slot-groups{display:flex;flex-direction:column;gap:16px}.pb-slot-group-head{display:flex;align-items:center;gap:8px;margin-bottom:9px;font-size:.76rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-2)}.pb-slot-group-count{font-weight:700;font-size:.7rem;color:var(--text-3);background:var(--surface-3);border-radius:99px;padding:1px 8px}.pb-platforms{display:flex;flex-direction:column;gap:9px}.pb-platform{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1.5px solid var(--border);border-radius:12px;cursor:pointer;transition:all .14s;position:relative;background:var(--surface)}.pb-platform:hover{border-color:var(--border-strong)}.pb-platform.active{border-color:var(--primary);background:var(--primary-soft)}.pb-platform input{position:absolute;opacity:0;pointer-events:none}.pb-platform>svg{color:var(--text-3);flex:none}.pb-platform.active>svg{color:var(--primary)}.pb-platform-text{display:flex;flex-direction:column;flex:1;min-width:0}.pb-platform-name{font-weight:600;font-size:.9rem}.pb-platform-hint{font-size:.78rem;color:var(--text-3)}.pb-platform-check{width:20px;height:20px;flex:none;border-radius:50%;border:2px solid var(--border-strong);transition:all .14s}.pb-platform.active .pb-platform-check{border-color:var(--primary);background:var(--primary);box-shadow:inset 0 0 0 3px var(--surface)}.pb-custom-platform{margin-top:9px}.pb-optional{font-weight:500;font-size:.78rem;color:var(--text-3);margin-left:4px}.pb-summary{background:var(--surface-2);border:1px solid var(--border);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:9px}.pb-summary-row{display:flex;align-items:center;justify-content:space-between;font-size:.9rem;color:var(--text-2)}.pb-summary-row strong{color:var(--text)}.pb-book{height:48px;font-size:.98rem}.pb-footer{max-width:1040px;margin:26px auto 0;text-align:center;font-size:.82rem}.pb-success,.pb-fatal{max-width:460px;margin:8vh auto 0;text-align:center;padding:40px 30px;display:flex;flex-direction:column;align-items:center;gap:8px}.pb-success-icon{width:68px;height:68px;border-radius:50%;display:grid;place-items:center;background:var(--success-soft);color:var(--success);margin-bottom:8px}.pb-success h2,.pb-fatal h2{font-size:1.5rem}.pb-success p{font-size:.96rem}.pb-success-detail{display:inline-flex;align-items:center;gap:8px;margin-top:10px;background:var(--primary-soft);color:var(--primary);font-weight:600;padding:9px 14px;border-radius:10px;font-size:.9rem}.pb-redirect{margin-top:14px;font-size:.82rem}.pb-fatal-logo{height:32px;margin-bottom:14px}.pb-recap{background:var(--surface-2);border:1px solid var(--border);border-radius:12px;padding:6px 14px}.pb-recap-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:10px 0;border-top:1px solid var(--border);font-size:.92rem}.pb-recap-row:first-child{border-top:none}.pb-recap-row>span{color:var(--text-3);flex:none}.pb-recap-row>strong{text-align:right}.pb-recap-row.note>strong{font-weight:500;color:var(--text-2);white-space:pre-wrap}.pb-recap-banner{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:11px;font-size:.9rem;line-height:1.5}.pb-recap-banner svg{flex:none;margin-top:1px}.pb-recap-banner.success{background:var(--success-soft);color:var(--success)}.pb-recap-banner.info{background:var(--primary-soft);color:var(--primary)}.pb-recap-banner.offline{background:var(--danger-soft);color:var(--danger)}.pb-recap-banner strong{font-weight:700}.pb-recap-confirm{font-weight:600}@media (max-width: 880px){.pb-grid{grid-template-columns:1fr}.pb-intro h1{font-size:1.55rem}.pb-book{height:52px}}:root{--brand-teal: #01a2b8;--brand-cyan: #00a3cf;--brand-grad: linear-gradient(135deg, #01a2b8 0%, #00a3cf 100%);--brand-grad-soft: linear-gradient(135deg, rgba(1,162,184,.12), rgba(0,163,207,.12));--bg: #eef3f4;--bg-grad: radial-gradient(1200px 600px at 100% -10%, rgba(0,163,207,.1), transparent 60%), radial-gradient(900px 500px at -10% 110%, rgba(1,162,184,.1), transparent 55%);--surface: #ffffff;--surface-2: #f5f9fa;--surface-3: #eaf1f2;--border: #e0e8ea;--border-strong: #ccd8da;--text: #0c1719;--text-2: #47585c;--text-3: #7c8f93;--primary: #01a2b8;--primary-strong: #018395;--primary-contrast: #ffffff;--primary-soft: rgba(1, 162, 184, .1);--primary-soft-strong: rgba(1, 162, 184, .16);--secondary: #00a3cf;--danger: #e5484d;--danger-soft: rgba(229, 72, 77, .12);--success: #109b76;--success-soft: rgba(16, 155, 118, .12);--warning: #c98a16;--warning-soft: rgba(201, 138, 22, .14);--ring: rgba(1, 162, 184, .3);--shadow-sm: 0 1px 2px rgba(12, 23, 25, .06), 0 1px 3px rgba(12, 23, 25, .05);--shadow-md: 0 4px 12px rgba(12, 23, 25, .08), 0 2px 4px rgba(12, 23, 25, .05);--shadow-lg: 0 18px 40px rgba(12, 23, 25, .16), 0 6px 14px rgba(12, 23, 25, .08);--shadow-pop: 0 24px 60px rgba(8, 30, 35, .22);--radius-sm: 8px;--radius: 12px;--radius-lg: 16px;--radius-xl: 22px;--sidebar-w: 264px;--topbar-h: 64px;--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--ease: cubic-bezier(.22, 1, .36, 1)}[data-theme=dark]{--bg: #081214;--bg-grad: radial-gradient(1200px 600px at 100% -10%, rgba(0,163,207,.14), transparent 60%), radial-gradient(900px 500px at -10% 110%, rgba(1,162,184,.12), transparent 55%);--surface: #0f1d20;--surface-2: #132529;--surface-3: #183035;--border: #213539;--border-strong: #2d484e;--text: #e9f1f2;--text-2: #a6bcc0;--text-3: #6f878c;--primary: #1bb6cc;--primary-strong: #36c6d9;--primary-contrast: #03161a;--primary-soft: rgba(27, 182, 204, .14);--primary-soft-strong: rgba(27, 182, 204, .22);--secondary: #25b8e0;--danger: #ff6b6f;--danger-soft: rgba(255, 107, 111, .16);--success: #2bbd95;--success-soft: rgba(43, 189, 149, .16);--warning: #e0ab43;--warning-soft: rgba(224, 171, 67, .16);--ring: rgba(27, 182, 204, .4);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 6px 16px rgba(0, 0, 0, .45);--shadow-lg: 0 20px 44px rgba(0, 0, 0, .55);--shadow-pop: 0 28px 64px rgba(0, 0, 0, .6)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-size:14px;line-height:1.5}h1,h2,h3,h4{margin:0;font-weight:700;letter-spacing:-.015em;color:var(--text)}h1{font-size:1.6rem}h2{font-size:1.25rem}h3{font-size:1.05rem}p{margin:0}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}::selection{background:var(--primary-soft-strong)}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:99px;border:2px solid transparent;background-clip:padding-box}*::-webkit-scrollbar-thumb:hover{background:var(--text-3);background-clip:padding-box}.btn{--_bg: var(--surface);--_fg: var(--text);--_bd: var(--border-strong);display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 16px;font:inherit;font-weight:600;font-size:.9rem;color:var(--_fg);background:var(--_bg);border:1px solid var(--_bd);border-radius:10px;cursor:pointer;white-space:nowrap;transition:transform .12s var(--ease),box-shadow .15s var(--ease),background .15s,border-color .15s,opacity .15s}.btn:hover{box-shadow:var(--shadow-sm)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed;box-shadow:none;transform:none}.btn svg{width:17px;height:17px}.btn-primary{--_fg: var(--primary-contrast);--_bd: transparent;background:var(--brand-grad)}.btn-primary:hover{box-shadow:0 8px 20px #01a2b852}.btn-ghost{--_bg: transparent;--_bd: var(--border)}.btn-ghost:hover{--_bg: var(--surface-2)}.btn-subtle{--_bg: var(--primary-soft);--_fg: var(--primary);--_bd: transparent}.btn-subtle:hover{--_bg: var(--primary-soft-strong)}.btn-danger{--_fg: var(--danger);--_bg: var(--danger-soft);--_bd: transparent}.btn-danger:hover{background:var(--danger);--_fg: #fff}.btn-sm{height:32px;padding:0 12px;font-size:.82rem;border-radius:8px}.btn-block{width:100%}.btn-icon{width:38px;height:38px;padding:0;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:1px solid transparent;color:var(--text-2);cursor:pointer;transition:background .15s,color .15s}.btn-icon:hover{background:var(--surface-2);color:var(--text)}.btn-icon svg{width:19px;height:19px}.field{display:flex;flex-direction:column;gap:7px}.field>label,.label{font-size:.8rem;font-weight:600;color:var(--text-2);letter-spacing:.01em}.help-text,.hint{font-size:.78rem;color:var(--text-3);margin-top:2px}input:not([type]),input[type=text],input[type=email],input[type=password],input[type=tel],input[type=date],input[type=time],input[type=search],input[type=number],input[type=url],select,textarea{width:100%;font:inherit;font-size:.9rem;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:10px;padding:10px 12px;transition:border-color .15s,box-shadow .15s,background .15s;-webkit-appearance:none;-moz-appearance:none;appearance:none}textarea{resize:vertical;min-height:84px;line-height:1.55}select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%237c8f93' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 11px center;padding-right:38px;cursor:pointer}input::placeholder,textarea::placeholder{color:var(--text-3)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 4px var(--ring)}input[readonly]{background:var(--surface-2);color:var(--text-2)}input[type=date],input[type=time]{min-height:42px}.sselect{position:relative;width:100%}.sselect .sselect-input{padding-right:34px;cursor:pointer}.sselect.open .sselect-input{cursor:text}.sselect-caret{position:absolute;right:12px;top:50%;width:9px;height:9px;pointer-events:none;border-right:2px solid var(--text-3);border-bottom:2px solid var(--text-3);transform:translateY(-70%) rotate(45deg);transition:transform .15s}.sselect.open .sselect-caret{transform:translateY(-30%) rotate(225deg)}.sselect-pop{position:absolute;z-index:60;top:calc(100% + 5px);left:0;right:0;max-height:264px;overflow-y:auto;background:var(--surface);border:1px solid var(--border-strong);border-radius:10px;box-shadow:var(--shadow-md);padding:5px}.sselect-opt{padding:8px 10px;border-radius:7px;cursor:pointer;font-size:.9rem;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sselect-opt.hi{background:var(--primary-soft);color:var(--primary)}.sselect-opt.sel{font-weight:600}.sselect-empty{padding:10px 12px;color:var(--text-3);font-size:.88rem}::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.55}[data-theme=dark] ::-webkit-calendar-picker-indicator{filter:invert(.85)}.checkbox-row{display:inline-flex;align-items:center;gap:9px;cursor:pointer;font-weight:500;color:var(--text)}.checkbox-row input[type=checkbox]{width:18px;height:18px;accent-color:var(--primary);cursor:pointer}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.card-pad{padding:22px}.panel-title{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);font-weight:700}.badge{display:inline-flex;align-items:center;gap:5px;font-size:.72rem;font-weight:700;letter-spacing:.02em;padding:3px 9px;border-radius:99px;background:var(--surface-3);color:var(--text-2);border:1px solid transparent}.badge-primary{background:var(--primary-soft);color:var(--primary)}.badge-success{background:var(--success-soft);color:var(--success)}.badge-danger{background:var(--danger-soft);color:var(--danger)}.badge-warning{background:var(--warning-soft);color:var(--warning)}.badge-dot:before{content:"";width:6px;height:6px;border-radius:99px;background:currentColor}.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface)}table.data{width:100%;border-collapse:collapse;font-size:.88rem}table.data th{text-align:left;font-size:.74rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-3);font-weight:700;padding:13px 16px;background:var(--surface-2);border-bottom:1px solid var(--border)}table.data td{padding:13px 16px;border-bottom:1px solid var(--border);color:var(--text);vertical-align:middle}table.data tr:last-child td{border-bottom:none}table.data tbody tr{transition:background .12s}table.data tbody tr:hover{background:var(--surface-2)}.page{padding:28px clamp(20px,3vw,40px) 56px;width:100%}.page.narrow{max-width:920px}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:24px;flex-wrap:wrap}.page-head .titles{display:flex;flex-direction:column;gap:5px}.page-head h1{line-height:1.1}.page-sub{color:var(--text-3);font-size:.92rem}.page-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:20px}.toolbar .grow{flex:1;min-width:180px}.search-field{position:relative;display:flex;align-items:center}.search-field svg{position:absolute;left:12px;color:var(--text-3);pointer-events:none}.search-field input{padding-left:38px}.empty{text-align:center;padding:56px 24px;color:var(--text-3);border:1px dashed var(--border-strong);border-radius:var(--radius-lg);background:var(--surface)}.empty .empty-icon{width:52px;height:52px;margin:0 auto 14px;display:grid;place-items:center;border-radius:14px;background:var(--primary-soft);color:var(--primary)}.empty .empty-icon svg{width:26px;height:26px}.empty h3{color:var(--text-2);margin-bottom:4px}.loading-screen{display:grid;place-items:center;min-height:60vh;color:var(--text-3);gap:14px}.spinner{width:30px;height:30px;border-radius:50%;border:3px solid var(--border-strong);border-top-color:var(--primary);animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.segmented{display:inline-flex;padding:4px;gap:4px;background:var(--surface-2);border:1px solid var(--border);border-radius:12px}.segmented button{border:none;background:transparent;color:var(--text-2);font:inherit;font-weight:600;font-size:.85rem;padding:7px 16px;border-radius:9px;cursor:pointer;transition:all .15s}.segmented button:hover{color:var(--text)}.segmented button.active{background:var(--surface);color:var(--primary);box-shadow:var(--shadow-sm)}.switch{position:relative;display:inline-block;width:46px;height:26px;flex:none}.switch input{opacity:0;width:0;height:0}.switch .track{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--border-strong);border-radius:99px;cursor:pointer;transition:background .2s}.switch .track:before{content:"";position:absolute;height:20px;width:20px;left:3px;top:3px;background:#fff;border-radius:50%;transition:transform .2s var(--ease);box-shadow:var(--shadow-sm)}.switch input:checked+.track{background:var(--brand-grad)}.switch input:checked+.track:before{transform:translate(20px)}.offline-banner{position:fixed;top:0;left:0;right:0;z-index:9800;display:flex;align-items:center;justify-content:center;gap:10px;padding:9px 16px;font-size:.88rem;font-weight:600;text-align:center;box-shadow:0 2px 12px #0000002e;animation:offline-slide-in .22s ease}.offline-banner.offline{background:var(--danger);color:#fff}.offline-banner.unreachable{background:#e8a13c;color:#1c1304}.offline-banner svg{flex:none;opacity:.9}.offline-dot{width:9px;height:9px;flex:none;border-radius:50%;background:currentColor;box-shadow:0 0 0 0 currentColor;animation:offline-pulse 1.6s ease-out infinite}@keyframes offline-pulse{0%{box-shadow:0 0 #ffffff80}70%{box-shadow:0 0 0 7px #fff0}to{box-shadow:0 0 #fff0}}@keyframes offline-slide-in{0%{transform:translateY(-100%)}to{transform:translateY(0)}}.toast-viewport{position:fixed;top:18px;right:18px;z-index:9999;display:flex;flex-direction:column;gap:10px;width:min(380px,calc(100vw - 36px));pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:flex-start;gap:12px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:13px 14px;box-shadow:var(--shadow-pop);animation:toast-in .35s var(--ease);position:relative;overflow:hidden}.toast.leaving{animation:toast-out .25s var(--ease) forwards}.toast:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--text-3)}.toast.success:before{background:var(--success)}.toast.error:before{background:var(--danger)}.toast.info:before{background:var(--brand-grad)}.toast .toast-icon{width:22px;height:22px;flex:none;margin-top:1px}.toast.success .toast-icon{color:var(--success)}.toast.error .toast-icon{color:var(--danger)}.toast.info .toast-icon{color:var(--primary)}.toast .toast-body{flex:1;min-width:0}.toast .toast-title{font-weight:700;font-size:.9rem;color:var(--text)}.toast .toast-msg{font-size:.85rem;color:var(--text-2);margin-top:2px;word-break:break-word}.toast .toast-close{background:none;border:none;color:var(--text-3);cursor:pointer;padding:2px;border-radius:6px;flex:none}.toast .toast-close:hover{color:var(--text);background:var(--surface-2)}@keyframes toast-in{0%{opacity:0;transform:translate(24px) scale(.96)}to{opacity:1;transform:none}}@keyframes toast-out{to{opacity:0;transform:translate(24px) scale(.96)}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9000;background:rgba(8,20,22,.55);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:flex-start;justify-content:center;padding:6vh 18px 18px;animation:overlay-in .2s ease;overflow-y:auto}[data-theme=dark] .modal-overlay{background:rgba(0,0,0,.62)}.modal{width:100%;max-width:560px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow-pop);animation:modal-in .28s var(--ease);overflow:hidden}.modal.modal-lg{max-width:720px}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:20px 22px 14px}.modal-head h2{font-size:1.15rem}.modal-head .modal-sub{font-size:.85rem;color:var(--text-3);margin-top:3px}.modal-body{padding:4px 22px 8px}.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:16px 22px 20px;margin-top:8px}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}@keyframes modal-in{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-grid .span-2{grid-column:1 / -1}@media (max-width: 560px){.form-grid{grid-template-columns:1fr}}.muted{color:var(--text-3)}.mono{font-family:SF Mono,ui-monospace,Menlo,Consolas,monospace}.row{display:flex;gap:10px;align-items:center}.stack{display:flex;flex-direction:column;gap:14px}.tz-badge{display:inline-flex;align-items:center;gap:6px;font-size:.76rem;font-weight:600;color:var(--primary);background:var(--primary-soft);padding:4px 10px;border-radius:99px}.error-box{background:var(--danger-soft);color:var(--danger);padding:11px 14px;border-radius:10px;margin-bottom:16px;font-size:.88rem;font-weight:500}.success-box{background:var(--success-soft);color:var(--success);padding:11px 14px;border-radius:10px;margin-bottom:16px;font-size:.88rem;font-weight:500}.info-box{background:var(--primary-soft);color:var(--text-2);padding:14px 16px;border-radius:12px;font-size:.86rem;border:1px solid var(--border)}.info-box strong{color:var(--text)}.info-box ul{margin:8px 0 0;padding-left:18px}.info-box li{margin:3px 0}
