:root{--bg: #0b0d12;--bg-gradient: radial-gradient(ellipse 80% 50% at 50% -20%, rgba(91, 140, 255, .12), transparent);--panel: #141820;--panel-hover: #1a1f2a;--panel-2: #1e2430;--border: #2a3140;--border-light: #353d4f;--text: #eef1f6;--muted: #8b95a8;--accent: #5b8cff;--accent-soft: rgba(91, 140, 255, .15);--done: #34d399;--scheduled: #5b8cff;--postponed: #fbbf24;--cancelled: #94a3b8;--error: #f87171;--remaining: #cbd5e1;--vi-fg: var(--text);--vi-muted: var(--muted);--vi-bg: var(--bg);--vi-surface: var(--panel);--vi-border: var(--border);--vi-accent: var(--accent);--vi-accent-fg: #041018;--radius: 12px;--radius-sm: 8px;--shadow: 0 4px 24px rgba(0, 0, 0, .35);font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);background-image:var(--bg-gradient);color:var(--text);min-height:100vh;-webkit-font-smoothing:antialiased}.app-legal-footer{margin:0 auto;max-width:1200px;border-top:none;padding-top:.25rem;padding-bottom:1.25rem;font-size:.75rem;opacity:.75}.app{max-width:1200px;margin:0 auto;padding:0 20px 80px}.app-header{position:sticky;top:0;background:#0b0d12e0;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);padding:20px 0 14px;border-bottom:1px solid var(--border);z-index:20}.header-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}.brand{display:flex;align-items:center;gap:12px}.brand-logo{flex-shrink:0;border-radius:8px}.brand h1{margin:0;font-size:clamp(20px,4vw,26px);font-weight:700;letter-spacing:-.02em}.header-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.dirty-badge{font-size:12px;color:var(--postponed);background:#fbbf241f;padding:4px 10px;border-radius:999px;border:1px solid rgba(251,191,36,.25)}.tabs{display:flex;gap:6px;margin-top:16px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:2px}.tabs::-webkit-scrollbar{display:none}.tab{background:var(--panel);border:1px solid var(--border);color:var(--muted);padding:9px 18px;border-radius:999px;cursor:pointer;font-size:14px;font-weight:500;transition:all .18s ease;white-space:nowrap;flex-shrink:0}.tab:hover{color:var(--text);background:var(--panel-hover);border-color:var(--border-light)}.tab.active{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 2px 12px #5b8cff59}.content{margin-top:28px}.page-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;flex-wrap:wrap}.page-head h2{margin:0;font-size:18px;font-weight:600}.btn{background:var(--accent);border:none;color:#fff;padding:9px 16px;border-radius:var(--radius-sm);cursor:pointer;font-size:13px;font-weight:500;transition:opacity .15s,transform .1s}.btn:hover:not(:disabled){opacity:.92}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn.ghost{background:var(--panel);border:1px solid var(--border);color:var(--text)}.btn.ghost:hover:not(:disabled){background:var(--panel-hover);border-color:var(--border-light)}.btn.btn-danger{color:#c0392b;border-color:#c0392b44}.btn.btn-danger:hover:not(:disabled){background:#c0392b18;border-color:#c0392b88}.btn.sm{padding:6px 12px;font-size:12px}.day-nav{display:flex;align-items:center;gap:8px}.day-nav select{background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);padding:9px 12px;font-size:14px;min-width:0}.empty,.error{color:var(--muted);padding:32px 0;text-align:center}.error{color:var(--error)}.session-check{position:relative;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0}.session-check input{position:absolute;opacity:0;width:0;height:0}.session-check .checkmark{width:22px;height:22px;border:2px solid var(--border-light);border-radius:6px;background:var(--panel-2);transition:all .15s ease;display:flex;align-items:center;justify-content:center}.session-check input:checked+.checkmark{background:var(--done);border-color:var(--done)}.session-check input:checked+.checkmark:after{content:"";width:5px;height:9px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg) translateY(-1px)}.session-check:hover .checkmark{border-color:var(--accent)}.date-input{background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:4px 8px;font-size:12px;font-family:inherit}.date-input::-webkit-calendar-picker-indicator{filter:invert(.7);cursor:pointer}.date-input--compact{max-width:140px}.session-date-editor{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.session-date-read{color:var(--muted)}.session-date-apply{flex-shrink:0}.session-date-error{flex:1 1 100%;font-size:11px;color:var(--danger, #f87171);line-height:1.3}.topic-table .topic-session-meta .session-date-editor{min-width:0}.session-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.session-row{display:grid;grid-template-columns:auto 56px 160px 1fr auto;gap:12px;align-items:center;background:var(--panel);border:1px solid var(--border);border-left:3px solid var(--border);border-radius:var(--radius);padding:14px 16px;transition:background .15s,border-color .15s}.session-row:hover{background:var(--panel-hover)}.session-row.done{border-left-color:var(--done);opacity:.85}.session-row.done .topic{text-decoration:line-through;color:var(--muted)}.session-row.scheduled{border-left-color:var(--scheduled)}.session-row.postponed{border-left-color:var(--postponed)}.session-row.closes{box-shadow:inset 0 0 0 1px #5b8cff33}.session-row .time{font-variant-numeric:tabular-nums;color:var(--muted);font-weight:600;font-size:14px}.session-row .who .letter{color:var(--muted);margin-left:6px;font-size:13px}.session-row .topic{color:var(--text);font-size:14px;line-height:1.4}.session-row .meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.badge{font-size:11px;padding:3px 10px;border-radius:999px;white-space:nowrap;font-weight:500}.badge-done{background:#34d39926;color:var(--done)}.badge-scheduled{background:#5b8cff26;color:var(--scheduled)}.badge-postponed{background:#fbbf2426;color:var(--postponed)}.badge-cancelled{background:#94a3b826;color:var(--cancelled)}.person-list{display:flex;flex-direction:column;gap:8px}.person-row{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;transition:border-color .15s}.person-row:hover{border-color:var(--border-light)}.person-row-header{display:grid;grid-template-columns:1fr auto 32px;gap:16px;align-items:center;padding:16px 20px;cursor:pointer;-webkit-user-select:none;user-select:none}.person-info h3{margin:0;font-size:15px;font-weight:600}.person-stats{color:var(--muted);font-size:13px}.person-progress-wrap{display:flex;align-items:center;gap:10px;min-width:140px}.person-progress-wrap .progress{flex:1;margin:0}.person-pct{font-size:13px;font-weight:600;color:var(--done);min-width:36px;text-align:right}.expand-icon{font-size:18px;color:var(--muted);transition:transform .2s ease}.expand-icon.open{transform:rotate(90deg)}.person-row-detail{padding:0 20px 16px;border-top:1px solid var(--border)}.topic-table{width:100%;border-collapse:collapse;font-size:13px}.topic-table th{color:var(--muted);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.04em;text-align:left;padding:10px 8px;border-bottom:1px solid var(--border)}.topic-table td{padding:10px 8px;border-bottom:1px solid var(--border);vertical-align:middle}.topic-table tr:last-child td{border-bottom:none}.topic-table .col-check{width:36px}.topic-table .col-letter{width:28px;font-weight:600;color:var(--muted)}.topic-table .col-date{white-space:nowrap;color:var(--muted)}.topic-row.done .col-topic{color:var(--muted);text-decoration:line-through}.badge-inline{font-size:11px;padding:2px 8px;border-radius:999px;white-space:nowrap;font-weight:500}.badge-inline.done{background:#34d39926;color:var(--done)}.badge-inline.scheduled{background:#5b8cff26;color:var(--scheduled)}.badge-inline.unscheduled{background:var(--panel-2);color:var(--muted)}.badge-inline.partial{background:#fbbf2426;color:var(--postponed)}.progress{height:8px;background:var(--panel-2);border-radius:999px;overflow:hidden;margin:12px 0 4px}.progress.big{height:14px;box-shadow:inset 0 1px 3px #0000004d}.progress-bar{height:100%;background:linear-gradient(90deg,var(--done),#6ee7b7);transition:width .4s ease;border-radius:999px}.sub{margin:0 0 10px;color:var(--muted);font-size:13px}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,130px),1fr));gap:12px}.stat{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:20px;display:flex;flex-direction:column;gap:4px;transition:transform .15s,border-color .15s}.stat:hover{border-color:var(--border-light);transform:translateY(-1px)}.stat-value{font-size:clamp(26px,5vw,34px);font-weight:700;letter-spacing:-.02em}.stat-label{color:var(--muted);font-size:13px}.stat-done .stat-value{color:var(--done)}.stat-remaining .stat-value{color:var(--remaining)}.stat-scheduled .stat-value{color:var(--scheduled)}.stat-total .stat-value{color:var(--text)}.overall{margin:28px 0;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:20px 24px}.section-title{margin:28px 0 14px;font-size:16px;font-weight:600}.summary-table-wrap{overflow-x:auto;border-radius:var(--radius);border:1px solid var(--border)}.summary-table{width:100%;border-collapse:collapse;background:var(--panel);min-width:480px}.summary-table th,.summary-table td{text-align:left;padding:12px 16px;border-bottom:1px solid var(--border);font-size:14px}.summary-table th{color:var(--muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em}.summary-table tbody tr:hover{background:var(--panel-hover)}.summary-table tr:last-child td{border-bottom:none}.calendar-page{display:flex;flex-direction:column;gap:8px}.calendar-nav{display:flex;align-items:center;gap:12px}.calendar-title{margin:0;font-size:18px;font-weight:600;text-transform:capitalize;min-width:180px;text-align:center}.calendar-hint{color:var(--muted);font-size:13px;margin:0 0 8px}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.calendar-weekday{text-align:center;font-size:12px;font-weight:600;color:var(--muted);padding:8px 4px;text-transform:uppercase;letter-spacing:.05em}.calendar-cell{min-height:100px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px;cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s;display:flex;flex-direction:column;gap:4px}.calendar-cell.empty{background:transparent;border-color:transparent;cursor:default;min-height:0}.calendar-cell.outside-month{background:color-mix(in srgb,var(--panel) 50%,transparent);border-color:color-mix(in srgb,var(--border) 65%,transparent)}.calendar-cell.outside-month .cell-day{color:var(--muted);font-weight:500}.calendar-cell.outside-month.selected .cell-day,.calendar-cell.outside-month.today .cell-day{color:var(--accent);font-weight:600}.calendar-cell:hover:not(.empty):not(.selected){border-color:var(--border-light);background:var(--panel-hover)}.calendar-cell.today:not(.selected){border-color:#5b8cff73;box-shadow:inset 0 0 0 1px var(--accent-soft)}.calendar-cell.selected{background:#5b8cff1a;border-color:#5b8cffa6;box-shadow:inset 0 0 0 1px #5b8cff59}.calendar-cell.selected:hover{background:#5b8cff24;border-color:var(--accent)}.calendar-cell.selected .cell-day{color:var(--accent);font-weight:600}.calendar-cell.selected .cell-count{background:#5b8cff2e}.calendar-cell.drag-over{border-color:var(--done);background:#34d39914;box-shadow:0 0 0 2px #34d3994d}.calendar-cell.friday-blocked{opacity:.55;background:repeating-linear-gradient(-45deg,transparent,transparent 4px,rgba(248,113,113,.06) 4px,rgba(248,113,113,.06) 8px)}.calendar-cell.friday-blocked:hover:not(.empty){cursor:not-allowed}.schedule-notice{margin-bottom:12px;color:var(--text-muted)}.cell-header{display:flex;justify-content:space-between;align-items:center}.cell-day{font-size:14px;font-weight:600}.calendar-cell.today .cell-day{color:var(--accent)}.cell-count{font-size:10px;color:var(--muted);background:var(--panel-2);padding:2px 6px;border-radius:999px}.cell-sessions{display:flex;flex-direction:column;gap:3px;flex:1;overflow:hidden}.session-chip{display:flex;align-items:center;gap:4px;font-size:11px;padding:3px 6px;border-radius:4px;background:var(--panel-2);border-left:2px solid var(--scheduled);cursor:grab;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;user-select:none}.session-chip:active{cursor:grabbing}.session-chip.done{border-left-color:var(--done);opacity:.7}.session-chip.postponed{border-left-color:var(--postponed)}.session-chip.cancelled{border-left-color:var(--cancelled);opacity:.65}.session-chip.mini{padding:4px 8px;cursor:grab;justify-content:center;min-width:32px}.chip-time{color:var(--muted);font-variant-numeric:tabular-nums}.chip-name{overflow:hidden;text-overflow:ellipsis}.cell-more{font-size:10px;color:var(--muted);padding-left:4px}.calendar-detail{margin-top:24px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.calendar-detail .section-title{margin-top:0;text-transform:capitalize}.calendar-detail-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.calendar-detail-row{display:flex;flex-direction:column;gap:8px;padding:10px 12px;background:var(--panel-2);border-radius:var(--radius-sm);border:1px solid var(--border);border-left:3px solid var(--scheduled)}.calendar-detail-row .detail-main{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px 12px}.calendar-detail-row.done{border-left-color:var(--done);opacity:.92}.calendar-detail-row.cancelled{border-left-color:var(--cancelled);opacity:.75}.calendar-detail-row .detail-body{display:flex;align-items:center;gap:8px;min-width:0;flex-wrap:nowrap}.calendar-detail-row .detail-time-group{display:inline-flex;align-items:center;gap:2px;flex-shrink:0}.calendar-detail-row .detail-time{font-variant-numeric:tabular-nums;color:var(--text);font-weight:600;font-size:14px}.calendar-detail-row .detail-dot{color:var(--border-light);font-size:12px;flex-shrink:0;-webkit-user-select:none;user-select:none}.calendar-detail-row .detail-person{flex-shrink:0;white-space:nowrap;font-size:14px}.calendar-detail-row .detail-person .letter{color:var(--muted);margin-left:3px;font-size:12px;font-weight:400}.calendar-detail-row .detail-topic{flex:1;min-width:0;font-size:13px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-detail-row .detail-actions{display:flex;flex-direction:row;align-items:center;gap:6px;flex-shrink:0}.session-icon{width:16px;height:16px;display:block}.btn-icon-sm{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--panel);color:var(--muted);font-size:14px;line-height:1;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.btn-icon-sm:hover:not(:disabled){background:var(--panel-hover);border-color:var(--border-light);color:var(--text)}.btn-icon-sm.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.time-edit-btn{font-size:13px}.swap-btn{font-size:15px!important}.postpone-btn{color:var(--postponed)!important;border-color:#fbbf2459!important}.postpone-btn:hover{background:#fbbf241f!important;color:var(--postponed)!important}.cancel-btn{color:var(--cancelled)!important;border-color:#94a3b859!important}.cancel-btn:hover{background:#94a3b81f!important;color:var(--cancelled)!important}.detail-actions .session-delete-btn{color:var(--error)!important;border-color:#f8717159!important}.detail-actions .session-delete-btn:hover{background:#f871711f!important;color:var(--error)!important}.calendar-detail-row .detail-time-edit,.calendar-detail-row .detail-session-edit,.calendar-detail-row .session-notes-read{padding-top:10px;margin-top:2px;border-top:1px solid var(--border)}.detail-session-edit{display:flex;flex-wrap:wrap;gap:12px 20px;align-items:flex-end}.session-edit-field{display:flex;flex-direction:column;gap:6px}.session-edit-label{font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.session-edit-topic{margin-left:0;min-width:220px}.session-edit-field--notes{flex:1 1 100%;min-width:100%}.session-notes-input{width:100%;min-height:72px;padding:8px 10px;font-family:inherit;font-size:13px;line-height:1.45;color:var(--text);background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-sm);resize:vertical}.session-notes-input:focus{outline:none;border-color:var(--accent)}.session-notes-read{display:flex;flex-direction:column;gap:4px}.session-notes-read--postponed{flex:1 1 100%;width:100%;padding:8px 0 0;border-top:1px dashed var(--border)}.session-notes-label{font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.session-notes-text{margin:0;font-size:13px;line-height:1.45;color:var(--text);white-space:pre-wrap}.session-note-indicator{display:inline-flex;align-items:center;margin-left:6px;color:var(--muted);cursor:help}.session-note-indicator:hover,.session-note-indicator:focus-visible{color:var(--accent);outline:none}.session-note-icon{width:14px;height:14px}.col-status .session-note-indicator{vertical-align:middle}.tooltip-host{display:inline-flex;vertical-align:middle}.tooltip-popup{position:fixed;z-index:1000;padding:6px 10px;font-size:12px;font-weight:500;line-height:1.3;white-space:nowrap;color:var(--text);background:var(--panel);border:1px solid var(--border-light);border-radius:8px;box-shadow:0 8px 24px #00000073;pointer-events:none;animation:tooltip-in .12s ease}@keyframes tooltip-in{0%{opacity:0}to{opacity:1}}.tooltip-popup--multiline{white-space:pre-wrap;max-width:min(320px,calc(100vw - 16px));line-height:1.4}.tooltip-popup:after{content:"";position:absolute;left:50%;transform:translate(-50%);border:5px solid transparent}.tooltip-popup--bottom:after{bottom:100%;border-bottom-color:var(--border-light)}.tooltip-popup--top:after{top:100%;border-top-color:var(--border-light)}.time-slot-picker{display:flex;flex-direction:column;gap:8px}.time-slot-picker.disabled{opacity:.5;pointer-events:none}.time-slot-row{display:flex;flex-wrap:wrap;gap:6px}.slot-btn.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.time-input{background:var(--panel);border:1px solid var(--border);color:var(--text);border-radius:var(--radius-sm);padding:8px 10px;font-size:14px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;display:flex;align-items:center;justify-content:center;z-index:100;padding:20px}.modal-panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);max-width:560px;width:100%;max-height:85vh;overflow:auto;padding:24px}.modal-panel-sm{max-width:400px}.modal-title{margin:0 0 8px;font-size:20px}.modal-desc{margin:0 0 16px;color:var(--muted);font-size:14px;line-height:1.5}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.modal-error{margin-top:8px}.field-label{display:block;font-size:13px;color:var(--muted);margin-bottom:6px}.text-input{width:100%;background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:var(--radius-sm);padding:10px 12px;font-size:15px}.confirm-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.confirm-item{background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px}.confirm-labels{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.confirm-tag{font-size:11px;background:var(--accent-soft);color:var(--accent);padding:2px 8px;border-radius:999px}.confirm-diff{display:flex;flex-direction:column;gap:6px;font-size:12px}.confirm-before{color:var(--muted);text-decoration:line-through}.confirm-arrow{color:var(--muted);display:none}.confirm-after{color:var(--text)}.postponed-section{margin-top:32px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.postponed-section .section-title{margin-top:0;display:flex;align-items:center;gap:10px}.postponed-count{font-size:13px;font-weight:600;color:var(--postponed);background:#fbbf241f;padding:2px 10px;border-radius:999px}.postponed-empty{padding:16px 0;text-align:left}.postponed-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.postponed-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;padding:10px 12px;background:var(--panel-2);border-radius:var(--radius-sm);border:1px solid var(--border);border-left:3px solid var(--postponed)}.postponed-summary{display:flex;align-items:center;gap:8px;flex:1 1 280px;min-width:0}.postponed-time{font-variant-numeric:tabular-nums;font-weight:600;color:var(--text);font-size:14px;flex-shrink:0}.postponed-dot{color:var(--border-light);font-size:12px;flex-shrink:0}.postponed-who{flex-shrink:0;white-space:nowrap;font-size:14px}.postponed-who .letter{color:var(--muted);margin-left:3px;font-size:12px;font-weight:400}.postponed-topic{flex:1;min-width:0;font-size:13px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.postponed-was{flex-shrink:0;font-size:11px;color:var(--muted);padding:2px 8px;border-radius:999px;background:var(--panel);border:1px solid var(--border)}.postponed-reschedule{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px 12px;flex:1 1 320px;justify-content:flex-end}.reschedule-field{display:flex;flex-direction:column;gap:6px;min-width:0}.reschedule-field--time{flex:1 1 200px}.reschedule-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.reschedule-submit{flex-shrink:0;align-self:flex-end}.badge-inline.postponed{background:#fbbf2426;color:var(--postponed)}.badge-inline.cancelled{background:#94a3b826;color:var(--cancelled)}.stat-postponed .stat-value{color:var(--postponed)}@media (max-width: 900px){.calendar-cell{min-height:80px;padding:6px}.session-chip .chip-time{display:none}.calendar-detail-row .detail-main{grid-template-columns:auto 1fr}.calendar-detail-row .detail-actions{grid-column:2;justify-content:flex-end}.calendar-detail-row .detail-body{grid-column:1 / -1;flex-wrap:wrap}}@media (max-width: 640px){.app{padding:0 14px 64px}.calendar-grid{gap:4px}.calendar-cell{min-height:64px;padding:4px}.cell-day{font-size:12px}.session-chip{font-size:10px;padding:2px 4px}.calendar-weekday{font-size:10px;padding:4px 2px}.header-top{flex-direction:column}.person-row-header{grid-template-columns:1fr 32px;gap:8px;padding:14px 16px}.person-progress-wrap,.topic-table .col-date{display:none}.postponed-summary{flex:1 1 100%}.postponed-reschedule{flex:1 1 100%;justify-content:flex-start}}.btn-icon{padding:8px 10px;min-width:40px}.person-detail-toolbar{display:flex;justify-content:flex-end;margin-bottom:12px}.person-detail-toolbar .btn{margin:12px}.btn-sm{padding:6px 12px;font-size:13px}.topic-order-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.topic-order-item{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:grab}.topic-order-item.dragging{opacity:.5}.topic-order-item.drag-over{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent-soft)}.topic-order-handle{color:var(--muted);font-size:12px;-webkit-user-select:none;user-select:none;flex-shrink:0}.topic-order-letter{font-weight:700;color:var(--accent);min-width:1.25rem;flex-shrink:0}.topic-order-title-text{font-size:14px;line-height:1.4;min-width:0}.reload-icon{display:inline-block;font-size:1.25rem;line-height:1}.reload-icon.spinning{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.celebration-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:24px;background:#000000a6}.celebration-panel{max-width:400px;width:100%;padding:32px 28px;text-align:center;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.celebration-emoji{margin:0 0 12px;font-size:3rem}.celebration-title{margin:0 0 8px;font-size:1.35rem}.celebration-desc{margin:0 0 24px;color:var(--muted);font-size:.95rem}@media (max-width: 480px){.calendar-grid{grid-template-columns:repeat(7,minmax(0,1fr))}.chip-name{display:none}.session-chip{justify-content:center;font-size:9px}}.stat-secondary,.stat-footnote{margin-top:6px;font-size:13px;color:var(--muted)}.chip-topic-progress{font-size:9px;opacity:.85;margin-left:2px}.topic-progress-badge{font-size:11px;padding:1px 6px;border-radius:999px;background:var(--panel-2);color:var(--muted);margin-left:6px}.calendar-detail-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}.calendar-detail-title{margin:0}.col-sessions{min-width:140px}.topic-session-summary{display:block;font-size:12px;color:var(--muted)}.topic-add-btn{margin-top:6px}.btn-xs{padding:4px 8px;font-size:11px}.topic-row-group td{font-weight:600;border-bottom:none}.topic-row-session td{font-size:12px;background:#0000001f}.topic-row-session .col-topic{padding-left:24px;color:var(--muted)}.topic-session-index{color:var(--muted);font-size:11px}.add-session-form{display:flex;flex-direction:column;gap:14px}.form-field{display:flex;flex-direction:column;gap:6px}.form-label{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.form-select{width:100%;padding:8px 10px;border-radius:var(--radius);border:1px solid var(--border);background:var(--panel-2);color:var(--text);font:inherit}.topic-edit-select{margin-left:6px;padding:4px 8px;border-radius:var(--radius);border:1px solid var(--border);background:var(--panel-2);color:var(--text);font:inherit;font-size:12px;max-width:min(280px,100%)}.topic-edit-btn{margin-left:6px}.session-edit-actions{flex-basis:100%;display:flex;justify-content:flex-end;padding-top:4px}.session-delete-btn{color:var(--error)!important;border-color:#f8717159!important}.session-delete-btn:hover{background:#f871711f!important}@layer components{:root{--vi-font: inherit;--vi-fg: #1a1a1a;--vi-muted: #5f6368;--vi-bg: #ffffff;--vi-surface: #f6f6f4;--vi-border: #dedcd6;--vi-accent: #2f5bd3;--vi-accent-fg: #ffffff;--vi-danger: #c62828;--vi-danger-fg: #ffffff;--vi-radius: 10px;--vi-max-width: 44rem}@media (prefers-color-scheme: dark){:root{--vi-fg: #ecebe8;--vi-muted: #a3a29e;--vi-bg: #121212;--vi-surface: #1c1c1c;--vi-border: #33322f;--vi-accent: #8aa8ff;--vi-accent-fg: #0d1430;--vi-danger: #ef6b6b;--vi-danger-fg: #240606}}:where(.vi-page){font-family:var(--vi-font);color:var(--vi-fg);background:var(--vi-bg);min-height:100vh;min-height:100dvh;box-sizing:border-box}:where(.vi-page *,.vi-gate *,.vi-footer *,.vi-account-data *){box-sizing:border-box}:where(.vi-link){color:var(--vi-accent);text-decoration:underline;text-underline-offset:3px}:where(.vi-button){display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:2.75rem;padding:0 1.1rem;border:1px solid var(--vi-border);border-radius:var(--vi-radius);background:var(--vi-surface);color:var(--vi-fg);font:inherit;font-weight:600;text-decoration:none;cursor:pointer}:where(.vi-button:disabled){opacity:.55;cursor:not-allowed}:where(.vi-button:focus-visible,.vi-link:focus-visible,.vi-consent__checkbox:focus-visible,.vi-field__input:focus-visible){outline:2px solid var(--vi-accent);outline-offset:2px}:where(.vi-button--primary){background:var(--vi-accent);border-color:var(--vi-accent);color:var(--vi-accent-fg)}:where(.vi-button--danger){background:var(--vi-danger);border-color:var(--vi-danger);color:var(--vi-danger-fg)}:where(.vi-status-page){display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:3rem 1.5rem;text-align:center}:where(.vi-status-page__code){margin:0;font-size:clamp(3.5rem,12vw,6rem);font-weight:800;line-height:1;letter-spacing:-.04em;color:var(--vi-muted)}:where(.vi-status-page__title){margin:0;font-size:1.6rem;line-height:1.2}:where(.vi-status-page__text,.vi-status-page__help,.vi-status-page__event){margin:0;max-width:32rem;color:var(--vi-muted);line-height:1.55}:where(.vi-status-page__actions){display:flex;flex-wrap:wrap;justify-content:center;gap:.75rem;margin:.75rem 0}:where(.vi-status-page__event code){font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;-webkit-user-select:all;user-select:all}:where(.vi-legal){display:flex;flex-direction:column}:where(.vi-legal--embedded){min-height:0;background:transparent}:where(.vi-legal__main){width:100%;max-width:var(--vi-max-width);margin:0 auto;padding:2rem 1.5rem 5rem;line-height:1.65}:where(.vi-legal--embedded .vi-legal__main){padding:0 0 2rem}:where(.vi-legal__back){display:inline-flex;align-items:center;gap:.4rem;margin-bottom:1.5rem;font-size:.95rem;text-decoration:none}:where(.vi-legal__back:hover){text-decoration:underline}:where(.vi-legal__eyebrow){margin:0;font-size:.8rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--vi-muted)}:where(.vi-legal__title){margin:.25rem 0 .5rem;font-size:clamp(1.8rem,5vw,2.4rem);line-height:1.15}:where(.vi-legal__version){margin:0 0 1.5rem;color:var(--vi-muted);font-size:.95rem}:where(.vi-legal__toc){padding:1rem 1.25rem;margin-bottom:2rem;border:1px solid var(--vi-border);border-radius:var(--vi-radius);background:var(--vi-surface)}:where(.vi-legal__toc ol){margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.35rem}:where(.vi-legal__section){scroll-margin-top:1.5rem;margin-bottom:2rem}:where(.vi-legal__section:last-of-type){margin-bottom:0}:where(.vi-legal__section h2){margin:0 0 .6rem;font-size:1.2rem;line-height:1.3}:where(.vi-legal__section p,.vi-legal__section ul){margin:0 0 .75rem}:where(.vi-legal__section ul){padding-left:1.25rem}:where(.vi-footer){display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.5rem 1.25rem;padding:2rem 1.5rem 2.5rem;border-top:1px solid var(--vi-border);font-family:var(--vi-font);font-size:.85rem;color:var(--vi-muted)}:where(.vi-footer__nav,.vi-legal-links__nav){display:flex;gap:1rem}:where(.vi-legal-links){display:flex;flex-direction:column;gap:.5rem;font-size:.9rem;color:var(--vi-muted)}:where(.vi-legal-links__support){margin:0}:where(.vi-consent){display:flex;flex-direction:column;gap:.4rem;font-size:.9rem;line-height:1.5}:where(.vi-consent--highlight){padding:.9rem 1rem;border:1px solid var(--vi-accent);border-radius:var(--vi-radius);background:var(--vi-surface)}:where(.vi-consent__title){margin:0;font-weight:700;color:var(--vi-fg)}:where(.vi-consent__label){display:flex;align-items:flex-start;gap:.6rem;cursor:pointer}:where(.vi-consent__checkbox){flex-shrink:0;width:1.1rem;height:1.1rem;margin:.2rem 0 0;accent-color:var(--vi-accent)}:where(.vi-consent__error){margin:0;color:var(--vi-danger);font-size:.875rem}:where(.vi-gate){position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:1.5rem;overflow-y:auto;background:color-mix(in srgb,var(--vi-bg) 92%,transparent);font-family:var(--vi-font);color:var(--vi-fg)}:where(.vi-gate__card){display:flex;flex-direction:column;gap:1rem;width:100%;max-width:30rem;padding:1.75rem;border:1px solid var(--vi-border);border-radius:calc(var(--vi-radius) * 1.4);background:var(--vi-bg);box-shadow:0 24px 60px -24px #00000059}:where(.vi-gate__title){margin:0;font-size:1.4rem;line-height:1.25}:where(.vi-gate__text){margin:0;color:var(--vi-muted);line-height:1.55}:where(.vi-gate__actions,.vi-account-data__actions){display:flex;flex-wrap:wrap;gap:.75rem}:where(.vi-account-data){display:flex;flex-direction:column;gap:1rem;font-family:var(--vi-font);color:var(--vi-fg)}:where(.vi-account-data__title){margin:0;font-size:1.15rem}:where(.vi-account-data__block){display:flex;flex-direction:column;align-items:flex-start;gap:.6rem;padding:1rem 1.1rem;border:1px solid var(--vi-border);border-radius:var(--vi-radius)}:where(.vi-account-data__block h3){margin:0;font-size:1rem}:where(.vi-account-data__block p){margin:0;color:var(--vi-muted);font-size:.9rem;line-height:1.5}:where(.vi-account-data__block--danger){border-color:color-mix(in srgb,var(--vi-danger) 45%,var(--vi-border))}:where(.vi-account-data__confirm){display:flex;flex-direction:column;gap:.75rem;width:100%}:where(.vi-field){display:flex;flex-direction:column;gap:.3rem;max-width:22rem}:where(.vi-field__label){font-size:.85rem;font-weight:600}:where(.vi-field__input){min-height:2.6rem;padding:0 .75rem;border:1px solid var(--vi-border);border-radius:var(--vi-radius);background:var(--vi-bg);color:var(--vi-fg);font:inherit}}
