*{margin:0;padding:0;box-sizing:border-box}:root{--image-preview-max-height: 360px;--bg: #f5f7fa;--bg-card: #ffffff;--text: #1a1a2e;--text-secondary: #6b7280;--primary: #4f46e5;--primary-hover: #4338ca;--primary-light: #eef2ff;--success: #059669;--success-light: #ecfdf5;--warning: #d97706;--warning-light: #fffbeb;--info: #2563eb;--info-light: #eff6ff;--error: #dc2626;--error-light: #fef2f2;--border: #e5e7eb;--lesson-held: #10b981;--lesson-missed: #f43f5e;--lesson-planned: #6366f1;--lesson-dot-size: 6px;--lesson-calendar-width: 400px;--radius: 8px;--gutter: 20px;--touch-target: 44px;--drawer-width: 300px;--card-label-width: 40%;--shadow: 0 1px 3px rgba(0,0,0,.1);--shadow-lg: 0 4px 12px rgba(0,0,0,.1);--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--spinner-size: 36px;--legal-page-width: 760px;--comment-max-width: 85%;--loader-min-height: 40vh}.loader{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;min-height:var(--loader-min-height);color:var(--text-secondary)}.modal .loader{min-height:auto;padding:24px 0}.spinner{width:var(--spinner-size);height:var(--spinner-size);border:3px solid var(--primary-light);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.spinner{animation-duration:2.4s}}body{font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.6}.header{background:var(--bg-card);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100}.header-inner{max-width:1200px;margin:0 auto;padding:0 20px;height:60px;display:flex;align-items:center;gap:32px}.logo{font-weight:700;font-size:18px;color:var(--primary);white-space:nowrap}.nav{display:flex;align-items:center;gap:4px;flex:1}.nav-link{padding:8px 14px;border-radius:var(--radius);text-decoration:none;color:var(--text-secondary);font-size:14px;font-weight:500;white-space:nowrap;transition:all .15s}@media (hover: hover){.nav-link:hover{background:var(--primary-light);color:var(--primary)}}.nav-link.active{background:var(--primary-light);color:var(--primary)}.nav-group{position:relative}.nav-group-toggle{display:inline-flex;align-items:center;gap:4px;border:none;background:none;font-family:inherit;cursor:pointer}.nav-caret{font-size:10px}.nav-menu{position:absolute;top:calc(100% + 4px);left:0;min-width:100%;display:flex;flex-direction:column;gap:2px;padding:4px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);z-index:110}.burger{width:var(--touch-target);height:var(--touch-target);display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);color:var(--text);font-size:20px;line-height:1;cursor:pointer}.drawer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:300;display:flex;justify-content:flex-end}.drawer{width:min(var(--drawer-width),85vw);height:100%;background:var(--bg-card);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;padding:12px 16px;padding-top:max(12px,env(safe-area-inset-top));padding-right:max(16px,env(safe-area-inset-right));padding-bottom:max(16px,env(safe-area-inset-bottom));overflow-y:auto;animation:drawer-in .2s ease-out}@keyframes drawer-in{0%{transform:translate(100%)}to{transform:none}}@media (prefers-reduced-motion: reduce){.drawer{animation:none}}.drawer-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.drawer-links{display:flex;flex-direction:column;gap:2px;flex:1}.drawer-links .nav-link{display:flex;align-items:center;min-height:var(--touch-target);font-size:15px}.drawer-group{display:flex;flex-direction:column;gap:2px;margin-top:8px}.drawer-group-label{padding:4px 14px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary)}.drawer-group .nav-link{padding-left:24px}.drawer-footer{display:flex;flex-direction:column;gap:8px;margin-top:16px;padding-top:16px;border-top:1px solid var(--border)}.header-right{display:flex;align-items:center;gap:12px;margin-left:auto}.user-name{font-size:14px;color:var(--text-secondary);white-space:nowrap}.main-content{max-width:1200px;margin:0 auto;padding:24px 20px}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.card-header h2{font-size:18px;font-weight:600}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px}.stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}.stat-card .stat-value{font-size:32px;font-weight:700;color:var(--primary)}.stat-card .stat-label{font-size:14px;color:var(--text-secondary);margin-top:4px}.pay-family+.pay-family{margin-top:16px}.pay-family-title{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary);margin-bottom:6px}.pay-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--border)}.pay-row-info{flex:1;min-width:0}.pay-row-name{font-weight:600}.pay-stepper{display:flex;align-items:center;gap:8px}.pay-stepper .btn{min-width:var(--touch-target);min-height:var(--touch-target);font-size:20px;padding:0;justify-content:center}.pay-stepper-value{min-width:2.5em;text-align:center;font-size:20px;font-weight:700}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border:none;border-radius:var(--radius);font-size:14px;font-weight:500;cursor:pointer;transition:all .15s;text-decoration:none;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn-success{background:var(--success);color:#fff}.btn-danger{background:var(--error);color:#fff}.btn-outline{background:transparent;border:1px solid var(--border);color:var(--text)}@media (hover: hover){.btn-outline:hover{background:var(--bg)}}.btn-sm{padding:4px 10px;font-size:13px}.btn-full{width:100%;justify-content:center}.form-group{margin-bottom:16px}.form-group label{display:block;font-size:14px;font-weight:500;margin-bottom:6px;color:var(--text)}.form-group input,.form-group select,.form-group textarea{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius);font-size:14px;font-family:var(--font);transition:border-color .15s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}.form-group textarea{min-height:100px;resize:vertical}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-hint{font-size:13px;color:var(--text-secondary);margin-top:4px}.text-hint{font-size:13px;color:var(--text-secondary)}.form-group .checkbox-label{display:flex;align-items:center;gap:8px;font-weight:400;cursor:pointer}.form-group .checkbox-label input{width:auto}.series-fields{margin-top:8px;padding-left:24px}.weekday-picker{display:flex;flex-wrap:wrap;gap:4px 14px;margin-bottom:10px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:12px;border-bottom:1px solid var(--border);font-size:14px}th{font-weight:600;color:var(--text-secondary);font-size:13px;text-transform:uppercase;letter-spacing:.05em}@media (hover: hover){tr:hover td{background:var(--bg)}}.table-actions{display:flex;gap:6px;align-items:center}@media (max-width: 768px){.table-cards thead{display:none}.table-cards,.table-cards tbody,.table-cards tr,.table-cards td{display:block;width:100%}.table-cards tr{padding:10px 0;border-bottom:1px solid var(--border)}.table-cards td{padding:3px 0;border:none;overflow-wrap:anywhere}.table-cards td[data-label]:before{content:attr(data-label);display:inline-block;width:var(--card-label-width);padding-right:8px;vertical-align:top;font-size:13px;color:var(--text-secondary)}.table-cards td:first-child{font-weight:600;font-size:15px}.table-cards td:first-child:before{display:none}.table-cards td:not([data-label]){padding-top:8px}.table-cards td:not([data-label]):empty{display:none}.table-cards .table-actions{flex-wrap:wrap}}.profile-fields{display:grid;grid-template-columns:180px 1fr;gap:8px 16px;margin:0}.profile-fields dt{color:var(--text-secondary);font-size:14px}.profile-fields dd{margin:0}.password-field{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.password-field code{font-size:15px;min-width:90px}.field-hint{font-size:13px;color:var(--text-secondary);margin:4px 0 0}@media (max-width: 480px){.profile-fields{grid-template-columns:1fr;gap:2px}.profile-fields dd{margin-bottom:10px}}.badge{display:inline-block;padding:3px 10px;border-radius:99px;font-size:12px;font-weight:600}.badge-success{background:var(--success-light);color:var(--success)}.badge-warning{background:var(--warning-light);color:var(--warning)}.badge-info{background:var(--info-light);color:var(--info)}.badge-error{background:var(--error-light);color:var(--error)}.alert{padding:12px 16px;border-radius:var(--radius);font-size:14px;margin-bottom:16px}.alert-error{background:var(--error-light);color:var(--error)}.alert-info{background:var(--info-light);color:var(--info)}.alert-success{background:var(--success-light);color:var(--success)}.alert-warning{background:var(--warning-light);color:var(--warning)}.login-page{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:20px}.login-card{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:40px;width:100%;max-width:400px;box-shadow:var(--shadow-lg)}.login-card h1{font-size:24px;text-align:center;color:var(--primary);margin-bottom:4px}.login-subtitle{text-align:center;color:var(--text-secondary);font-size:14px;margin-bottom:24px}.authed-image{display:block;max-width:100%;max-height:var(--image-preview-max-height);object-fit:contain;margin-top:12px;border-radius:var(--radius);border:1px solid var(--border);cursor:zoom-in}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:200;padding:20px}.modal{background:var(--bg-card);border-radius:12px;padding:24px;width:100%;max-width:500px;max-height:90vh;max-height:90dvh;overflow-y:auto;box-shadow:var(--shadow-lg)}.modal h3{font-size:18px;margin-bottom:16px}.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:20px}.file-upload{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px}.file-upload-actions{display:flex;flex-wrap:wrap;gap:8px}.file-upload>.text-hint{flex-basis:100%}.format-toolbar{display:flex;gap:6px;margin-bottom:6px}.format-toolbar .btn{min-width:36px}.format-preview{margin-top:6px;padding:8px 12px;background:var(--bg);border-radius:var(--radius)}.file-name{font-size:13px;color:var(--text-secondary)}.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.calendar-header h3{font-size:16px}.calendar-day-label{text-align:center;font-size:12px;font-weight:600;color:var(--text-secondary);padding:4px}.calendar-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:var(--radius);font-size:14px;color:var(--text-secondary)}.calendar-day.current-month{color:var(--text)}.calendar-day.clickable{border:none;background:none;padding:0;font-family:inherit;cursor:pointer}@media (hover: hover){.calendar-day.clickable:hover{background:var(--bg)}}.calendar-day.today{font-weight:700;border:2px solid var(--primary)}.calendar-day.attended{background:var(--primary);color:#fff;font-weight:600}.calendar-day.attended:hover{background:var(--primary)}.calendar-day.free{box-shadow:inset 0 0 0 2px var(--success);font-weight:600}.calendar-day.selected{outline:2px solid var(--text);outline-offset:-2px}.calendar-legend{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--text-secondary)}.legend-dot{width:10px;height:10px;border-radius:3px;display:inline-block;margin-left:8px}.legend-dot.legend-busy{background:var(--primary)}.legend-dot.legend-free{box-shadow:inset 0 0 0 2px var(--success)}.legend-dot.legend-deadline{background:var(--warning)}.calendar-day.deadline{background:var(--warning);color:#fff;font-weight:700}.calendar-day.deadline.attended{box-shadow:inset 0 0 0 3px var(--primary)}.lesson-overview{display:grid;grid-template-columns:minmax(0,var(--lesson-calendar-width)) minmax(0,1fr);gap:16px;align-items:stretch}@media (max-width: 768px){.lesson-overview{grid-template-columns:minmax(0,1fr)}}.calendar-day.dotted{flex-direction:column;gap:3px;border-radius:50%}.calendar-day.dotted.has-lessons{font-weight:600}.lesson-dots{display:flex;gap:3px;height:var(--lesson-dot-size)}.lesson-dot{width:var(--lesson-dot-size);height:var(--lesson-dot-size);border-radius:50%;flex:none}.lesson-dot.held,.lesson-stats-bar .held{background:var(--lesson-held)}.lesson-dot.missed,.lesson-stats-bar .missed{background:var(--lesson-missed)}.lesson-dot.planned,.lesson-stats-bar .planned{background:var(--lesson-planned)}.lesson-stats{display:flex;flex-direction:column;gap:12px}.lesson-stats h3{font-size:16px}.lesson-stat{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius);background:var(--bg)}.lesson-stat .lesson-dot{--lesson-dot-size: 10px}.lesson-stat-label{flex:1;color:var(--text-secondary)}.lesson-stat strong{font-size:20px}.lesson-stats-bar{display:flex;gap:2px;height:8px;border-radius:4px;overflow:hidden}.lesson-stats-total{margin-top:auto;font-size:14px;color:var(--text-secondary)}.lesson-stats-total strong{color:var(--text)}.deadline-picker{display:flex;flex-direction:column;gap:10px}.deadline-stepper{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.deadline-stepper input{width:72px;text-align:center}.deadline-date{font-size:14px}.calendar-mini .calendar-day{aspect-ratio:auto;height:32px;font-size:13px}.deadline-cell{display:flex;align-items:center;gap:8px;margin-bottom:4px}.schedule-layout{display:grid;grid-template-columns:minmax(280px,1fr) 1.2fr;gap:16px;align-items:start}@media (max-width: 1024px){.schedule-layout{grid-template-columns:1fr}}.schedule-lesson{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:10px 0;border-bottom:1px solid var(--border)}.timezone-note{font-size:13px;color:var(--text-secondary);margin:8px 0}.timezone-picker{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:6px}.timezone-picker select{max-width:100%}.timezone-picker .text-hint{flex-basis:100%}.comment-list{list-style:none;display:flex;flex-direction:column;gap:10px}.comment{max-width:var(--comment-max-width);padding:10px 12px;border-radius:var(--radius);background:var(--bg)}.comment-own{align-self:flex-end;background:var(--primary-light)}.comment-meta{display:flex;flex-wrap:wrap;gap:4px 10px;font-size:12px;color:var(--text-secondary);margin-bottom:4px}.comment-body{white-space:pre-wrap;overflow-wrap:anywhere}.comment-actions{display:flex;flex-wrap:wrap;align-items:flex-start;gap:8px}.comment-actions>button[type=submit]{margin-left:auto}.consent-checkbox{display:flex;align-items:flex-start;gap:8px;margin-bottom:16px;font-size:13px;line-height:1.45;color:var(--text-secondary);cursor:pointer}.consent-checkbox input{width:auto;margin-top:2px;flex-shrink:0}.legal-page{max-width:var(--legal-page-width);margin:0 auto;padding:24px var(--gutter)}.legal-page h2{font-size:16px;margin:20px 0 6px}.legal-page ul{padding-left:20px}.link-button{border:none;background:none;padding:0;font:inherit;color:var(--primary);text-decoration:underline;cursor:pointer}.slot-list{display:flex;flex-wrap:wrap;gap:8px}.slot{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border:1px solid var(--border);border-radius:var(--radius);font-size:14px}.plain-list{list-style:none;margin-bottom:12px}.plain-list li{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 0;border-bottom:1px solid var(--border);font-size:14px}.inline-form{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.inline-form input,.inline-form select{width:auto}.empty-state{text-align:center;padding:40px 20px;color:var(--text-secondary)}.empty-state p{font-size:15px}.filters{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}.filter-btn{padding:6px 14px;border:1px solid var(--border);border-radius:99px;background:transparent;font-size:13px;cursor:pointer;transition:all .15s}@media (hover: hover){.filter-btn:hover{background:var(--bg)}}.filter-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}.filter-count{opacity:.7;margin-left:2px}.dashboard-columns{display:grid;grid-template-columns:1fr 1fr;gap:16px}.hw-list{--hw-desc-lines: 2;list-style:none;padding-top:0;padding-bottom:0}.hw-list li+li{border-top:1px solid var(--border)}.hw-item{display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px 16px;padding:14px 0;color:inherit;text-decoration:none}@media (hover: hover){.hw-item:hover .hw-item-title{color:var(--primary)}}.hw-item-main{min-width:0}.hw-item-title{display:block;overflow-wrap:anywhere}.hw-item-desc{display:-webkit-box;-webkit-line-clamp:var(--hw-desc-lines);-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;font-size:13px;color:var(--text-secondary);margin:2px 0 0}.hw-item-deadline{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:6px;font-size:13px;color:var(--text-secondary)}.hw-item-lessons{display:flex;flex-wrap:wrap;gap:2px 16px;margin-top:4px;font-size:13px;color:var(--text-secondary)}.hw-item-side{display:flex;align-items:center;gap:12px}.hw-item-side .badge{white-space:nowrap}.usage-bar{margin-top:8px;height:6px;background:var(--border);border-radius:3px;overflow:hidden}.usage-fill{height:100%;background:var(--primary);border-radius:3px;min-width:2px;transition:width .3s}.landing-page{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}.landing-header{background:var(--bg-card);border-bottom:1px solid var(--border)}.landing-header-inner{max-width:1200px;margin:0 auto;padding:0 20px;height:60px;display:flex;align-items:center;justify-content:space-between}.landing-main{flex:1;max-width:1200px;margin:0 auto;padding:0 20px;width:100%}.landing-hero{text-align:center;padding:80px 0 60px}.landing-title{font-size:40px;font-weight:700;color:var(--text);margin-bottom:16px;line-height:1.2}.landing-subtitle{font-size:18px;color:var(--text-secondary);margin-bottom:32px;max-width:500px;margin-left:auto;margin-right:auto}.btn-lg{padding:12px 28px;font-size:16px}.landing-features{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:24px;padding-bottom:60px}.feature-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:28px;text-align:center;box-shadow:var(--shadow)}.feature-icon{font-size:36px;margin-bottom:12px}.feature-card h3{font-size:16px;font-weight:600;margin-bottom:8px}.feature-card p{font-size:14px;color:var(--text-secondary)}.contact-links{display:flex;flex-direction:column;gap:10px;margin-bottom:8px}.contact-link{display:block;padding:12px;border:1px solid var(--border);border-radius:var(--radius);text-align:center;text-decoration:none;color:var(--primary);font-weight:500;font-size:15px;transition:all .15s}.contact-link:hover{background:var(--primary-light);border-color:var(--primary)}.theory-layout{display:grid;grid-template-columns:280px 1fr;gap:16px;align-items:start}.theory-tree ul{list-style:none;margin:0;padding:0}.theory-folder{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:6px 0;font-weight:600}.theory-folder-title{flex:1}.theory-node-actions{display:flex;flex-wrap:wrap;gap:6px}.theory-page-link{display:block;width:100%;padding:6px 8px;border:none;border-radius:var(--radius);background:none;color:var(--text-secondary);font:inherit;text-align:left;cursor:pointer}@media (hover: hover){.theory-page-link:hover{background:var(--bg);color:var(--text)}}.theory-page-link.active{background:var(--primary-light);color:var(--primary);font-weight:600}.theory-back{margin-bottom:12px}.theory-hint{color:var(--text-secondary);font-size:13px;margin:8px 0}.theory-images{margin-top:24px;padding-top:16px;border-top:1px solid var(--border)}.theory-image-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin:12px 0}.theory-image-card{border:1px solid var(--border);border-radius:var(--radius);padding:8px;margin:0}.theory-image-card img{width:100%;height:120px;object-fit:contain}.theory-image-card figcaption{display:flex;flex-direction:column;align-items:flex-start;gap:4px;font-size:12px;color:var(--text-secondary);word-break:break-all}.markdown h2,.markdown h3,.markdown h4,.markdown h5,.markdown h6{margin:16px 0 8px}.markdown p{margin:8px 0}.markdown .md-list{margin:8px 0 8px 24px}.markdown code{background:var(--bg);border-radius:4px;padding:1px 5px;font-size:13px}.markdown .md-code{background:var(--bg);border-radius:var(--radius);padding:12px;overflow-x:auto;margin:12px 0}.markdown .md-code code{background:none;padding:0}.markdown .md-quote{border-left:3px solid var(--primary);padding-left:12px;margin:12px 0;color:var(--text-secondary)}.markdown .md-image{max-width:100%;border-radius:var(--radius);margin:8px 0}.markdown .md-image-missing{color:var(--text-secondary);font-style:italic}@media (max-width: 768px){:root{--gutter: 12px}.theory-layout{grid-template-columns:1fr}.header-inner{justify-content:space-between}.main-content{padding-top:16px;padding-bottom:16px}.form-row{grid-template-columns:1fr}.stats-grid{grid-template-columns:1fr 1fr}.landing-title{font-size:28px}.landing-subtitle{font-size:16px}.landing-hero{padding:48px 0 36px}.dashboard-columns{grid-template-columns:1fr}.filters{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.filter-btn{flex-shrink:0;white-space:nowrap}.filters.filters-wrap{flex-wrap:wrap;overflow-x:visible;gap:6px}.filters-wrap .filter-btn{padding:6px 12px}.hw-item{grid-template-columns:1fr;align-items:start}.hw-item-side{justify-content:space-between}}.header-inner,.main-content,.landing-header-inner,.landing-main{padding-left:max(var(--gutter),env(safe-area-inset-left));padding-right:max(var(--gutter),env(safe-area-inset-right))}@media (pointer: coarse){.btn,.nav-link,.filter-btn,.theory-page-link{min-height:var(--touch-target)}.btn-sm{padding:6px 12px}.btn,.filter-btn{justify-content:center}.nav-link,.filter-btn{display:inline-flex;align-items:center}}@media (max-width: 480px){.modal-overlay{align-items:flex-end;padding:0}.modal{max-width:none;border-radius:12px 12px 0 0;padding:20px var(--gutter);padding-bottom:max(20px,env(safe-area-inset-bottom))}.modal-actions{flex-direction:column-reverse}.modal-actions .btn{width:100%;justify-content:center}.stat-card{padding:14px}.stat-card .stat-value{font-size:24px}}@media (max-width: 480px){input,select,textarea,.form-group input,.form-group select,.form-group textarea{font-size:16px}}.board-page{--board-header-height: 52px;display:flex;flex-direction:column;height:100vh;height:100dvh;background:var(--bg-card)}.board-header{display:flex;align-items:center;gap:12px;min-height:var(--board-header-height);padding:6px max(12px,env(safe-area-inset-right)) 6px max(12px,env(safe-area-inset-left));padding-top:max(6px,env(safe-area-inset-top));border-bottom:1px solid var(--border);background:var(--bg-card);flex-shrink:0}.board-title{display:flex;flex-direction:column;min-width:0;flex:1;line-height:1.2}.board-title-main{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.board-title-sub{font-size:13px;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.board-header-side{display:flex;align-items:center;gap:8px;flex-shrink:0}.board-badge{font-size:12px;padding:2px 8px;border-radius:999px;background:var(--warning-light);color:var(--warning);white-space:nowrap}.board-badge-offline{background:var(--error-light);color:var(--error)}.board-people{display:flex}.board-avatar{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;border:2px solid var(--bg-card);margin-left:-6px;color:#fff;font-size:12px;font-weight:600;cursor:default}.board-avatar:first-child{margin-left:0}button.board-avatar{padding:0;font-family:inherit;cursor:pointer}button.board-avatar:hover{transform:translateY(-1px)}.board-avatar-following{position:relative;z-index:1;box-shadow:0 0 0 2px var(--primary)}.board-bold{font-weight:800;min-width:32px}.board-btn-icon{width:14px;height:14px;vertical-align:-2px;fill:none;stroke:currentColor;stroke-width:1.4}.board-tool-slot{display:contents}.board-tool-benzene.board-tool-active .ToolIcon__icon{background:var(--color-surface-primary-container, #e0dfff);color:var(--color-on-primary-container, #030064)}.board-tool-benzene-on .excalidraw canvas.interactive{cursor:crosshair!important}.board-benzene-preview{position:absolute;z-index:3;pointer-events:none;overflow:visible;fill:none;stroke:var(--primary);stroke-width:1.5;stroke-dasharray:4 3}.board-lock-layer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;overflow:hidden;pointer-events:none}.board-lock-button,.board-lock-badge{position:absolute;display:flex;align-items:center;justify-content:center;padding:0;border:1px solid var(--border);border-radius:6px;background:var(--bg-card);color:var(--text-secondary);cursor:pointer;pointer-events:auto;box-shadow:0 1px 3px #00000026}.board-lock-button{width:28px;height:28px;opacity:.55}.board-lock-button:hover,.board-lock-button:focus-visible{opacity:1}.board-lock-button-on{border-color:var(--primary);color:var(--primary)}.board-lock-badge{width:22px;height:22px;opacity:.45}.board-lock-badge:hover,.board-lock-badge:focus-visible{opacity:1;color:var(--primary)}.board-lock-button svg,.board-lock-badge svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round}.board-lock-button:hover{color:var(--primary)}.board-canvas-student .context-menu li[data-testid=toggleElementLock],.board-canvas-student .context-menu li[data-testid=unlockAllElements]{display:none}.board-timer{position:relative}.board-timer-place{display:flex;flex-wrap:wrap;gap:6px}.board-timer-btn{font-variant-numeric:tabular-nums;white-space:nowrap}.board-timer-chip{cursor:default}.board-timer-running{border-color:var(--primary);color:var(--primary)}.board-timer-paused{opacity:.7}.board-timer-finished{background:var(--error-light);border-color:var(--error);color:var(--error);animation:board-timer-blink 1s step-end infinite}@keyframes board-timer-blink{50%{opacity:.35}}@media (prefers-reduced-motion: reduce){.board-timer-finished{animation:none}}.board-timer-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:20;width:240px;padding:10px;display:flex;flex-direction:column;gap:8px;background:var(--bg-card);border:1px solid var(--border);border-radius:8px;box-shadow:0 6px 20px #0000001f}.board-timer-label{font-size:12px;color:var(--text-secondary)}.board-timer-actions,.board-timer-presets,.board-timer-custom{display:flex;flex-wrap:wrap;gap:6px}.board-timer-custom input{flex:1;min-width:0}.board-canvas{position:relative;flex:1;min-height:0}.board-loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;display:flex;align-items:center;justify-content:center;background:var(--bg-card)}.board-message{padding:24px}.board-present{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.board-present-label{font-size:13px;color:var(--text-secondary);max-width:160px;overflow:hidden;text-overflow:ellipsis}.board-slides{position:absolute;top:64px;right:12px;z-index:5;width:290px;max-width:calc(100% - 24px);max-height:calc(100% - 140px);display:flex;flex-direction:column;gap:8px;padding:10px;background:var(--bg-card);border:1px solid var(--border);border-radius:8px;box-shadow:0 6px 20px #0000001f}.board-slides-head{display:flex;align-items:center;justify-content:space-between}.board-slides-title{font-weight:600}.board-slides-empty{margin:0;font-size:13px;color:var(--text-secondary)}.board-slides-nav{display:flex;align-items:center;justify-content:space-between;gap:8px}.board-slides-pos{font-variant-numeric:tabular-nums;font-size:13px}.board-slides-list{list-style:none;margin:0;padding:0;overflow-y:auto;display:flex;flex-direction:column;gap:4px}.board-slide{display:flex;align-items:center;gap:4px;border-radius:6px;border:1px solid transparent}.board-slide-current{border-color:var(--primary)}.board-slide-dragged{opacity:.5}.board-slide-name{flex:1;min-width:0;padding:6px;border:none;background:none;font:inherit;font-size:14px;text-align:left;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:inherit}.board-slide-num{color:var(--text-secondary)}.board-slide-hidden{color:var(--warning);font-size:12px}.board-slide-move{display:flex;gap:2px;flex-shrink:0}.board-slide-move .btn{padding:2px 6px}.board-poll{width:100%;height:100%;box-sizing:border-box;padding:12px 14px;display:flex;flex-direction:column;gap:8px;overflow:hidden;background:var(--bg-card);color:var(--text);font-family:var(--font);font-size:14px;line-height:1.3;pointer-events:none;-webkit-user-select:none;user-select:none}.board-poll button,.board-poll input{pointer-events:auto}.board-poll-loading{align-items:center;justify-content:center;color:var(--text-secondary)}.board-poll-status{display:flex;gap:8px;font-size:12px;font-weight:600;color:var(--primary)}.board-poll-closed .board-poll-status{color:var(--text-secondary)}.board-poll-total{margin-left:auto;font-weight:400;color:var(--text-secondary)}.board-poll-question{font-size:16px;font-weight:600;overflow-wrap:anywhere}.board-poll-image{flex:0 1 auto;min-height:0;max-height:180px;width:100%;object-fit:contain;border-radius:6px}.board-poll-options{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.board-poll-option{position:relative;width:100%;min-height:38px;display:flex;align-items:center;gap:8px;padding:6px 10px;overflow:hidden;border:1px solid var(--border);border-radius:6px;background:var(--bg-card);font:inherit;color:inherit;text-align:left;cursor:pointer}.board-poll-option:disabled{cursor:default;opacity:1}.board-poll-option:not(:disabled):hover{border-color:var(--primary)}.board-poll-option>:not(.board-poll-bar){position:relative;z-index:1}.board-poll-letter{font-weight:700;color:var(--primary);min-width:16px}.board-poll-text{flex:1;min-width:0;overflow-wrap:anywhere}.board-poll-count{font-variant-numeric:tabular-nums;font-weight:600}.board-poll-check{color:var(--success);font-weight:700}.board-poll-bar{position:absolute;left:0;top:0;bottom:0;background:var(--primary-light);transition:width .3s}.board-poll-mine{border-color:var(--primary);box-shadow:inset 0 0 0 1px var(--primary)}.board-poll-box{flex-shrink:0;width:14px;height:14px;border:1.5px solid var(--text-secondary);border-radius:3px}.board-poll-mine .board-poll-box{border-color:var(--primary);background:var(--primary);box-shadow:inset 0 0 0 2px var(--bg-card)}.board-poll-new-multi{display:flex;align-items:center;gap:6px;font-size:13px}.board-poll-new-pick{align-self:flex-start;cursor:pointer}.board-poll-new-image{display:flex;flex-direction:column;align-items:flex-start;gap:6px}.board-poll-new-image img{max-width:100%;max-height:140px;border-radius:6px;object-fit:contain}.board-poll-key{border-style:dashed;border-color:var(--success)}.board-poll-correct{border-color:var(--success);box-shadow:inset 0 0 0 1px var(--success)}.board-poll-correct .board-poll-bar{background:var(--success-light)}.board-poll-names{margin:2px 0 0 34px;font-size:12px;color:var(--text-secondary);overflow-wrap:anywhere}.board-poll-note{font-size:13px;color:var(--text-secondary);overflow-wrap:anywhere}.board-poll-right{color:var(--success);font-weight:600}.board-poll-wrong{color:var(--error);font-weight:600}.board-poll-answers{margin:0;padding:0 0 0 16px;display:flex;flex-direction:column;gap:4px;overflow-wrap:anywhere}.board-poll-form-row{display:flex;gap:6px}.board-poll-form-row input{flex:1;min-width:0}.board-poll-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto}.board-card-remove{margin-left:auto}.board-poll-countdown{font-variant-numeric:tabular-nums}.board-timer-card{align-items:stretch}.board-timer-card-time{font-size:44px;font-weight:700;line-height:1;text-align:center;font-variant-numeric:tabular-nums}.board-timer-card .board-poll-status{justify-content:center}.board-timer-card .board-timer-actions{margin-top:auto}.board-timer-card-idle .board-timer-card-time,.board-timer-card-paused .board-timer-card-time{color:var(--text-secondary)}.board-timer-card-running .board-timer-card-time{color:var(--primary)}.board-timer-card-finished .board-timer-card-time{color:var(--error);animation:board-timer-blink 1s step-end infinite}@media (prefers-reduced-motion: reduce){.board-timer-card-finished .board-timer-card-time{animation:none}}.excalidraw__embeddable-container__inner:has(.board-poll) .excalidraw__embeddable-hint{display:none}.board-poll-new{overflow-y:auto}.board-poll-new-form{display:flex;flex-direction:column;gap:8px}.board-poll-new-form textarea{resize:vertical}.board-poll-kind{display:flex;gap:6px}.board-poll-new-option{display:flex;align-items:center;gap:6px}.board-poll-new-option input[type=text]{flex:1;min-width:0}.board-poll-new-correct{display:flex;align-items:center;gap:2px;font-weight:700;color:var(--primary)}.board-poll-new-field{display:flex;flex-direction:column;gap:4px}.board-poll-error{font-size:13px;color:var(--error)}.board-poll-new input[type=text],.board-poll-new input[type=number],.board-poll-new textarea,.board-poll-new select,.board-poll-form-row input{padding:6px 8px;border:1px solid var(--border);border-radius:6px;background:var(--bg-card);color:var(--text);font-family:inherit;font-size:14px}.board-canvas .UserList__wrapper,.board-canvas .UserList-Wrapper{display:none}@media (max-width: 480px){.board-header{gap:6px 8px;flex-wrap:wrap}.board-header-side{order:3;width:100%;flex-shrink:1;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}.board-header-side::-webkit-scrollbar{display:none}.board-title-sub{display:none}.board-avatar{width:26px;height:26px;font-size:11px}.board-lock-label,.board-btn-label,.board-present-label{display:none}.board-slides{top:auto;bottom:72px;right:8px;max-height:50%}.board-poll-new input[type=text],.board-poll-new input[type=number],.board-poll-new textarea,.board-poll-new select{font-size:16px}}.board-grid{--board-card-min: 220px;display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--board-card-min),1fr));gap:16px}.board-card{display:flex;flex-direction:column;min-width:0;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;transition:box-shadow .15s}@media (hover: hover){.board-card:hover{box-shadow:var(--shadow-lg)}}.board-card-link{display:flex;flex-direction:column;flex:1;color:inherit;text-decoration:none}.board-thumb{display:block;width:100%;aspect-ratio:16 / 10;object-fit:contain;background:#fff;border-bottom:1px solid var(--border)}.board-thumb-empty{display:flex;align-items:center;justify-content:center;background:var(--bg);color:var(--text-secondary);font-size:13px}.board-card-body{display:flex;flex-direction:column;gap:2px;padding:10px 12px;min-width:0}.board-card-title,.board-card-owner{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.board-card-title{font-weight:600}.board-card-owner{font-size:13px}.board-card-badge{display:inline-block;margin-left:6px}.board-card-actions{display:flex;flex-wrap:wrap;gap:6px;padding:0 12px 10px}.card.boards-block{margin-top:16px}.dashboard-columns>div>.card.boards-block:first-child{margin-top:0}.boards-block-nested{margin-top:16px;padding-top:16px;border-top:1px solid var(--border)}@media (max-width: 480px){.board-grid{--board-card-min: 140px;gap:10px}.board-card-body{padding:8px 10px}.board-card-actions{padding:0 10px 8px}.board-card-actions .btn{flex:1;justify-content:center}.boards-block .card-header{flex-wrap:wrap;gap:8px}}.app-footer{padding:8px 20px 16px;text-align:center}.app-version{font-size:11px;color:var(--text-secondary);text-align:center;font-variant-numeric:tabular-nums}.login-card .app-version{margin-top:16px}.board-text{width:100%;height:100%;box-sizing:border-box;overflow:hidden;font-family:Nunito,var(--font);overflow-wrap:anywhere;white-space:pre-wrap;pointer-events:none;-webkit-user-select:none;user-select:none}.board-text-editing{overflow:visible;pointer-events:auto;-webkit-user-select:text;user-select:text;outline:1px dashed var(--primary)}.board-text-input{outline:none;cursor:text;min-height:1em}.board-text-body p,.board-text-body div{margin:0}.board-text-toolbar{position:absolute;display:flex;align-items:center;gap:2px;padding:3px;border:1px solid var(--border);border-radius:8px;background:var(--bg-card);box-shadow:0 2px 6px #00000026;pointer-events:auto;max-width:calc(100% - 8px);overflow-x:auto}.board-text-tool{min-width:28px;height:28px;padding:0 6px;border:none;border-radius:6px;background:transparent;color:var(--text);font-size:14px;cursor:pointer;flex-shrink:0}.board-text-tool:hover{background:var(--bg-secondary, rgba(0, 0, 0, .06))}.board-text-tool-on{background:var(--primary-light, rgba(79, 70, 229, .12));color:var(--primary)}.board-text-b{font-weight:700}.board-text-i{font-style:italic}.board-text-u{text-decoration:underline}.board-text-done{color:var(--primary);font-weight:600}.board-text-sep{width:1px;height:20px;margin:0 3px;background:var(--border);flex-shrink:0}.board-text-color{width:20px;height:20px;margin:0 2px;padding:0;border:1px solid var(--border);border-radius:50%;cursor:pointer;flex-shrink:0}
