html[data-theme="dark"]{--subtle:#2e2522;--primary:#756B7A;--soft-subtle:#302623;--lesson-planned-pill-bg:#3a3330;--lesson-planned-pill-ink:#e7ddd8;--lesson-imminent-border:#E87961;--tone-neutral-bg:#3a3330;--tone-neutral-ink:#e7ddd8;--tone-attention-bg:#5a362b;--tone-attention-ink:#f6cfc2;--tone-progress-bg:#3d3542;--tone-progress-ink:#d8cfe0;--tone-done-bg:#2b3d33;--tone-done-ink:#bfdcc8;--tone-reserved-bg:#30304a;--tone-reserved-ink:#c9c3f0;--row-hover-bg:#332926;--row-selected-bg:#3a2e2a;--row-focus:#b9aec6}
@font-face{font-family:Park;src:url('../../assets/fonts/Ownglyph-ParkDahyun.ttf') format('truetype');font-display:swap}
@font-face{font-family:Pretendard;src:url('../../assets/fonts/Pretendard-Regular.woff2') format('woff2');font-display:swap}
.edit-form{display:grid;gap:11px}.edit-form label{display:grid;gap:6px;color:var(--muted)}.edit-form input,.edit-form select,.edit-form textarea{border:1px solid var(--border-input);border-radius:var(--radius-md);background:var(--surface-input);color:var(--ink);padding:12px 14px;font-family:inherit}.edit-form textarea{min-height:84px;resize:vertical;line-height:1.5}.service-select{position:relative}.select-trigger{width:100%;min-height:50px;border:1px solid var(--border-input);border-radius:var(--radius-md);background:var(--surface-input);color:var(--ink);padding:12px 46px 12px 14px;text-align:left;cursor:pointer;position:relative}.select-chevron{position:absolute;right:16px;top:50%;width:10px;height:10px;border-right:2px solid var(--ink);border-bottom:2px solid var(--ink);transform:translateY(-65%) rotate(45deg);transition:transform .16s ease}.service-select.open .select-chevron{transform:translateY(-35%) rotate(225deg)}.select-options{display:none;position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:25;max-height:240px;overflow:auto;padding:6px;border:1px solid var(--border-input);border-radius:var(--radius-lg);background:var(--panel);box-shadow:0 12px 24px #2e211d24}.service-select.open .select-options{display:grid;gap:2px}.select-option{width:100%;border:0;border-radius:9px;background:transparent;color:var(--ink);padding:10px 12px;text-align:left;font:inherit;font-size:var(--text-xl);cursor:pointer}.select-option:hover,.select-option.selected{background:var(--soft)}
@media(min-width:761px){.top-nav a{width:auto;min-width:0;padding:10px 14px}}
.settings-icon{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;flex:0 0 22px;font-size:0;line-height:1}.settings-icon .gnb-svg{width:22px;height:22px}
.profile-edit-icon{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;margin-left:-3px}.profile-edit-icon .gnb-svg{width:22px;height:22px}
.modal-lesson-link{background:transparent;border-color:var(--border-strong)}.modal-soft-action{background:var(--soft);border-color:var(--border-strong)}
.chat-target-list,.chat-detail{width:100%;max-width:none}.chat-target-row{width:100%;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);padding:18px 0;display:flex;align-items:center;gap:12px;text-align:left;cursor:pointer}.chat-target-row:last-child{border-bottom:0}.chat-target-row:hover{background:var(--soft);border-radius:var(--radius-md);padding-left:12px;padding-right:12px}.chat-target-copy{flex:1}.chat-target-copy strong{display:block;font-size:var(--text-2xl)}.chat-target-copy small{display:block;color:var(--muted);margin-top:4px}.unread-badge{min-width:25px;height:25px;padding:0 7px;border-radius:var(--radius-pill);background:var(--accent);color:var(--paper);display:inline-flex;align-items:center;justify-content:center;font-size:var(--text-sm);font-weight:800}.chat-detail{min-height:520px;display:flex;flex-direction:column}.chat-detail-head{display:flex;align-items:flex-start;gap:14px;border-bottom:1px solid var(--line);padding-bottom:18px}.chat-detail-head h1{font-size:var(--title-xl);line-height:1.1;margin:5px 0 4px}.chat-back{border:0;background:transparent;color:var(--ink);font:inherit;font-size:var(--title-xl);line-height:1;cursor:pointer;padding:0 8px 0 0}.chat-empty{color:var(--muted);text-align:center;margin:auto}.chat-detail .messages{flex:1}
.top-nav a,.mobile-gnb a{position:relative}.nav-chat-label{position:relative}.nav-unread-dot{position:absolute;top:-4px;right:-8px;width:7px;height:7px;border:0;border-radius:50%;background:var(--accent)}
.back-link{border:0;background:transparent;padding:0;font:inherit}
.form-actions{justify-content:space-between}.form-actions-right{display:flex;gap:10px;align-items:center}.withdrawal-button{background:transparent;border-color:transparent;color:var(--rose-ink);padding-left:0;padding-right:0}.withdrawal-button:hover{background:transparent;text-decoration:underline}.withdrawal-modal{max-width:620px}.withdrawal-modal h2{margin:5px 0 0;font-size:var(--title-lg)}.withdrawal-checks{display:grid;gap:10px;margin-top:22px}.withdrawal-check{display:flex;align-items:flex-start;gap:12px;padding:14px;border:1px solid var(--line);border-radius:var(--radius-lg)}.withdrawal-check-icon{width:24px;height:24px;flex:0 0 24px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-weight:800}.withdrawal-check.passed .withdrawal-check-icon{background:var(--success-bg);color:var(--success-ink)}.withdrawal-check.blocked .withdrawal-check-icon{background:var(--attention-wash);color:var(--rose-ink)}.withdrawal-check strong{display:block}.withdrawal-check p{margin:4px 0 0;color:var(--muted);font-size:var(--text-base)}.withdrawal-modal .modal-actions{margin-top:22px}.withdrawal-modal .button:disabled{cursor:not-allowed;opacity:.45}
.profile-menu{border:0;background:transparent;font:inherit;cursor:pointer}
.profile-menu{min-height:var(--control-lg);align-items:center}.profile-menu>span:not(.settings-icon){display:inline-flex;align-items:center;height:22px;line-height:1}.profile-menu>.profile-avatar{align-self:center}
.account-sidebar{position:fixed;inset:0;z-index:30;pointer-events:none}.account-sidebar.open{pointer-events:auto}.sidebar-scrim{position:absolute;inset:0;width:100%;height:100%;border:0;background:#2e211d66;opacity:0;cursor:pointer;transition:opacity .18s ease}.account-sidebar.open .sidebar-scrim{opacity:1}.sidebar-panel{position:absolute;top:0;right:0;width:min(360px,100vw);height:100%;padding:30px 24px;background:var(--panel);box-shadow:none;visibility:hidden;transform:translateX(100%);transition:transform .18s ease,visibility 0s linear .18s}.account-sidebar.open .sidebar-panel{transform:translateX(0);box-shadow:-12px 0 30px #2e211d24;visibility:visible;transition:transform .18s ease}.sidebar-head{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-bottom:24px;border-bottom:1px solid var(--line)}.sidebar-title{margin:0 0 6px;font-size:var(--title-md);font-weight:800;line-height:1.2}.sidebar-head strong{font-size:var(--text-lg);color:var(--muted)}.sidebar-close{width:32px;height:32px;border:0;background:transparent;color:var(--ink);display:inline-flex;align-items:center;justify-content:center;font-size:var(--title-xl);line-height:1;cursor:pointer;padding:0}.sidebar-links{display:grid;gap:8px;padding-top:20px}.sidebar-link{width:100%;min-height:52px;padding:14px 2px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);display:flex;align-items:center;justify-content:space-between;text-align:left;text-decoration:none;font:inherit;font-size:var(--text-xl);cursor:pointer}.sidebar-link span{color:var(--muted);font-size:var(--text-md)}.sidebar-link:disabled{cursor:default;opacity:.55}
.sidebar-panel{color:var(--ink)}
.student-recent-label{margin-top:8px}
.student-management-actions{display:flex;flex-direction:column;align-items:stretch;gap:8px;min-width:118px}.student-management-actions .button{width:100%}
.lesson-log-summary{grid-template-columns:minmax(0,1fr);margin:0 0 16px}.lesson-log-summary-card{padding:18px 22px;display:flex;flex-direction:row;align-items:center;justify-content:space-between;text-align:left;background:var(--attention-wash);border-color:var(--tone-attention-bg);color:var(--brown-ink)}.lesson-log-summary-card>span:first-child{font-size:var(--text-xl);font-weight:700}.lesson-log-summary-right{display:inline-flex;align-items:center;gap:9px;color:var(--rose-ink)}.lesson-log-summary-card .lesson-log-summary-count{font-size:var(--text-xl);color:var(--brown-ink)}.lesson-log-summary-arrow{font-size:var(--title-md);line-height:1;color:var(--brown-ink)}
@media(max-width:760px){.student-management-actions{align-items:flex-end;min-width:0}.student-management-actions .button{width:auto;padding:10px 12px;font-size:var(--text-md)}}
@media(min-width:761px) and (max-width:1024px){.tablet-content-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:24px;align-items:start}.today-view .tablet-content-grid>.schedule-panel{margin-top:0}.lessons-dashboard{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:24px;align-items:start}.lessons-dashboard>.page-heading{grid-column:1 / -1;width:100%}.lessons-dashboard>.lesson-overview-grid{grid-column:1;display:block;min-width:0}.lessons-dashboard>.lesson-overview-grid .calendar-panel{margin-top:24px}.lessons-dashboard>.lesson-log-summary,.lessons-dashboard>.supplies-panel,.lessons-dashboard>.completed-supplies{grid-column:2;min-width:0}.lessons-dashboard>.lesson-log-summary{margin-top:0;margin-bottom:0}.lessons-dashboard>.supplies-panel{margin-top:0}.lessons-dashboard>.completed-supplies{margin-top:16px}.student-list-panel{grid-column:1 / -1}.student-management-actions{min-width:118px}.student-management-actions .button{white-space:nowrap}}
.lesson-tabs{display:flex;gap:0;margin:0 0 18px;border-bottom:1px solid var(--line)}.lesson-tab{flex:1;border:0;border-bottom:3px solid transparent;background:transparent;color:var(--muted);padding:12px 18px;margin-bottom:-1px;text-align:center;font:inherit;font-size:var(--text-xl);font-weight:800;cursor:pointer}.lesson-tab.active{border-color:var(--ink);color:var(--ink)}.lesson-panel-head{align-items:flex-start}.lesson-panel-head>div{display:grid;gap:4px;min-width:0;flex:1}.lesson-panel-head h2{margin:0}.lesson-panel-head p{margin:0}.lesson-panel-head .button-row{flex-shrink:0}.lesson-panel-head>.button{flex-shrink:0}.lesson-panel-head .button{white-space:nowrap}.lesson-days{display:grid;gap:0}.lesson-day{border-top:1px solid var(--line)}.lesson-day:last-child{border-bottom:1px solid var(--line)}.lesson-day-toggle{width:100%;border:0;background:transparent;color:var(--ink);padding:17px 0;display:flex;align-items:center;justify-content:space-between;gap:16px;text-align:left;font:inherit;cursor:pointer}.lesson-day-toggle>span:first-child{display:grid;gap:4px}.lesson-day-toggle strong{font-size:var(--text-2xl)}.lesson-day-toggle small,.lesson-day-count{color:var(--muted);font-size:var(--text-md)}.lesson-day-count{display:flex;align-items:center;gap:8px;white-space:nowrap}.lesson-day-count i{font-style:normal;font-size:var(--title-md);line-height:.7;transform:rotate(0);transition:transform .16s ease}.lesson-day.expanded .lesson-day-count i{transform:rotate(180deg)}.lesson-day-body{padding:0 0 16px}.lesson-schedule-row{display:grid;grid-template-columns:64px minmax(0,1fr) auto;align-items:center;gap:14px;padding:14px 16px;border-radius:var(--radius-md);background:var(--soft)}.lesson-schedule-row+ .lesson-schedule-row{margin-top:8px}.lesson-schedule-row time{font-weight:800}.lesson-schedule-row strong{display:block}.lesson-schedule-row p{margin:3px 0 0;color:var(--muted);font-size:var(--text-md)}.lesson-schedule-row .status-badge{justify-self:end}.empty-state{margin:0;padding:12px 0;color:var(--muted)}.supplies-panel{margin-top:32px;padding:24px;border:1px solid var(--line);border-radius:18px;background:var(--panel);box-shadow:0 10px 24px #2e211d0d}.supply-list{display:grid;gap:10px}.supply-row{display:grid;grid-template-columns:22px minmax(0,1fr) auto;align-items:center;gap:10px;padding:14px 16px;border:1px solid var(--line);border-radius:var(--radius-lg);cursor:pointer}.supply-row input{position:absolute;opacity:0;pointer-events:none}.supply-check{width:22px;height:22px;border:1px solid var(--border-strong);border-radius:7px;color:transparent;display:inline-flex;align-items:center;justify-content:center}.supply-row.done{background:var(--soft)}.supply-row.done .supply-check{background:var(--ink);border-color:var(--ink);color:var(--white)}.supply-row.done .supply-copy strong{text-decoration:line-through;color:var(--muted)}.supply-copy{display:grid;gap:3px;min-width:0}.supply-copy small,.supply-row em{font-size:var(--text-md);color:var(--muted);font-style:normal}.calendar-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.calendar-toolbar h2{margin:0}.calendar-toolbar .button{min-width:42px;padding:8px 12px}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.calendar-weekdays{margin-bottom:6px;text-align:center;color:var(--muted);font-size:var(--text-md);font-weight:800}.calendar-month-grid{grid-auto-rows:minmax(72px,auto)}.calendar-cell{display:grid;align-content:start;gap:6px;padding:9px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-input)}.calendar-cell strong{font-size:var(--text-lg)}.calendar-cell small{color:var(--ink);font-size:var(--text-xs)}.calendar-cell.has-lesson{background:var(--soft);border-color:var(--border-strong)}
@media(max-width:760px){.lesson-panel-head{display:flex;align-items:center;gap:12px}.lesson-panel-head .button-row{width:auto}.lesson-panel-head .button{flex:0 0 auto;padding-left:10px;padding-right:10px}.lesson-schedule-row{grid-template-columns:54px minmax(0,1fr) auto;gap:10px}.lesson-schedule-row .status-badge{grid-column:3;grid-row:1;justify-self:end}.supplies-panel{margin-top:24px;padding:18px}.calendar-month-grid{grid-auto-rows:minmax(56px,auto)}.calendar-cell{padding:7px}.calendar-cell small{font-size:var(--text-xs)}}
.schedule-panel{margin-top:0;padding:24px;border:1px solid var(--line);border-radius:18px;background:var(--panel);box-shadow:0 10px 24px #2e211d0d}.lesson-tabs{display:flex;gap:10px;margin:0 0 36px;border:0}.lesson-tab{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--panel);box-shadow:0 2px 6px #2e211d0a}.lesson-tab.active{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.lesson-panel-head{align-items:center}
.page-heading>div>.eyebrow{display:none}
.lesson-day-count i{font-size:0;width:10px;height:10px;display:inline-block;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg);transition:none}
.lesson-day.expanded .lesson-day-count i{transform:rotate(225deg)}
.checklist-modal{max-width:520px}.checklist-modal h2{margin:5px 0 0;font-size:var(--title-xl)}.supply-form{display:grid;gap:9px}.supply-form label{margin-top:9px;color:var(--ink)}.supply-form input,.supply-form textarea,.supply-form select{width:100%;border:1px solid var(--border-input);border-radius:var(--radius-md);background:var(--surface-input);color:var(--ink);padding:13px 15px}.supply-form textarea{min-height:128px;resize:vertical;line-height:1.5}.supply-form select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--ink) 50%),linear-gradient(135deg,var(--ink) 50%,transparent 50%);background-position:calc(100% - 18px) 53%,calc(100% - 12px) 53%;background-size:6px 6px,6px 6px;background-repeat:no-repeat;padding-right:42px}.checklist-help{margin:4px 0 0;color:var(--muted);font-size:var(--text-base)}
.checklist-backdrop{position:static;background:transparent;display:block;padding:0;margin-top:24px}
.checklist-backdrop .checklist-modal{max-width:none;max-height:none;overflow:visible;border:1px solid var(--line);box-shadow:none;border-radius:18px;padding:24px}
@media(max-width:760px){.checklist-backdrop .checklist-modal{padding:18px}}
.supply-row{grid-template-columns:minmax(0,1fr) auto;cursor:default}.supply-toggle{display:grid;grid-template-columns:22px minmax(0,1fr) auto;align-items:center;gap:10px;min-width:0;cursor:pointer}.supply-edit{width:34px;height:34px;border:1px solid var(--border-strong);border-radius:var(--radius-md);background:transparent;color:var(--ink);display:inline-flex;align-items:center;justify-content:center;padding:6px;cursor:pointer}.supply-edit:hover{background:var(--soft)}.supply-edit .gnb-svg{width:20px;height:20px}
.profile-menu{height:44px;align-items:center;line-height:1}.profile-menu>.profile-avatar{width:22px;height:22px;flex:0 0 22px;align-self:center}.profile-menu>span:not(.settings-icon){height:22px;display:inline-flex;align-items:center;line-height:22px}
.profile-view>.back-link,.profile-view>.profile-card{width:100%;max-width:780px;margin-left:auto;margin-right:auto}.profile-view>.back-link{display:block;text-align:left;margin-bottom:24px}
.settings-view>.page-heading,.settings-view>.settings-panel{width:100%;max-width:780px;margin-left:auto;margin-right:auto}
.settings-view>.back-link{display:block;width:100%;max-width:780px;margin-left:auto;margin-right:auto;text-align:left;margin-bottom:24px}
.button:disabled{opacity:.45;cursor:not-allowed}
.settings-actions{display:flex;justify-content:flex-end;width:100%;max-width:780px;margin:16px auto 0}
.settings-view>.page-heading{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:28px}.settings-view>.page-heading>div{min-width:0}.settings-view>.page-heading>.button{margin-top:0}
@media(max-width:760px){.settings-view>.page-heading{gap:12px}.settings-view>.page-heading>.button{padding:10px 12px;font-size:var(--text-md)}}
@media(max-width:760px){.profile-menu{height:44px}.profile-menu>.profile-avatar{width:22px;height:22px;flex:0 0 22px}.profile-menu>span:not(.settings-icon){height:22px}}
.today-view .stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.today-view .stat-card{min-width:0;padding:18px 10px;align-items:center;text-align:center}.today-view .stat-card span{font-size:clamp(11px,2.8vw,17px);white-space:nowrap}.today-view .stat-card strong{font-size:clamp(24px,5vw,34px);line-height:1;white-space:nowrap}
.today-panel-head{align-items:center}.today-panel-title{display:flex;align-items:baseline;justify-content:space-between;gap:12px;width:100%;min-width:0}.today-panel-title h2{min-width:0}.today-panel-title .muted{white-space:nowrap;text-align:right}.display-toggle{display:inline-flex;align-items:center;gap:7px;color:var(--muted);font-size:var(--text-md);white-space:nowrap;cursor:pointer}.display-toggle input{accent-color:var(--ink);width:16px;height:16px}.today-lesson-row{display:grid;grid-template-columns:90px minmax(0,1fr) auto;align-items:center;gap:18px}.today-lesson-row .lesson-time{display:grid;gap:3px}.today-lesson-row .lesson-time time{display:flex;align-items:center;font-size:var(--title-md);font-weight:800;line-height:1}.today-lesson-row .lesson-instrument{color:var(--muted);font-size:var(--text-md)}.today-lesson-row .lesson-info{min-width:0}.today-lesson-row .lesson-info strong{display:block}.today-lesson-row .lesson-info p{margin:4px 0 0;color:var(--muted)}
@media(max-width:760px){.today-panel-head{align-items:flex-start;gap:10px}.today-panel-title{gap:7px;flex-wrap:wrap}.today-panel-title .muted{font-size:var(--text-md)}.display-toggle{font-size:var(--text-xs);gap:4px}.today-lesson-row{grid-template-columns:72px minmax(0,1fr) auto;gap:10px}.today-lesson-row .lesson-time time{font-size:var(--text-2xl)}.today-lesson-row .lesson-instrument{font-size:var(--text-xs)}}
.button.tertiary{background:var(--soft);border-color:var(--border-strong);color:var(--ink)}
.button.etc{background:var(--panel);border-color:var(--border-strong);color:var(--ink)}
.supplies-panel .lesson-panel-head>.button.subtle{border-color:var(--border-strong);background:var(--soft)}
.display-toggle{justify-content:flex-start}
.display-toggle input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.toggle-switch{position:relative;display:inline-block;width:38px;height:22px;flex:0 0 38px;border-radius:var(--radius-pill);background:var(--border-input);transition:background .16s ease}
.toggle-switch::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:var(--panel);box-shadow:0 1px 3px #2e211d24;transition:transform .16s ease}
.display-toggle.on .toggle-switch{background:var(--ink)}
.display-toggle.on .toggle-switch::after{left:auto;right:3px;transform:none}
@media(max-width:760px){.students-view .page-heading{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px}.students-view .page-heading>div{min-width:0}.students-view .page-heading>.button{margin-top:0;padding:10px 12px;font-size:var(--text-base)}}
@media(max-width:760px){.today-view .page-heading{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px}.today-view .page-heading>div{min-width:0}.today-view .page-heading>.button{margin-top:0;padding:10px 12px;font-size:var(--text-base)}}
.page-action-button{min-width:118px;min-height:var(--control-md);padding:12px 16px;border-radius:var(--radius-button);font-size:var(--text-base);font-weight:700;line-height:1;white-space:nowrap}.chat-picker{max-width:560px;max-height:min(640px,calc(100vh - 48px));overflow:auto}.chat-picker-list{display:grid;gap:4px}.chat-picker-option{width:100%;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);padding:14px 0;display:flex;align-items:center;gap:12px;text-align:left;font:inherit;cursor:pointer}.chat-picker-option:last-child{border-bottom:0}.chat-picker-option:hover{background:var(--soft);border-radius:var(--radius-md);padding-left:10px;padding-right:10px}.chat-picker-option>.chat-target-copy{flex:1;min-width:0}.chat-picker-option .chat-target-copy strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}.chat-picker-option .chat-target-copy small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-picker-option>span:last-child{font-size:var(--title-lg);color:var(--muted);flex:0 0 auto}
.students-view .search{margin-top:12px}
.student-danger-zone{margin-top:18px;margin-left:16px;text-align:left}.info-sidebar-panel .student-danger-zone{margin-top:14px;margin-left:0;padding-top:10px;text-align:center}.text-button{border:0;background:transparent;padding:0;color:var(--muted);text-decoration:underline;cursor:pointer;font:inherit}.text-button.danger{color:var(--rose-ink)}
.student-delete-confirm-input{display:block;width:100%;margin-top:18px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-input);color:var(--ink);padding:13px 15px}.student-delete-modal .button:disabled{opacity:.45;cursor:not-allowed}
.today-view .stat-card{position:relative}.today-view .stat-unit{display:block;color:var(--muted);font-size:var(--text-sm);line-height:1;margin-top:-1px}
.today-view .stat-card:nth-child(2)>span:first-child::after{content:">";display:inline-block;margin-left:9px;font-size:var(--text-xl);line-height:1;vertical-align:middle}
.today-checklist{margin-top:26px}
.today-empty-state{padding:26px 0;text-align:center}
.today-view{min-height:0}
.today-view .stat-card{display:flex;flex-direction:column;align-items:center;gap:5px}.today-view .stat-card>span:first-child{display:block}.today-view .stat-count{display:inline-flex;align-items:flex-end;gap:2px;line-height:1}.today-view .stat-card strong{line-height:1}.today-view .stat-unit{display:inline-block;line-height:1;margin:0 0 2px}
.toggle-switch{width:32px;height:18px}.toggle-switch::after{top:2px;left:2px;width:14px;height:14px}.display-toggle.on .toggle-switch::after{left:auto;right:2px;transform:none}
.calendar-panel{margin-top:32px}
.today-view .schedule-panel{margin-top:26px}.lesson-overview-grid{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);grid-template-areas:"calendar schedule";gap:32px;align-items:start}.lesson-overview-grid .calendar-panel{grid-area:calendar;margin-top:0}.lesson-overview-grid .schedule-panel{grid-area:schedule}
.settings-panel{max-width:780px}.settings-option{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 0}.settings-option strong{display:block;font-size:var(--text-2xl)}.settings-option p{margin:5px 0 0;color:var(--muted)}
.lessons-view .lesson-overview-grid{grid-template-columns:1fr;grid-template-areas:"calendar"}
@media(max-width:760px){.lesson-overview-grid{grid-template-columns:1fr;grid-template-areas:"schedule" "calendar";gap:0}.lesson-overview-grid .calendar-panel{margin-top:32px}}
.lessons-view .lesson-overview-grid{grid-template-areas:"calendar"}
.lesson-day-count{align-items:center;line-height:1}.lesson-day-count i{display:inline-flex;align-items:center;justify-content:center;height:22px;line-height:1}
.lesson-day-empty{cursor:default}
.lesson-day-toggle>span:first-child{display:flex;align-items:baseline;gap:8px}
.service-select.disabled .select-trigger{cursor:default;background:var(--soft);color:var(--muted);opacity:.82}.service-select.disabled .select-chevron{opacity:.55}
.instrument-editor{display:grid;gap:10px}.instrument-input-shell{display:flex;align-items:center;flex:1;min-width:0;border:1px solid var(--border-input);border-radius:var(--radius-md);background:var(--surface-input);padding:5px 8px}.instrument-input-shell .instrument-chips{display:flex;align-items:center;flex-wrap:wrap;gap:5px;width:100%}.instrument-input-shell input{flex:1;min-width:120px;border:0;padding:7px 4px;background:transparent;outline:0}.instrument-chip{display:inline-flex;align-items:center;gap:5px;padding:5px 8px;border-radius:var(--radius-pill);background:var(--soft);color:var(--ink);font-size:var(--text-md);white-space:nowrap}.instrument-chip button{border:0;background:transparent;color:inherit;cursor:pointer;padding:0;line-height:1;font-size:var(--text-lg)}.instrument-add-row{display:flex;align-items:center;gap:8px}.instrument-add-row .button{padding:10px 14px}.instrument-suggestions{display:flex;flex-wrap:wrap;gap:6px}.instrument-suggestion{border:1px solid var(--line);border-radius:var(--radius-pill);background:transparent;color:var(--muted);padding:6px 10px;cursor:pointer;font:inherit;font-size:var(--text-sm)}.instrument-suggestion:hover{background:var(--soft);color:var(--ink)}
.profile-card label:has(.instrument-editor){display:grid;gap:6px}
.profile-form-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:22px}.profile-form-heading h1{margin:0}.profile-form-heading .button{flex:0 0 auto}
@media(max-width:520px){.profile-form-heading{gap:10px}}
.instrument-empty-help{color:var(--muted);font-size:var(--text-sm);white-space:nowrap;align-self:center}
.app-toast{position:fixed;z-index:1000;left:50%;top:50%;display:inline-flex;align-items:center;gap:10px;transform:translate(-50%,-50%);padding:13px 18px;border-radius:var(--radius-md);background:var(--ink);color:var(--panel);box-shadow:0 10px 28px rgba(75,53,45,.18);font-size:var(--text-md);line-height:1.4;pointer-events:none}
.app-toast-icon{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:rgba(255,255,255,.18);font-size:var(--text-xs);line-height:1}
@media (max-width:520px){.app-toast{max-width:calc(100vw - 32px);white-space:nowrap}}
.chat-existing-notice{max-width:420px}.chat-existing-notice p{margin:5px 0 0;color:var(--muted)}.chat-existing-notice .modal-actions{margin-top:18px}
.lesson-day-count i{display:inline-block;width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px);transform-origin:center;transition:transform .16s ease}.lesson-day.expanded .lesson-day-count i{transform:rotate(225deg) translateY(-2px)}
.app-header .brand{transform:translateY(-3px)}
.supplies-panel .lesson-panel-head{align-items:center}.lesson-panel-head>.supplies-panel-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex:0 0 auto;min-width:0}.supplies-panel .supply-filter-select{position:relative;flex:0 0 auto;width:104px;min-width:0}.supplies-panel .supply-filter-select .select-trigger{min-height:var(--control-md);padding:9px 34px 9px 12px;font-size:var(--text-md);line-height:1.2}.checklist-add-button{min-width:0;min-height:var(--control-md);padding:10px 13px;border-radius:var(--radius-md);font-size:var(--text-md);font-weight:700;line-height:1;white-space:nowrap}
@media(max-width:760px){.supplies-panel .lesson-panel-head{flex-direction:row;align-items:center;gap:8px;flex-wrap:nowrap}.supplies-panel .lesson-panel-head>div{flex:1;min-width:0}.supplies-panel .lesson-panel-head h2{white-space:nowrap}.lesson-panel-head>.supplies-panel-actions{width:auto;justify-content:flex-end;gap:6px;flex-wrap:nowrap;flex:0 0 auto}.supplies-panel .supply-filter-select{width:92px}.supplies-panel .supply-filter-select .select-trigger{padding-left:10px;padding-right:26px;font-size:var(--text-sm);white-space:nowrap}.checklist-add-button{padding-left:10px;padding-right:10px;font-size:var(--text-sm)}}
.supplies-panel .supply-filter-select .select-trigger{display:flex;align-items:center;justify-content:flex-start;line-height:1.2}.supplies-panel .service-select--compact .select-trigger{min-height:var(--control-md);padding:10px 46px 10px 12px;font-size:var(--text-md)}.supplies-panel .supply-filter-select .select-trigger [data-select-label]{display:inline-flex;align-items:center;line-height:1}.supplies-panel .supply-filter-select .select-chevron{position:absolute;top:50%;right:12px;flex:0 0 auto;margin:0;transform:translateY(-65%) rotate(45deg)}.supplies-panel .supply-filter-select.open .select-chevron{transform:translateY(-35%) rotate(225deg)}
.supply-empty-state{margin:0;padding:28px 16px;border:1px dashed var(--line);border-radius:var(--radius-lg);color:var(--muted);text-align:center}
.checklist-delete-button{width:40px;height:40px;flex:0 0 40px;border:1px solid var(--border-strong);border-radius:var(--radius-md);background:transparent;color:var(--rose-ink);display:inline-flex;align-items:center;justify-content:center;padding:8px;cursor:pointer}.checklist-delete-button:hover{background:var(--attention-wash)}.checklist-delete-button .gnb-svg{width:22px;height:22px}.supply-delete-warning{margin:8px 0 0;color:var(--muted);font-size:var(--text-md);line-height:1.5}.supply-delete-modal .modal-actions{justify-content:flex-end}
.completed-supplies{margin-top:24px;padding:0;border:1px solid var(--line);border-radius:18px;background:var(--soft);overflow:hidden}.completed-supplies-toggle{width:100%;border:0;background:transparent;color:var(--ink);padding:24px;display:flex;align-items:center;justify-content:space-between;font:inherit;text-align:left;cursor:pointer}.completed-supplies-title{font-size:var(--title-md);font-weight:800}.completed-supplies-summary{display:inline-flex;align-items:center;gap:14px;color:var(--muted);font-size:var(--text-lg)}.completed-supplies-chevron{width:10px;height:10px;border-right:2px solid var(--ink);border-bottom:2px solid var(--ink);transform:translateY(-2px) rotate(45deg);transition:transform .16s ease}.completed-supplies-toggle[aria-expanded="true"] .completed-supplies-chevron{transform:translateY(3px) rotate(225deg)}.completed-supplies-content{padding:0 24px 24px}.completed-supplies-content[hidden]{display:none}.completed-supply-groups{display:grid;gap:0}.completed-supply-group{border-top:1px solid var(--line)}.completed-supply-group-toggle{width:100%;border:0;background:transparent;color:var(--ink);padding:15px 0;display:flex;align-items:center;justify-content:space-between;font:inherit;font-size:var(--text-xl);font-weight:700;text-align:left;cursor:pointer}.completed-supply-group-toggle span:last-child{color:var(--muted);font-size:var(--text-md);font-weight:500}.completed-supply-group-list{display:grid;gap:10px;padding:0 0 14px}.completed-supply-group-list[hidden]{display:none}
.page-action-button,.today-view .page-heading>.button,.lessons-view .page-heading>.button{padding:12px 16px}
@media(max-width:760px){.page-action-button,.today-view .page-heading>.button,.lessons-view .page-heading>.button{padding:10px 12px}}
.page-action-button,.today-view .page-heading>.button,.lessons-view .page-heading>.button{min-width:118px;padding:12px 16px}
.edit-form input:disabled{opacity:.72;background:var(--soft);cursor:not-allowed}
.settings-option-stack{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:18px}.settings-option-stack .settings-choices{display:flex;align-items:stretch;justify-self:end;gap:10px}.settings-choice{position:relative;display:flex;align-items:center;gap:12px;padding:16px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--panel);cursor:pointer}.settings-choice:has(input:checked){border-color:var(--ink);background:var(--soft)}.settings-choice input{accent-color:var(--ink);margin:0}.settings-choice span{display:grid;gap:3px}.settings-choice strong{font-size:var(--text-xl)}.settings-choice small{color:var(--muted);font-size:var(--text-md)}@media(max-width:760px){.settings-option-stack{grid-template-columns:1fr}.settings-option-stack .settings-choices{justify-self:stretch;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.page-action-button,.today-view .page-heading>.button,.lessons-view .page-heading>.button{min-width:0;padding:10px 12px}}
.profile-groups{display:grid;gap:24px}.profile-group{display:grid;gap:12px}.profile-group h3{margin:0;font-size:var(--text-2xl)}.profile-group .profile-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
@media(min-width:761px){.profile-groups{gap:36px}}
@media(max-width:760px){.profile-group .profile-grid{grid-template-columns:1fr}}
.today-view>.page-heading,.students-view>.page-heading,.lessons-dashboard>.page-heading{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:28px}.today-view>.page-heading>div,.students-view>.page-heading>div,.lessons-dashboard>.page-heading>div{min-width:0}
@media(max-width:760px){.today-view>.page-heading,.students-view>.page-heading,.lessons-dashboard>.page-heading{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px}.today-view>.page-heading>.button,.students-view>.page-heading>.button,.lessons-dashboard>.page-heading>.button{margin-top:0}}
.checklist-modal h2{font-size:var(--title-md)}
.guidance-block{grid-column:1 / -1}.guidance-block.guidance-block-half{grid-column:1 / -1}.guidance-block.guidance-block-half.is-guidance-paired{grid-column:auto}.guidance-block.is-guidance-dragging{opacity:.55}.guidance-block.is-guidance-drag-over{outline:2px dashed var(--accent);outline-offset:3px}.drag-handle{user-select:none;-webkit-user-select:none;touch-action:none}
.guidance-view{min-height:0}.guidance-view>.page-heading{align-items:center}.guidance-heading-actions{display:flex;gap:10px;flex-shrink:0}.guidance-editor{display:grid;grid-template-columns:220px minmax(0,1fr);gap:18px;align-items:start}.guidance-sections,.guidance-workspace{min-width:0}.guidance-sections{padding:18px}.guidance-sections h2{font-size:var(--text-2xl);margin:0 0 12px}.guidance-section-list{display:grid;gap:4px}.guidance-section-item{width:100%;display:flex;align-items:center;gap:10px;border:0;border-radius:var(--radius-md);background:transparent;color:var(--ink);padding:11px 8px;text-align:left;cursor:pointer}.guidance-section-item.active,.guidance-section-item:hover{background:var(--soft)}.guidance-section-number{width:24px;height:24px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--soft);color:var(--muted);font-size:var(--text-sm);flex:0 0 24px}.guidance-section-number.done{background:var(--success-bg);color:var(--success-ink)}.guidance-workspace{padding:24px}.guidance-workspace-head{display:flex;align-items:center;justify-content:space-between;gap:18px;border-bottom:1px solid var(--line);padding-bottom:18px;margin-bottom:18px}.guidance-workspace-head h2{margin:0 0 5px;font-size:var(--title-md)}.guidance-workspace-head p{margin:0;color:var(--muted)}.guidance-workspace-head .button{flex:0 0 auto}.guidance-blocks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.guidance-block{min-width:0;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface-input);padding:16px;cursor:grab}.guidance-block-wide{grid-column:1 / -1}.guidance-block-label{display:flex;align-items:center;gap:8px;margin-bottom:12px;color:var(--muted);font-size:var(--text-md)}.guidance-block-label strong{color:var(--ink)}.drag-handle{display:inline-flex;align-items:center;justify-content:center;color:var(--muted);font-size:var(--text-2xl);line-height:1;letter-spacing:-8px;width:18px;overflow:hidden;cursor:grab}.guidance-block h3{margin:0;font-size:var(--text-2xl)}.guidance-block p{margin:0;color:var(--ink);line-height:1.7}.guidance-image-placeholder{height:150px;border:1px dashed var(--border-strong);border-radius:var(--radius-md);background:var(--soft);display:flex;align-items:center;justify-content:center;color:var(--muted)}.guidance-image-edit{margin-left:auto;border:0;background:transparent;color:var(--muted);padding:4px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.guidance-image-edit .gnb-svg{width:18px;height:18px}.guidance-add-block{grid-column:1 / -1;border:1px dashed var(--border-strong);border-radius:var(--radius-md);background:transparent;color:var(--accent);padding:14px;font:inherit;font-weight:700;cursor:pointer}.guidance-actions{display:flex;align-items:center;justify-content:flex-end;gap:18px;margin-top:20px;color:var(--muted);font-size:var(--text-md)}.guidance-actions>div{display:flex;gap:10px}.guidance-block-choices{display:grid;gap:10px}.guidance-block-choices button{display:flex;align-items:center;justify-content:space-between;gap:18px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--panel);padding:14px;text-align:left;font:inherit;color:var(--ink);cursor:pointer}.guidance-block-choices button span{color:var(--muted);font-size:var(--text-sm);font-weight:400;text-align:right}.guidance-block-choices button:hover{background:var(--soft)}
@media(max-width:760px){.guidance-view>.page-heading{display:block}.guidance-heading-actions{margin-top:18px}.guidance-heading-actions .button{flex:1;padding:10px 12px;font-size:var(--text-md)}.guidance-editor{grid-template-columns:1fr}.guidance-sections{padding:16px}.guidance-section-list{grid-template-columns:minmax(0,1fr)}.guidance-workspace{padding:18px}.guidance-workspace-head{align-items:flex-start}.guidance-workspace-head .button{padding:10px 12px;font-size:var(--text-md)}.guidance-blocks{grid-template-columns:1fr}.guidance-block-wide{grid-column:auto}.guidance-add-block{grid-column:auto}.guidance-actions{align-items:flex-end;flex-direction:column;gap:12px}.guidance-actions>div{width:100%;justify-content:flex-end}}
@media(min-width:761px){.checklist-add-button{min-width:118px;padding:12px 16px;font-size:var(--text-base)}}
.guidance-add-block{background:var(--panel);color:var(--ink);border-color:var(--border-strong)}.guidance-field{width:100%;border:1px solid var(--border-input);border-radius:var(--radius-md);background:var(--surface-input);color:var(--ink);padding:12px 13px;font:inherit}.guidance-title-field{font-size:var(--text-2xl);font-weight:700}.guidance-body-field{min-height:124px;resize:vertical;line-height:1.6}.guidance-actions .button:disabled{opacity:.45;cursor:not-allowed}.guidance-save-confirm .modal-head p{margin:6px 0 0;color:var(--muted)}
.guidance-preview-modal{width:min(720px,calc(100vw - 32px));max-height:min(760px,calc(100vh - 32px));overflow:auto}.guidance-preview-content{display:grid;gap:12px;margin:18px 0}.guidance-preview-section{padding:16px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--panel)}.guidance-preview-section h3{margin:0 0 10px;font-size:var(--text-base)}.guidance-preview-section strong{display:block;font-size:var(--text-lg);margin-bottom:6px}.guidance-preview-section p{margin:0;line-height:1.6;white-space:pre-wrap}.guidance-preview-section small{display:block;margin-top:10px;color:var(--muted)}
.guidance-workspace-head-actions{display:flex;align-items:center;gap:10px;flex:0 0 auto}.guidance-workspace-head-actions .button{margin:0}
@media(max-width:760px){.guidance-workspace-head-actions{gap:6px}.guidance-workspace-head-actions .button{padding:10px 9px;font-size:var(--text-sm)}}
.guidance-add-block{display:flex;flex-direction:column;align-items:center;gap:4px}.guidance-add-block::after{content:"블록을 움직여 한 줄에는 최대 두 개까지 배치할 수 있어요.";font-size:var(--text-xs);font-weight:400;color:var(--muted)}
.guidance-image-placeholder img{display:block;width:100%;height:100%;object-fit:cover;border-radius:9px}
.guidance-image-help{display:block;margin-top:8px;margin-left:8px;color:var(--muted);font-size:var(--text-xs);line-height:1.4}
.guidance-image-placeholder{aspect-ratio:4 / 3;height:auto;min-height:0}
@media(max-width:760px){.guidance-actions{align-items:center;flex-direction:row;justify-content:space-between;gap:8px;white-space:nowrap}.guidance-actions>span{min-width:0;overflow:hidden;text-overflow:ellipsis;font-size:var(--text-xs)}.guidance-actions>div{flex:0 0 auto;width:auto;gap:6px}.guidance-actions>div .button{padding:9px 10px;font-size:var(--text-sm)}}
.record-row-link{width:100%;border:0;border-bottom:1px solid var(--line);background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.record-row-link:hover,.record-row-link:focus-visible{background:var(--soft-subtle);outline:2px solid var(--focus-ring);outline-offset:-2px}.record-row-copy{display:grid;gap:5px;min-width:0}.record-row-summary{color:var(--muted);font-size:var(--text-lg)}.lesson-record-view .page-heading{align-items:center}.lesson-record-view>.page-heading>.status-badge{flex:0 0 auto}.lesson-record-form{display:grid;gap:18px}.lesson-record-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.lesson-record-field{display:grid;align-content:start;gap:6px;min-width:0}.lesson-record-field>span{font-size:var(--text-2xl);font-weight:700}.lesson-record-field>small{color:var(--muted);font-size:var(--text-md)}.lesson-record-field textarea{width:100%;min-height:110px;resize:vertical;border:1px solid var(--border-input);border-radius:var(--radius-md);background:var(--surface-input);color:var(--ink);font:inherit;padding:12px 14px;line-height:1.5}.lesson-record-field textarea:focus{outline:2px solid var(--focus-ring);outline-offset:1px}.lesson-record-actions{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px}.lesson-record-actions>[data-record-next]{justify-self:end}.lesson-record-actions-center{display:flex;align-items:center;justify-content:center;gap:10px}.lesson-record-actions .button:disabled{opacity:.48;cursor:not-allowed}
@media(max-width:760px){.record-row-link{gap:10px;padding:17px 0}.record-row-summary{font-size:var(--text-md)}.lesson-record-view .page-heading{align-items:flex-start;gap:12px}.lesson-record-view .page-heading h1{font-size:var(--title-xl)}.lesson-record-fields{grid-template-columns:1fr;gap:14px;padding:18px}.lesson-record-field textarea{min-height:100px}.lesson-record-actions{grid-template-columns:1fr 1fr;gap:9px}.lesson-record-actions-center{grid-column:1/-1;grid-row:1;justify-content:stretch}.lesson-record-actions-center .button{flex:1}.lesson-record-actions>[data-record-previous]{grid-column:1;grid-row:2}.lesson-record-actions>[data-record-next]{grid-column:2;grid-row:2;justify-self:stretch}.lesson-record-actions>.button{padding:10px 12px}}
.lesson-heading-title{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px}.lesson-heading-title h1{margin:0}
.record-row-link{width:calc(100% + 24px);margin-inline:-12px;padding-inline:14px;border-radius:var(--radius-lg)}.record-row-link:hover{background:var(--row-tint);border-radius:var(--radius-lg);outline:none}.record-row-link:focus-visible{background:var(--row-tint);border-radius:var(--radius-lg);outline:2px solid var(--focus-ring);outline-offset:-2px}
@media(max-width:760px){.record-row-link{width:calc(100% + 24px);margin-inline:-12px;padding-inline:14px}}
.guidance-section-status{margin-left:auto;flex:0 0 auto;font-size:var(--text-xs);font-weight:600;white-space:nowrap}.guidance-section-status.written{color:var(--success-ink)}.guidance-section-status.unwritten{color:var(--rose-ink)}
.guidance-empty-state{grid-column:1 / -1;min-height:260px;border:1px dashed var(--border-strong);border-radius:var(--radius-lg);background:var(--soft);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:28px;text-align:center;color:var(--muted)}.guidance-empty-state strong{color:var(--ink);font-size:var(--text-xl)}.guidance-empty-state p{margin:0;font-size:var(--text-sm)}.guidance-empty-character{width:180px;height:150px;object-fit:contain;margin-bottom:4px}.guidance-empty-state .guidance-add-block{width:min(100%,280px);margin-top:10px}
@media(min-width:761px){.guidance-empty-state .guidance-add-block{width:100%;}}
.record-row-link{position:relative;border-bottom:0}
.record-row-link:not(:last-child)::after{content:"";position:absolute;left:14px;right:14px;bottom:0;height:1px;background:var(--line);pointer-events:none}
.record-row-link:not(:last-child)::after{left:0;right:0}
.today-lesson-row,.lesson-schedule-row{cursor:pointer;transition:background-color .16s ease}
.today-lesson-row:hover{background:var(--row-tint)}
.lesson-schedule-row:hover{background:var(--soft)}
.today-lesson-row{width:calc(100% + 24px);margin-inline:-12px;padding-inline:14px;border-radius:var(--radius-lg)}
@media(max-width:760px){.today-lesson-row{width:calc(100% + 24px);margin-inline:-12px;padding-inline:14px}}
.today-view .today-lesson-row:first-of-type{border-top:0}
.today-view .panel>.today-lesson-row:first-of-type{border-top:1px solid var(--line)}
.supply-row{transition:background-color .16s ease}.supply-row:hover{background:var(--row-tint)}
.today-view .panel>.panel-head:has(.today-panel-title){position:relative}
.today-view .panel>.panel-head:has(.today-panel-title)::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--line);pointer-events:none}
.today-view .panel>.today-lesson-row:first-of-type{border-top:0}
.today-view .panel>.panel-head:has(.today-panel-title)::after{display:none}
.today-panel-title>.muted{font-size:0}.today-panel-title>.muted::after{content:"2026년 9월 25일 금요일";font-size:var(--text-xl)}
@media(max-width:760px){.today-panel-title>.muted::after{font-size:var(--text-md)}}
.lesson-record-heading-actions{display:flex;flex-direction:column;align-items:flex-end;gap:12px;flex:0 0 auto}.lesson-record-navigation{display:flex;align-items:center;justify-content:flex-end;gap:8px}.lesson-record-navigation .button{padding:10px 14px}.lesson-record-actions{display:flex;justify-content:flex-end}.lesson-record-actions-center{justify-content:flex-end}
@media(max-width:760px){.lesson-record-heading-actions{align-items:flex-end}.lesson-record-navigation .button{padding:9px 11px;font-size:var(--text-md)}.lesson-record-actions-center{width:100%;justify-content:stretch}.lesson-record-actions-center .button{flex:1}}
.lesson-record-topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:26px}.lesson-record-topbar .back-link{margin-bottom:0}
@media(max-width:760px){.lesson-record-topbar{align-items:flex-start;gap:10px}.lesson-record-topbar .lesson-record-navigation{flex-shrink:0}}
.lesson-record-title-row{display:flex;align-items:center;gap:12px;margin-bottom:10px}.lesson-record-title-row h1{margin:0}.lesson-record-title-row .status-badge{flex:0 0 auto}
.lesson-summary-ai-button{margin-left:auto;flex:0 0 auto;white-space:nowrap}
@media(max-width:760px){.lesson-record-title-row{align-items:flex-start;gap:10px;flex-wrap:wrap}.lesson-record-title-row h1{font-size:var(--title-xl)}}
.lesson-record-fields{grid-template-columns:1fr;counter-reset:lesson-field}.lesson-record-field{counter-increment:lesson-field}.lesson-record-field>span::before{content:counter(lesson-field) ". ";}
.lesson-record-memo{margin-top:8px;padding-top:22px;border-top:1px solid var(--line)}
.checklist-add-button{width:auto;min-width:0!important;padding:12px 16px!important;font-size:var(--text-base);font-weight:700;line-height:1;flex:0 0 auto}
@media(max-width:760px){.checklist-add-button{min-width:0!important;padding:10px 12px!important;font-size:var(--text-md)}}
.today-lesson-row,.record-row-link,.record-row-link:hover,.record-row-link:focus-visible{border-radius:6px}
.today-lesson-row{border-radius:6px}
.guidance-workspace-head .button:disabled{opacity:.45;cursor:not-allowed}
.scheduled-lessons-panel{margin-top:24px}.lesson-day-choices{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.lesson-day-choice{display:inline-flex;align-items:center;cursor:pointer}.lesson-day-choice input{position:absolute;opacity:0;pointer-events:none}.lesson-day-choice span{min-width:34px;padding:8px 10px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--panel);color:var(--muted);text-align:center}.lesson-day-choice input:checked+span{background:var(--soft);border-color:var(--border-strong);color:var(--ink);font-weight:700}.lesson-day-choice input:focus-visible+span{outline:2px solid var(--focus-ring);outline-offset:2px}
@media(max-width:760px){.scheduled-lessons-panel{margin-top:18px}.lesson-day-choices{gap:6px}.lesson-day-choice span{min-width:32px;padding:7px 8px}}
.guidance-library-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.guidance-library-card{min-height:180px;padding:24px;display:flex;flex-direction:column;justify-content:space-between;gap:20px}.guidance-library-card h2{margin:4px 0 8px}.guidance-library-card p{color:var(--muted);margin:0}.guidance-library-empty{min-height:420px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;padding:40px}.guidance-library-empty img{width:220px;height:180px;object-fit:contain}.guidance-library-empty h2{margin:0}.guidance-library-empty p{margin:0 0 20px;color:var(--muted)}
.guidance-blocks{position:relative}.guidance-drop-indicator{position:absolute;z-index:3;background:var(--danger);border-radius:var(--radius-pill);pointer-events:none;box-shadow:0 0 0 3px #c85b4b24}.guidance-drop-indicator.is-horizontal{height:4px;transform:translateY(-50%)}.guidance-drop-indicator.is-vertical{width:4px;transform:translateX(-50%)}.guidance-block.is-guidance-drop-target{background:#c85b4b0d}.guidance-block.is-guidance-dragging{opacity:.4}.guidance-drag-ghost{overflow:hidden;box-shadow:0 12px 28px #2b1d1824;opacity:.92}
.guidance-blocks>.guidance-block.is-guidance-drop-target{transition:background-color .12s ease}.guidance-blocks>.guidance-block.is-guidance-dragging{cursor:grabbing}.guidance-block .drag-handle{cursor:grab;touch-action:none}.guidance-block .drag-handle:active{cursor:grabbing}
.guidance-image-edit{margin-left:0}.guidance-block-delete{margin-left:auto;display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--muted);padding:5px;cursor:pointer}.guidance-block-delete:hover{background:var(--lesson-next-bg);color:var(--coral-ink)}.guidance-block-delete .gnb-svg{width:18px;height:18px}.guidance-block.is-guidance-dragging{opacity:.24}.guidance-drag-ghost{position:fixed;left:0;top:0;z-index:10000;pointer-events:none;opacity:.96;box-shadow:0 18px 36px #2e211d30;cursor:grabbing!important;transform-origin:top left;will-change:transform}
.lesson-agent-view .page-heading{margin-bottom:24px}.agent-ready,.agent-recording,.agent-processing,.agent-error,.agent-journal{max-width:900px;margin:0 auto}.agent-ready{text-align:center;padding:70px 30px}.agent-icon{font-size:56px;color:var(--accent);margin-bottom:18px}.agent-ready h2,.agent-processing h2,.agent-error h2{font-size:var(--title-lg);margin:0 0 12px}.agent-note{font-size:var(--text-md);color:var(--muted);margin:20px 0 0}.agent-recording{text-align:center;padding:74px 30px}.recording-dot{display:inline-block;width:13px;height:13px;border-radius:50%;background:#d84a42;margin-right:8px;box-shadow:0 0 0 6px #d84a4220}.agent-timer{font-variant-numeric:tabular-nums;font-size:64px;font-weight:800;margin:25px 0 10px}.agent-processing{text-align:center;padding:65px 30px}.agent-spinner{font-size:48px;color:var(--accent);animation:agent-spin 1.2s linear infinite}@keyframes agent-spin{to{transform:rotate(360deg)}}.security-status{display:flex;gap:10px;align-items:center;margin:24px 0 0;padding:14px 16px;border:1px solid var(--tone-done-bg);border-radius:var(--radius-button);background:var(--subtle);color:var(--tone-done-ink)}.security-status strong{white-space:nowrap}.security-status span{color:var(--tone-done-ink);font-size:var(--text-md)}.agent-error{padding:44px 30px;text-align:center;border-color:var(--tone-attention-bg)}.agent-journal{padding:30px}.agent-journal .panel-head{align-items:flex-start}.agent-journal h2{font-size:var(--title-xl);margin:0}.comparison{margin:22px 0;padding:18px 20px;border-radius:15px;background:var(--soft-subtle)}.comparison h3,.approved-summary h3{font-size:var(--text-2xl);margin:0 0 8px}.comparison ul,.approved-summary p{margin:0;padding-left:20px}.agent-journal-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:24px}.agent-journal-grid label{display:grid;gap:7px;font-size:var(--text-lg)}.agent-journal-grid textarea{min-height:92px;resize:vertical;border:1px solid var(--border-input);border-radius:var(--radius-md);background:var(--surface-input);color:var(--ink);padding:12px 14px;line-height:1.55}.agent-journal-grid label:first-child,.agent-journal-grid label:nth-child(2){grid-column:1/-1}.approved-summary{padding:20px 0}.approved-summary p{padding-left:0;margin:10px 0}.lesson-agent-view .form-actions{margin-top:24px}
@media(max-width:760px){.agent-journal{padding:20px 16px}.agent-journal-grid{grid-template-columns:1fr}.agent-journal-grid label:first-child,.agent-journal-grid label:nth-child(2){grid-column:auto}.security-status{display:block}.security-status strong{display:block;margin-bottom:5px}.agent-journal h2{font-size:var(--title-md)}.lesson-agent-view .page-heading{display:block}}
@media(max-width:760px){.lesson-record-view .page-heading{align-items:center}}
.agent-ready,.agent-recording,.agent-processing,.agent-error,.agent-journal{max-width:none;width:100%}.agent-ready #agent-start{margin-top:40px}.agent-note{margin:40px 0 0}
.agent-recording-instruction{line-height:3}
.agent-recording-actions{display:flex;justify-content:center;gap:12px;margin-top:48px}.agent-recording-actions .button{min-width:128px}.recording-dot{margin-right:16px;animation:recording-pulse 1.2s ease-out infinite}@keyframes recording-pulse{0%{box-shadow:0 0 0 0 #d84a4266}70%{box-shadow:0 0 0 12px #d84a4200}100%{box-shadow:0 0 0 0 #d84a4200}}.recording-dot.paused{background:#b89344;box-shadow:0 0 0 6px #b8934420;animation:none}
.agent-character{display:block;object-fit:contain}.agent-character-ready{width:150px;height:120px;margin:0 auto 18px}.agent-character-processing{width:150px;height:120px;margin:0 auto 12px}.agent-ready .agent-icon{display:none}
.agent-note-loader{display:flex;justify-content:center;gap:8px;margin:66px auto;color:var(--faint-ink);font-size:var(--title-lg);line-height:1}.agent-note-loader span{animation:agent-note-fill 1.2s ease-in-out infinite}.agent-note-loader span:nth-child(2){animation-delay:.2s}.agent-note-loader span:nth-child(3){animation-delay:.4s}@keyframes agent-note-fill{0%,100%{color:var(--faint-ink);transform:translateY(0)}35%,65%{color:var(--accent);transform:translateY(-3px)}}
.agent-timer{margin:25px 0 30px}.agent-recording-instruction{display:flex;align-items:center;justify-content:center;line-height:1.5;min-height:3em;margin-top:0;margin-bottom:1em}.agent-processing .security-status{display:block;width:auto;padding-inline:12px}.agent-processing .security-status strong{display:flex;align-items:center;gap:8px;margin-bottom:6px}.security-shield{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;flex:0 0 22px}.security-shield .gnb-svg{width:22px;height:22px}
.comparison{border:1px solid var(--tone-attention-bg);background:var(--soft-subtle);color:var(--tone-attention-ink)}.comparison h3{color:var(--brown-ink)}.comparison li::marker{color:var(--danger)}
.comparison{display:flex;gap:10px;align-items:center;margin:24px 0 0;padding:14px 16px;border-radius:var(--radius-button)}.comparison h3{font-size:var(--text-lg);font-weight:700;margin:0;white-space:nowrap}.comparison ul{margin:0;padding-left:20px}.comparison li{font-size:var(--text-md)}.comparison h3,.comparison li{color:var(--brown-ink)}
@media(max-width:760px){.comparison{display:block}.comparison h3{margin-bottom:5px}}
.agent-processing .security-status{text-align:center}.agent-processing .security-status strong{justify-content:center}.agent-processing .security-status span{white-space:nowrap}
@media(max-width:760px){.agent-processing .security-status span{white-space:normal}}
.agent-processing .security-status{width:fit-content;max-width:100%;margin-inline:auto;box-sizing:border-box}
.agent-processing .security-status{padding-inline:20px}
.agent-processing .security-status{margin-top:48px}
.agent-journal-grid{counter-reset:agent-field}.agent-journal-grid label{counter-increment:agent-field}.agent-field-title{display:block}.agent-field-title::before{content:counter(agent-field) ". ";font-weight:700}
.agent-journal-grid{grid-template-columns:1fr}
.agent-journal-grid label:first-child,.agent-journal-grid label:nth-child(2){grid-column:auto}
.comparison{margin-top:12px}
.login-page #app-header{display:none}.login-page .app-shell{max-width:none;padding:0}.login-page .view{min-height:100vh}.login-view{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:48px 20px;background:var(--soft)}.login-card{width:min(100%,430px);display:flex;flex-direction:column;align-items:center;text-align:center;padding:48px 32px 70px;background:var(--panel);border:1px solid var(--line);border-radius:28px;box-shadow:0 18px 40px #5a474214}.login-logo{display:block;width:240px;height:264px;object-fit:contain;margin:0 auto 18px}.login-card h1{font-size:var(--title-lg);line-height:1.2;margin:0 0 8px}.login-card>p{color:var(--muted);font-size:var(--text-lg);margin:0 0 28px}.login-buttons{width:min(100%,300px);display:grid;gap:10px}.login-button{width:100%;min-height:48px;border-radius:var(--radius-md);padding:11px 18px;border:1px solid var(--border-input);display:flex;align-items:center;justify-content:center;gap:9px;cursor:pointer;font:inherit;font-size:var(--text-lg)}.login-button-email{background:var(--ink);border-color:var(--ink);color:var(--paper)}.login-button-kakao{background:var(--brand-kakao-bg);border-color:var(--brand-kakao-bg);color:var(--brand-kakao-ink)}.login-button-google{background:var(--white);border-color:var(--border-input);color:var(--brand-google-ink)}.login-brand-mark{width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;font-family:Arial,sans-serif;font-size:var(--text-xl);font-weight:800}.login-google-mark{color:var(--brand-google-blue)}@media(max-width:760px){.login-view{padding:20px 16px}.login-card{padding:32px 22px 52px}.login-logo{width:210px;height:230px}}
.recording-dot{width:16px;height:16px}.recording-status-live{font-size:var(--text-xl);color:#d84a42}
.email-login-form{display:grid;gap:10px}.email-login-form label{font-weight:700}.email-login-form input{width:100%;border:1px solid var(--border-input);border-radius:var(--radius-md);background:var(--surface-input);color:var(--ink);padding:13px 15px}.email-login-form .muted{font-size:var(--text-md);line-height:1.5}
.login-logo{margin-bottom:36px}
.login-logo{height:340px}
@media(max-width:760px){.login-logo{height:293px}}
.students-view .record-row-copy>strong{color:var(--muted-2)}
.students-view .record-row-copy>strong{color:var(--ink)}
.students-view .record-row-copy>strong .lesson-date{color:var(--muted-2)}
.lesson-record-view .record-row-summary{display:none}
.students-view .record-row-summary{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}



:root{--soft-subtle:#f7eee9;--lesson-planned-pill-bg:#D9D3CF;--lesson-planned-pill-ink:#5A4742;--lesson-imminent-pill-bg:var(--tone-attention-bg);--lesson-imminent-pill-ink:var(--tone-attention-ink);--lesson-imminent-border:#E87961;--lesson-in-progress-pill-bg:var(--tone-progress-bg);--lesson-in-progress-pill-ink:var(--tone-progress-ink);--lesson-completed-pill-bg:var(--tone-done-bg);--lesson-completed-pill-ink:var(--tone-done-ink)}
.lesson-schedule-row{background:var(--soft-subtle)}
.today-view .today-lesson-row,.schedule-panel .lesson-schedule-row{border:1px solid var(--line);border-top:1px solid var(--line);border-radius:var(--radius-md);background:transparent;padding:14px 16px;margin-bottom:10px}
.today-view .panel>.today-lesson-row:first-of-type{border-top:1px solid var(--line)}
.today-view .today-lesson-row.lesson-state--imminent,.schedule-panel .lesson-schedule-row.lesson-state--imminent{border-color:var(--lesson-imminent-border)}
.lesson-status-pill--planned{background:var(--lesson-planned-pill-bg);color:var(--lesson-planned-pill-ink)}
.lesson-status-pill--imminent{background:var(--lesson-imminent-pill-bg);color:var(--lesson-imminent-pill-ink)}
.lesson-status-pill--in-progress{background:var(--lesson-in-progress-pill-bg);color:var(--lesson-in-progress-pill-ink)}
.lesson-status-pill--completed{background:var(--lesson-completed-pill-bg);color:var(--lesson-completed-pill-ink)}
.today-view .today-lesson-row:hover{background:var(--row-tint)}
.schedule-panel .lesson-schedule-row:hover{background:var(--soft)}
.today-view .tablet-content-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:28px}
.today-view .today-lessons-section{min-width:0;margin-top:0;padding:24px;border:1px solid var(--line);border-radius:18px;background:var(--panel);box-shadow:0 10px 24px #2e211d0d}
.today-view .today-lessons-section .panel-head{margin:0 0 12px;padding:0;border-bottom:0}
.today-view .today-lessons-section>.today-lesson-row{width:100%;margin:0;padding:14px 11px;border:0;border-radius:var(--radius-md);background:transparent}
.today-view .today-lessons-section>.today-lesson-row:hover{background:var(--row-tint)}
.today-view .schedule-panel{min-width:0;margin-top:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}
.today-view .schedule-panel .panel-head{margin:0 0 18px;padding:0}
.today-view .schedule-panel .lesson-schedule-row{margin:0 0 8px;padding:14px 12px;border:1px solid var(--line);border-top:1px solid var(--line);border-radius:var(--radius-md);background:var(--panel);box-shadow:none;transition:background-color .16s ease,border-radius .16s ease}
.today-view .schedule-panel .lesson-schedule-row+.lesson-schedule-row{margin-top:0}
.today-view .schedule-panel .lesson-schedule-row.lesson-state--imminent{border-color:var(--lesson-imminent-border);padding-left:12px}
.today-view .schedule-panel .lesson-schedule-row:hover{background:var(--row-tint-soft);border-radius:9px;padding-left:12px;padding-right:12px}
@media(max-width:760px){.today-view .today-lessons-section{padding:18px}.today-view .today-lessons-section .panel-head{margin-bottom:14px}.today-view .today-lessons-section>.today-lesson-row{padding:12px 11px}.today-view .schedule-panel .panel-head{margin-bottom:14px}.today-view .schedule-panel .lesson-schedule-row{padding:12px 10px}.today-view .schedule-panel .lesson-schedule-row.lesson-state--imminent,.today-view .schedule-panel .lesson-schedule-row:hover{padding-left:10px;padding-right:10px}}
@media(min-width:761px) and (max-width:1024px){.today-view .tablet-content-grid{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:24px}}

/* Today redesign: one shared surface, with the next lesson emphasized in place. */
.today-view .tablet-content-grid{display:block;width:100%;}
.today-view .today-schedule-surface{min-width:0;padding:0;border:1px solid var(--line);border-radius:var(--radius-xl);background:var(--panel);box-shadow:0 10px 24px #2e211d0d;overflow:hidden;}
.today-view .today-lessons-section,.today-view .schedule-panel{min-width:0;margin:0;padding:24px;border:0;border-radius:0;background:transparent;box-shadow:none;}
.today-view .today-lessons-heading,.today-view .today-upcoming-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 14px;}
.today-view .today-lessons-heading>div{display:flex;align-items:baseline;gap:10px;min-width:0;}
.today-view .today-lessons-heading h2,.today-view .today-upcoming-heading h2{margin:0;font-size:var(--title-md);}
.today-view .today-section-count{color:var(--muted);font-weight:700;white-space:nowrap;}
.today-view .today-lessons-heading>small{color:var(--muted);white-space:nowrap;}
.today-view .today-date-label{margin-top:0;}
.today-view .today-lesson-row,.today-view .schedule-panel .lesson-schedule-row{display:grid;grid-template-columns:96px minmax(0,1fr) auto;align-items:center;gap:16px;width:100%;min-width:0;margin:0;padding:15px 12px;border:1px solid transparent;border-radius:var(--radius-md);background:transparent;cursor:default;transition:background-color .16s ease,border-color .16s ease;}
.today-view .today-lesson-row.lesson-state--imminent{border:2px solid var(--lesson-imminent-border);border-left-width:2px;background:var(--soft-subtle);padding-left:11px;padding-right:11px;}
.today-view .today-lesson-row+.today-lesson-row{margin-top:4px;}
.today-view .today-lesson-row>time,.today-view .schedule-panel .lesson-schedule-row>time{font-size:var(--text-2xl);font-weight:800;white-space:nowrap;}
.today-view .today-lesson-row>div,.today-view .schedule-panel .lesson-schedule-row>div{min-width:0;overflow:hidden;}
.today-view .today-lesson-row>div>strong,.today-view .schedule-panel .lesson-schedule-row>div>strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.today-view .today-lesson-row>div>p,.today-view .schedule-panel .lesson-schedule-row>div>p{overflow:hidden;margin:4px 0 0;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;}
.today-view .today-lesson-row .lesson-status-pill,.today-view .schedule-panel .lesson-schedule-row .lesson-status-pill{justify-self:end;}
.today-view .today-lesson-row.is-next-lesson{border:2px solid var(--lesson-imminent-border);border-left-width:2px;background:var(--soft-subtle);padding-left:11px;padding-right:11px;}
.today-view .today-lesson-row:hover,.today-view .schedule-panel .lesson-schedule-row:hover{background:var(--row-tint-soft);border-color:var(--line);border-radius:var(--radius-md);}
.today-view .today-lesson-row.is-next-lesson:hover{border-color:var(--lesson-imminent-border);background:var(--lesson-next-bg);}
.today-view .today-lesson-row.lesson-state--imminent:hover{border-color:var(--lesson-imminent-border);background:var(--lesson-next-bg);}
.today-view .today-upcoming-heading{margin-bottom:16px;}
.today-view .today-upcoming-heading .text-button{flex:0 0 auto;}
.today-view .today-week-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;margin:0 0 18px;}
.today-view .today-weekday{display:grid;justify-items:center;gap:6px;padding:12px 4px 12px;border:1px solid var(--border-soft);border-radius:var(--radius-lg);background:var(--surface-input);color:var(--muted);font:inherit;cursor:pointer;transition:background-color .16s ease,border-color .16s ease,border-width .16s ease;box-shadow:none;box-sizing:border-box;}
.today-view .today-weekday:not(:disabled):hover,.today-view .today-weekday:not(:disabled):focus-visible{background:var(--soft-subtle);border-color:var(--border-input);}
.today-view .today-weekday.is-selected{border:2px solid var(--muted-2);padding:11px 3px 11px;background:var(--soft);color:var(--ink);box-shadow:0 2px 8px rgba(90,71,66,.08);}
.today-view .today-weekday:disabled{cursor:not-allowed;background:var(--subtle);border-color:var(--row-tint);box-shadow:none;}
.today-view .today-weekday.is-empty>strong{color:var(--muted);opacity:.55;}
.today-view .today-weekday>span{font-size:var(--text-sm);font-weight:800;color:var(--ink);letter-spacing:-0.01em;}
.today-view .today-weekday:disabled>span{color:var(--muted);font-weight:700;}
.today-view .today-weekday.is-selected>span{color:var(--ink-strong);font-weight:800;}
.today-view .today-weekday>strong{font-size:var(--text-xl);font-weight:800;color:var(--ink);line-height:1.2;background:transparent;border:0;box-shadow:none;border-radius:0;box-sizing:border-box;}
.today-view .today-weekday:not(.is-empty)>strong{color:var(--ink);background:transparent;border:0;}
.today-view .today-weekday.is-selected>strong{background:transparent;color:var(--ink-strong);border:0;box-shadow:none;}
.today-view .today-weekday.is-today{border-color:var(--border-strong);background:var(--soft-subtle);color:var(--ink);}
.today-view .lesson-days{display:grid;gap:10px;}
.today-view .lesson-day{min-width:0;padding:8px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface-input);transition:border-color .18s ease,box-shadow .18s ease,background-color .18s ease;}
.today-view .lesson-day.expanded{border-color:var(--line);box-shadow:0 4px 16px rgba(90,71,66,.04);background:var(--white);}
.today-view .lesson-day-toggle{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:10px 12px;border:0;border-radius:var(--radius-md);background:transparent;color:var(--ink);text-align:left;cursor:pointer;transition:background-color .16s ease;}
.today-view .lesson-day-toggle:focus-visible{background:var(--soft-subtle);}
.today-view .lesson-day-toggle>span:first-child{display:flex;align-items:baseline;gap:8px;min-width:0;}
.today-view .lesson-day-toggle>span:first-child strong{font-size:var(--text-lg);font-weight:800;color:var(--ink);white-space:nowrap;}
.today-view .lesson-day-toggle>span:first-child small{overflow:hidden;color:var(--muted);font-size:var(--text-sm);font-weight:500;text-overflow:ellipsis;white-space:nowrap;}
.today-view .lesson-day-count{display:inline-flex;align-items:center;gap:8px;color:var(--muted-2);font-size:var(--text-sm);font-weight:700;white-space:nowrap;background:var(--soft-subtle);padding:4px 10px;border-radius:var(--radius-pill);}
.today-view .lesson-day-count i{display:inline-block;width:6px;height:6px;border-right:1.8px solid var(--muted-2);border-bottom:1.8px solid var(--muted-2);transform:rotate(45deg);transition:transform .2s ease;margin-left:2px;margin-bottom:2px;}
.today-view .lesson-day.expanded .lesson-day-count i{transform:rotate(-135deg);margin-bottom:-1px;}
.today-view .lesson-day.expanded .lesson-day-count{background:var(--border-soft);color:var(--ink);}
.today-view .lesson-day-body{display:grid;gap:6px;padding:8px 4px 4px;border-top:1px solid var(--row-tint);margin-top:4px;}
.today-view .lesson-day-body[hidden]{display:none;}
.today-view .schedule-panel .lesson-schedule-row{padding:12px 12px;border-color:transparent;background:transparent;border-radius:var(--radius-md);transition:background-color .16s ease,border-color .16s ease;}
.today-view .schedule-panel .lesson-schedule-row>time{font-size:var(--text-xl);font-weight:800;color:var(--ink);}
.today-view .schedule-panel .lesson-schedule-row strong{font-size:var(--text-base);font-weight:700;}
.today-view .schedule-panel .lesson-schedule-row p{font-size:var(--text-sm);color:var(--muted);margin:3px 0 0;}
.today-view .schedule-panel .lesson-schedule-row.lesson-state--imminent{border-color:var(--lesson-imminent-border);background:var(--soft-subtle);}
.today-view .today-empty-state,.today-view .today-upcoming-empty{margin:0;padding:16px 12px;color:var(--muted);font-size:var(--text-md);text-align:center;}
@media(max-width:760px){
  .today-view .today-lessons-section,.today-view .schedule-panel{padding:18px 14px;}
  .today-view .today-lessons-section>.today-lesson-row{padding-right:11px;}
  .today-view .today-schedule-surface{border-radius:18px;}
  .today-view .today-lessons-heading h2,.today-view .today-upcoming-heading h2{font-size:var(--text-2xl);}
  .today-view .today-lesson-row,.today-view .schedule-panel .lesson-schedule-row{grid-template-columns:68px minmax(0,1fr) auto;gap:9px;padding:12px 8px;}
  .today-view .today-lesson-row>time,.today-view .schedule-panel .lesson-schedule-row>time{font-size:var(--text-lg);}
  .today-view .today-section-count,.today-view .today-lessons-heading>small{font-size:var(--text-sm);}
  .today-view .today-week-strip{gap:4px;margin-bottom:14px;}
  .today-view .today-weekday{padding:8px 2px;border-radius:var(--radius-md);gap:4px;}
  .today-view .today-weekday.is-selected{padding:7px 1px;}
  .today-view .today-weekday>span{font-size:var(--text-xs);}
  .today-view .today-weekday>strong{font-size:var(--text-md);line-height:1.2;border:0;background:transparent;}
  .today-view .today-weekday.is-selected>strong{border:0;background:transparent;}
  .today-view .lesson-day{padding:5px;}
  .today-view .lesson-day-toggle{gap:6px;padding:8px 8px;}
  .today-view .lesson-day-count{gap:5px;font-size:var(--text-xs);padding:3px 8px;}
}

/* Checklist: one calm surface, with spacing—not nested cards—separating work. */
.supplies-panel .supply-list,.supplies-panel .completed-supply-group-list{display:grid;gap:0;}
.supplies-panel .supply-row,.supplies-panel .supply-row.done{border:0;border-radius:var(--radius-md);background:transparent;margin:0;padding:12px 10px;transition:background-color .16s ease;}
.supplies-panel .supply-row+.supply-row{margin:0;}
.supplies-panel .supply-row:hover,.supplies-panel .supply-row.done:hover{background:var(--soft-subtle);border-radius:var(--radius-md);}
.supplies-panel .supply-row:focus-within{outline:2px solid var(--rose-ink);outline-offset:2px;}
.supplies-panel .supply-copy strong,.supplies-panel .supply-copy small{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.supplies-panel .supply-toggle{grid-template-columns:22px minmax(0,1fr) auto;}
.supplies-panel .supply-toggle>em{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

/* Keep upcoming-day controls comfortably inset on narrower layouts. */
@media(min-width:761px) and (max-width:1024px){
  .today-view .lesson-day{padding:10px}
  .today-view .lesson-day-toggle{padding:10px 12px}
}
@media(max-width:1024px){
  .today-view .lesson-day-body{padding:6px 8px 4px}
}
@media(max-width:760px){
  .today-view .lesson-day{padding:8px}
  .today-view .lesson-day-toggle{padding:9px 10px}
}

/* Keep today's lessons and upcoming schedule as separate card surfaces. */
.today-view .today-schedule-surface{border:0;border-radius:0;background:transparent;box-shadow:none;overflow:visible;display:grid;gap:24px;}
.today-view .today-lessons-section,.today-view .schedule-panel{border:1px solid var(--line);border-radius:var(--radius-xl);background:var(--panel);box-shadow:0 10px 24px #2e211d0d;}
@media(max-width:760px){
  .today-view .today-schedule-surface{gap:16px;}
}
/* Match lesson-preparation titles to the today-page section hierarchy. */
.supplies-panel .panel-head h2,.completed-supplies-title{font-size:var(--title-md);}
@media(max-width:760px){
  .supplies-panel .panel-head h2,.completed-supplies-title{font-size:var(--text-2xl);}
  .checklist-modal h2{font-size:var(--text-2xl);}
}

/* Keep validation inside the service instead of exposing browser-native popups. */
.form-field-error{margin:0;color:var(--danger);font-size:var(--text-md);line-height:1.45;}
.supply-form.has-errors #supply-title,.email-login-form input[aria-invalid="true"]{border-color:var(--danger);box-shadow:0 0 0 2px #b9574c1f;}
.profile-form.has-errors input[aria-invalid="true"]{border-color:var(--danger);box-shadow:0 0 0 2px #b9574c1f;}
.status-message:empty{display:none;}
.status-message{margin:10px 0 0;color:var(--danger);font-size:var(--text-md);line-height:1.45;}
.supply-form [aria-invalid="true"],.email-login-form [aria-invalid="true"]{outline:0;}
/* Keep checklist header actions compact beside the section title. */
.supplies-panel .supply-filter-select .select-trigger{min-height:38px;padding:8px 30px 8px 10px;font-size:var(--text-sm);}
.checklist-add-button{min-width:0!important;min-height:38px;padding:9px 12px!important;font-size:var(--text-md);}
@media(max-width:760px){
  .supplies-panel .supply-filter-select .select-trigger{min-height:var(--control-sm);padding:8px 26px 8px 9px;font-size:var(--text-xs);}
  .checklist-add-button{min-height:var(--control-sm);padding:8px 10px!important;font-size:var(--text-sm);}
}
/* Align the filter chevron and add icon with the compact action scale. */
.supplies-panel .supply-filter-select .select-chevron{width:7px;height:7px;border-right:1.5px solid var(--ink);border-bottom:1.5px solid var(--ink);right:12px;}
.supplies-panel .supply-filter-select{width:max-content;}
.supplies-panel .supply-filter-select .select-trigger{width:max-content;min-width:74px;padding-right:20px;}
.checklist-add-button{display:inline-flex;gap:4px;}
.checklist-add-icon{display:inline-flex;align-items:center;justify-content:center;line-height:1;font-size:var(--text-base);}
.checklist-add-button--inline{width:100%;justify-content:center;margin-top:8px;border-style:dashed!important;border-color:var(--border-strong)!important;background:transparent!important;color:var(--muted)!important;}
.lesson-log-summary-card{padding:14px 18px;border-left:3px solid var(--accent);border-radius:var(--radius-lg);background:var(--soft-subtle);}
@media(max-width:760px){
  .lesson-log-summary-card{padding:12px 14px;}
}

/* The lesson-log summary uses a full, slightly stronger outline instead of a side accent. */
.lesson-log-summary-card{border:2px solid var(--tone-attention-bg);border-left-width:2px;}
.lesson-log-summary-card{border-color:var(--lesson-imminent-border);}
@media(max-width:760px){
  .supplies-panel .supply-filter-select .select-trigger{min-width:72px;padding-right:18px;}
  .checklist-add-icon{font-size:var(--text-md);}
}
.supplies-panel .completed-supplies{display:block;margin:0;padding:0;border:0;border-radius:0;background:transparent;overflow:visible;}
.supplies-panel .supply-sections-divider{margin:20px 0 0;border-top:1px solid var(--line);}
.supplies-panel .completed-supplies-toggle{padding:20px 0 12px;}
.supplies-panel .completed-supplies-content{padding:0;}
.supplies-panel .completed-supply-groups{display:grid;gap:14px;}
.supplies-panel .completed-supply-group{margin:0;padding:0;border:0;background:transparent;}
.supplies-panel .completed-supply-group-toggle{padding:8px 0;background:transparent;border:0;border-radius:0;}
.supplies-panel .completed-supply-group-list{display:grid;gap:0;padding:0;background:transparent;border:0;border-radius:0;}
.supplies-panel .completed-supply-group-list[hidden],.supplies-panel .completed-supplies-content[hidden]{display:none;}

/* Lesson status badges use status-badge--m geometry; variants only provide their palette. */

/* Today header: balance the date and lesson count without crowding the edge. */
.today-view .today-lessons-heading .today-lessons-date{display:flex;align-items:baseline;gap:9px;min-width:0;font-weight:600;}
.today-view .today-lessons-heading .today-lessons-date time{color:var(--muted);font-size:var(--text-lg);font-weight:400;white-space:nowrap;}
.today-view .today-lessons-heading .today-section-count{font-size:var(--text-lg);font-weight:600;margin-right:8px;}
@media(max-width:760px){.today-view .today-lessons-heading .today-lessons-date{gap:7px}.today-view .today-lessons-heading .today-lessons-date time{font-size:var(--text-md)}.today-view .today-lessons-heading .today-section-count{font-size:var(--text-md);margin-right:5px}}

/* Match the upcoming rows' subtle inward hover without shifting the card. */
.today-view .today-lessons-section>.today-lesson-row{transition:background-color .16s ease,border-color .16s ease,padding .16s ease;}
.today-view .today-lessons-section>.today-lesson-row:hover{padding-left:12px;padding-right:12px;}
.today-view .today-lessons-section>.today-lesson-row.lesson-state--imminent:hover,.today-view .today-lessons-section>.today-lesson-row.is-next-lesson:hover{padding-left:11px;padding-right:11px;}
@media(max-width:760px){
  .today-view .today-lessons-section>.today-lesson-row:hover{padding-left:12px;padding-right:12px;}
  .today-view .today-lessons-section>.today-lesson-row.lesson-state--imminent:hover,.today-view .today-lessons-section>.today-lesson-row.is-next-lesson:hover{padding-left:11px;padding-right:11px;}
}

/* Student list: open rows, one status/progress line, and always-horizontal actions. Info and actions stay on one line; info shrinks and ellipsizes. */
.students-view .student-panel .student-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:nowrap;gap:12px 18px;position:relative;width:calc(100% + 24px);margin:0 -12px;padding:18px 12px;border:0;border-radius:0;background:transparent;transition:background-color .16s ease,border-radius .16s ease}
.students-view .student-panel .student-row:not(:last-child)::after{content:"";position:absolute;left:12px;right:12px;bottom:0;height:1px;background:var(--line);pointer-events:none}
.students-view .student-panel .student-info{display:grid;flex:1 1 0;gap:7px;min-width:0}
.students-view .student-panel .student-name{min-width:0;overflow:hidden;color:var(--ink);font-size:var(--title-md);line-height:1.25;text-overflow:ellipsis;white-space:nowrap}
.students-view .student-progress-line{display:flex;align-items:center;gap:8px;min-width:0;white-space:nowrap}
.students-view .student-status-text{flex:0 0 auto;color:var(--ink);font-size:var(--text-lg);font-weight:700}
.students-view .student-progress-separator{flex:0 0 auto;color:var(--muted);font-size:var(--text-base)}
.students-view .student-progress{min-width:0;overflow:hidden;color:var(--ink);font-size:var(--text-lg);font-weight:700;text-overflow:ellipsis;white-space:nowrap}
.students-view .student-management-actions{display:flex;flex:0 0 auto;flex-flow:row nowrap;gap:8px;margin-left:auto}
.students-view .student-management-actions .button{min-width:0;padding:10px 13px;font-size:var(--text-base)}
.students-view .student-panel .student-row:hover{background:var(--row-tint-soft);border-radius:var(--radius-md)}
.students-view .student-panel .student-row:hover::after{opacity:0}
@media(max-width:760px){
  .students-view .student-panel{padding:20px}
  .students-view .student-panel .student-row{gap:11px 12px;width:calc(100% + 20px);margin:0 -10px;padding:16px 10px}
  .students-view .student-panel .student-row:not(:last-child)::after{left:10px;right:10px}
  .students-view .student-panel .student-name{font-size:var(--text-2xl)}
  .students-view .student-progress-line{gap:6px}
  .students-view .student-status-text{font-size:var(--text-md)}
  .students-view .student-progress{font-size:var(--text-md)}
  .students-view .student-management-actions{gap:7px}
  .students-view .student-management-actions .button{padding:9px 11px;font-size:var(--text-sm)}
}
@media(max-width:360px){
  .students-view .student-panel{padding:16px}
  .students-view .student-progress{font-size:var(--text-sm)}
  .students-view .student-management-actions .button{padding:8px 9px;font-size:var(--text-xs)}
}

/* ==============================================================
   수강생 정보 관리 (B-1안) 2열 스플릿 대시보드 및 모바일 반응형 스타일
   ============================================================== */
.student-info-split-layout{display:grid;grid-template-columns:340px minmax(0,1fr);gap:24px;align-items:start;background:transparent;border:0;padding:0;box-shadow:none}
.info-sidebar-panel{background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:26px 22px;display:flex;flex-direction:column;box-shadow:0 4px 14px rgba(90,71,66,.03)}
.sidebar-profile-header{display:flex;flex-direction:column;align-items:center;text-align:center;padding-bottom:20px;border-bottom:1px solid var(--border-tint);margin-bottom:18px}
.sidebar-avatar{width:74px;height:74px;border-radius:24px;background:var(--lesson-next-bg);color:var(--rose-ink);font-size:var(--title-xl);font-weight:800;display:flex;align-items:center;justify-content:center;margin-bottom:14px;box-shadow:inset 0 0 0 1px rgba(168,91,78,.15)}
.sidebar-name-row{display:flex;align-items:center;justify-content:center;gap:10px}
.sidebar-student-name{font-size:var(--title-md);font-weight:800;margin:0;color:var(--ink);line-height:1.2}
.sidebar-status-capsule{background:var(--tone-progress-bg);color:var(--tone-progress-ink);padding:4px 12px;border-radius:var(--radius-pill);font-size:var(--text-sm);font-weight:700;display:inline-flex;align-items:center;gap:6px}
.sidebar-status-capsule::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.sidebar-status-capsule[data-status="레슨 전"]{background:var(--lesson-planned-pill-bg);color:var(--ink)}
.sidebar-status-capsule[data-status="레슨 종료"]{background:var(--tone-done-bg);color:var(--tone-done-ink)}
.info-sidebar-panel .panel-head{display:none}
.info-sidebar-panel .profile-groups{display:grid;gap:18px}
.info-sidebar-panel .profile-group{display:grid;gap:10px;padding-bottom:16px;border-bottom:1px solid var(--border-tint)}
.info-sidebar-panel .profile-group:last-child{border-bottom:0;padding-bottom:0}
.info-sidebar-panel .profile-group h3{display:flex;align-items:center;margin:0;font-size:var(--text-base);font-weight:800;color:var(--brown-ink)}
.info-sidebar-panel .profile-group .profile-grid{display:grid;grid-template-columns:1fr;gap:10px}
.info-sidebar-panel .profile-item{border:0;background:transparent;padding:0;display:flex;align-items:center;justify-content:space-between;border-radius:0}
.info-sidebar-panel .profile-item small{color:var(--muted);font-size:var(--text-md);font-weight:500}
.info-sidebar-panel .profile-item strong{color:var(--ink);font-size:var(--text-md);font-weight:700;text-align:right}
.sidebar-action-buttons{margin-top:22px;display:flex;flex-direction:column;gap:8px}
.sidebar-action-buttons .button{width:100%;min-height:var(--control-lg);font-size:var(--text-base);font-weight:700}
.contract-dash-card{background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:26px 26px;box-shadow:0 4px 14px rgba(90,71,66,.03)}
.contract-card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}
.contract-card-actions{display:flex;align-items:center;flex-shrink:0}
.contract-card-actions .text-button,.contract-scope-btn.text-button{border:0!important;background:transparent!important;padding:4px 6px!important;color:var(--muted);font-size:var(--text-md);font-weight:600;text-decoration:underline;cursor:pointer;white-space:nowrap;transition:color .16s ease;min-height:auto!important;min-width:auto!important;box-shadow:none!important}
.contract-card-actions .text-button:hover,.contract-scope-btn.text-button:hover{color:var(--ink)}
.contract-card-titles h3,.contract-section-heading{display:flex;align-items:center;margin:0;font-size:var(--text-2xl);font-weight:800;color:var(--ink)}
.section-title-icon{display:inline-flex;align-items:center;justify-content:center;margin-right:8px;vertical-align:middle;color:var(--ink)}
.section-title-icon .gnb-svg{width:20px;height:20px;stroke-width:5}
.contract-section-heading .section-title-icon{color:var(--ink)}
.contract-grid-2col{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.contract-stat-box{background:var(--paper);border:1px solid var(--border-soft);border-radius:var(--radius-lg);padding:16px 18px;display:flex;flex-direction:column;gap:6px}
.contract-stat-box small{font-size:var(--text-sm);color:var(--muted);font-weight:500}
.contract-stat-box strong{font-size:var(--text-xl);font-weight:800;color:var(--ink)}
.contract-stat-val-row{display:flex;align-items:center;min-height:28px}
.contract-stat-val-text{font-size:var(--text-xl);font-weight:800;color:var(--ink);line-height:1}
.contract-stat-val-row .info-day-chips{margin-top:0}
.info-day-chips{display:flex;gap:4px;margin-top:4px}
.info-day-chip{width:26px;height:26px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;font-size:var(--text-xs);font-weight:700;background:var(--soft);color:var(--ink)}
.info-day-chip.active{background:var(--accent);color:var(--white)}
.contract-progress-card{background:var(--surface-input);border:1px solid var(--border-soft);border-radius:var(--radius-lg);padding:16px 18px;margin-top:14px}
.contract-progress-head{display:flex;justify-content:space-between;align-items:center;font-size:var(--text-md);margin-bottom:10px}
.contract-progress-head span{color:var(--muted);font-weight:600}
.contract-progress-head strong{color:var(--rose-ink);font-size:var(--text-base);font-weight:800}
.contract-gauge-track{height:10px;border-radius:var(--radius-pill);background:var(--soft);overflow:hidden}
.contract-gauge-bar{height:100%;background:var(--accent);border-radius:var(--radius-pill);transition:width .3s ease}

/* 1기 완료 계약 차분한 게이지 바 및 진행 현황 (코랄 대신 은은한 세이지 그린) */
.contract-history-accordion .contract-gauge-track{background:var(--lesson-next-bg)}
.contract-history-accordion .contract-gauge-bar{background:var(--gauge-sage)}
.contract-history-accordion .contract-progress-head strong{color:var(--tone-done-ink)}

.contract-payment-card{margin-top:24px}
.contract-history-accordion{background:var(--surface-warm);border:1px solid var(--border-soft);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:16px;transition:all .2s ease}
.contract-history-accordion.is-expanded{background:var(--white);border-color:var(--border-faint);box-shadow:0 2px 10px rgba(90,71,66,.04)}
.contract-history-toggle{width:100%;border:0;background:transparent;padding:16px 20px;text-align:left;cursor:pointer;font:inherit;display:flex;flex-direction:column;gap:6px}
.contract-history-toggle:hover{background:rgba(235,220,211,.2)}
.contract-history-title-row{display:flex;justify-content:space-between;align-items:center;width:100%}
.contract-history-name{font-size:var(--text-xl);font-weight:800;color:var(--ink)}
.contract-tag-group{display:inline-flex;align-items:center;gap:6px}


/* 아코디언 화살표 */
.contract-accordion-chevron{display:inline-block;width:8px;height:8px;margin-left:4px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg);transition:transform .2s ease}
.contract-history-accordion.is-expanded .contract-accordion-chevron{transform:rotate(225deg);margin-top:4px}

/* 메타 텍스트 폰트 일관성 */
.contract-history-meta-block{display:flex;flex-direction:column;gap:3px;margin-top:2px}
.contract-history-meta{font-size:var(--text-sm);line-height:1.4;color:var(--muted);font-weight:500;font-family:inherit}

/* 아코디언 펼침 본문 (2기 재계약 12px 간격 기준과 완벽 통일) */
.contract-accordion-body{padding:0 20px 20px 20px;border-top:1px solid var(--border-tint);display:flex;flex-direction:column;gap:12px;padding-top:16px}
.contract-accordion-body[hidden]{display:none}
.contract-accordion-body .contract-active-progress{margin-top:0;margin-bottom:0}
.contract-accordion-body .contract-stat-summary-grid{margin-bottom:0}

.contract-active-card{background:var(--white);border:1px solid var(--border-faint);border-radius:var(--radius-lg);padding:20px;box-shadow:0 2px 10px rgba(90,71,66,.04);margin-bottom:16px}
.contract-payment-card > .contract-active-card:last-child,
.contract-payment-card > .contract-history-accordion:last-child{margin-bottom:0}
.contract-active-head{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}
.contract-active-title-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:0}
.contract-active-name{font-size:var(--text-xl);font-weight:800;color:var(--ink)}
.contract-active-meta{font-size:var(--text-sm);line-height:1.4;color:var(--muted);margin:0;font-weight:500}
.contract-active-progress{margin-top:12px;margin-bottom:12px;background:var(--surface-warm)}
.contract-stat-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;background:var(--surface-warm);border-radius:var(--radius-md);padding:14px 16px;border:1px solid var(--border-soft);margin-bottom:14px}
.contract-stat-summary-item{display:flex;flex-direction:column;gap:3px}
.contract-stat-summary-item small{font-size:var(--text-xs);color:var(--muted);font-weight:500}
.contract-stat-summary-item strong{font-size:var(--text-md);color:var(--ink);font-weight:700}
.contract-payment-banner{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-radius:var(--radius-lg);margin-bottom:0;transition:all .2s ease}
.contract-payment-banner.unpaid{background:var(--paper);border:1px solid var(--tone-attention-bg)}
.contract-payment-banner.paid{background:var(--subtle);border:1px solid var(--success-bg)}
.contract-payment-banner.settled{background:var(--subtle);border:1px solid var(--success-bg)}
.contract-payment-info{display:flex;flex-direction:column;gap:3px}
.contract-payment-status-label{font-size:var(--text-sm);font-weight:700}
.contract-payment-banner.unpaid .contract-payment-status-label{color:var(--coral-ink)}
.contract-payment-banner.paid .contract-payment-status-label{color:var(--success-ink)}
.contract-payment-banner.settled .contract-payment-status-label{color:var(--success-ink)}
.contract-payment-amount{font-size:var(--title-md);font-weight:800;color:var(--ink)}
.contract-payment-date{font-size:var(--text-xs);color:var(--muted)}
.contract-payment-actions{display:inline-flex;align-items:center;gap:8px}
.contract-payment-btn,
.contract-payment-manage-btn{padding:6px 14px!important;font-size:var(--text-sm)!important;min-height:var(--control-sm)!important;height:36px!important;line-height:1.2!important;font-weight:700!important;border-radius:var(--radius-sm)!important;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;white-space:nowrap}
.contract-payment-btn.outline,
.contract-payment-manage-btn.outline{background:var(--white)!important;color:var(--ink)!important;border:1px solid var(--border-input)!important}
.contract-payment-btn.outline:hover,
.contract-payment-manage-btn.outline:hover{background:var(--subtle)!important;border-color:var(--border-strong)!important}

/* 수납/정산 상태 수동 변경 모달 */
.payment-status-modal{max-width:480px;padding:26px}
.payment-status-options{display:flex;flex-direction:column;gap:10px;margin:18px 0}
.payment-status-option{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;background:var(--surface-input);border:1.5px solid var(--border-faint);border-radius:var(--radius-md);cursor:pointer;text-align:left;transition:all .16s ease;font:inherit}
.payment-status-option:hover{border-color:var(--ink);background:var(--soft)}
.payment-status-option.is-selected{border-color:var(--primary);background:var(--surface-warm)}
.payment-status-option-info strong{display:block;font-size:var(--text-base);font-weight:800;color:var(--ink);margin-bottom:2px}
.payment-status-option-info small{font-size:var(--text-xs);color:var(--muted)}
.past-payment-confirm-modal{max-width:480px;padding:26px}
.past-payment-warning-box{background:var(--row-tint-soft);border:1px solid var(--danger-wash);border-radius:var(--radius-md);padding:12px 14px;color:var(--danger-strong);font-size:var(--text-sm);line-height:1.4;margin:16px 0;display:flex;gap:10px}
.button.danger{background:var(--danger-strong)!important;color:var(--white)!important;border:1px solid var(--danger-strong)!important}
.button.danger:hover{background:var(--danger-strong)!important}

@media(max-width:760px){
  .student-info-split-layout{grid-template-columns:1fr;gap:16px}
  .info-sidebar-panel{padding:20px 18px}
  .sidebar-avatar{width:60px;height:60px;font-size:var(--title-md);border-radius:18px;margin-bottom:10px}
  .sidebar-student-name{font-size:var(--title-md)}
  .sidebar-action-buttons .button{min-height:46px}
  .contract-dash-card{padding:20px 18px}
  .contract-card-head{align-items:center;gap:10px;margin-bottom:16px}
  .contract-card-head .contract-section-heading{font-size:var(--text-xl)}
  .contract-card-actions .text-button,.contract-scope-btn.text-button{font-size:var(--text-sm);padding:4px 2px!important}
  .contract-payment-banner{flex-direction:column;align-items:flex-start;gap:12px}
  .contract-payment-actions{width:100%}
  .contract-payment-btn,.contract-payment-manage-btn{width:100%}
  .contract-detail-grid{grid-template-columns:1fr}
}
@media(max-width:520px){
  .contract-grid-2col{grid-template-columns:1fr}
}

/* 좌측 수강생 프로필 사이드바 컬럼 (수강생 삭제 버튼을 박스 바깥 아래에 배치) */
.info-sidebar-column{display:flex;flex-direction:column;gap:12px}
.info-sidebar-column .student-danger-zone{margin-top:4px;margin-left:16px;text-align:left}

/* 계약 조건 수정 범위 선택 모달 */
.contract-scope-modal{max-width:520px;padding:28px}
.contract-scope-choices{display:flex;flex-direction:column;gap:12px;margin:20px 0}
.contract-scope-card{display:flex;flex-direction:column;align-items:flex-start;text-align:left;padding:18px 20px;background:var(--surface-input);border:1.5px solid var(--border-faint);border-radius:var(--radius-lg);cursor:pointer;transition:all .16s ease}
.contract-scope-card:hover{border-color:var(--ink);background:var(--soft);transform:translateY(-1px);box-shadow:0 4px 12px rgba(46,33,29,.08)}
.scope-card-badge{font-size:var(--text-xs);font-weight:700;padding:3px 8px;border-radius:6px;margin-bottom:8px}
.scope-card-badge.current{background:var(--subtle);color:var(--success-ink)}
.scope-card-badge.next{background:var(--pay-settled-bg);color:var(--pay-paid-ink)}
.scope-card-title{font-size:var(--text-lg);font-weight:800;color:var(--ink);margin-bottom:4px}
.scope-card-desc{font-size:var(--text-sm);color:var(--muted);line-height:1.4;margin:0}
.contract-modal-notice{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;background:var(--paper);border:1px solid var(--border-soft);border-radius:var(--radius-md);font-size:var(--text-sm);line-height:1.4;color:var(--ink);margin:16px 0}
.contract-modal-notice.success{background:var(--subtle);border-color:var(--success-bg);color:var(--tone-done-ink)}
.contract-modal-notice .notice-icon{font-size:var(--text-lg);line-height:1}

/* 차기 3기 재계약 예약 카드 */
.contract-future-card{margin-top:0;margin-bottom:16px;background:var(--white);border:1.5px dashed var(--pay-settled-line);border-radius:var(--radius-lg);padding:18px 20px}
.contract-future-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.contract-future-title-row{display:flex;align-items:center;gap:8px}
.contract-future-name{font-size:var(--text-lg);font-weight:800;color:var(--ink)}
.contract-future-desc{font-size:var(--text-sm);color:var(--muted);margin:0 0 12px 0;line-height:1.4}
.contract-future-actions{display:inline-flex;align-items:center;gap:6px}
.contract-future-actions .text-button{border:0!important;background:transparent!important;padding:4px 6px!important;color:var(--muted);font-size:var(--text-sm);font-weight:600;text-decoration:underline;cursor:pointer;transition:color .16s ease}
.contract-future-actions .text-button:hover{color:var(--ink)}
.future-contract-delete-btn{display:inline-flex;align-items:center;justify-content:center;height:36px;padding:0 12px;background:transparent;border:1px solid var(--coral-line);border-radius:var(--radius-sm);color:var(--danger-strong);font-size:var(--text-sm);font-weight:600;cursor:pointer;transition:all .16s ease}
.future-contract-delete-btn:hover{background:var(--danger-wash);color:var(--danger-strong);border-color:var(--danger-line)}
.future-contract-delete-btn .gnb-svg{width:18px;height:18px;stroke-width:4}
.future-delete-confirm-modal{max-width:440px}
.contract-load-more-wrap{margin-top:0;text-align:center}
.contract-load-more-btn{width:100%!important;border:1px dashed var(--pay-settled-line)!important;background:var(--white)!important;color:var(--muted)!important;font-size:var(--text-sm)!important;font-weight:600!important;padding:12px 16px!important;border-radius:var(--radius-md)!important;transition:all .16s ease!important;cursor:pointer}
.contract-load-more-btn:hover{border-color:var(--ink)!important;color:var(--ink)!important;background:var(--white)!important}
.contract-future-note-box{display:flex;flex-direction:column;gap:4px;background:var(--white);border:1px solid var(--tone-neutral-bg);border-radius:var(--radius-md);padding:12px 14px;margin-top:12px}
.future-note-tag{font-size:var(--text-xs);font-weight:700;color:var(--muted)}
.future-note-text{font-size:var(--text-sm);color:var(--pay-settled-ink);margin:0;line-height:1.45;word-break:break-all}
/* 수강생 레슨 관리 2컬럼 하이브리드 대시보드 */

.lesson-dashboard-grid{display:grid;grid-template-columns:420px minmax(0,1fr);gap:20px;align-items:start}
.lesson-dashboard-grid .scheduled-lessons-panel{margin-top:0 !important;}
@media(max-width:960px){
  .lesson-dashboard-grid{grid-template-columns:1fr}
}

.compact-action-button{padding:6px 12px !important;font-size:var(--text-sm) !important;min-height:34px !important;height:34px !important;line-height:1.2 !important;font-weight:700 !important;border-radius:var(--radius-sm) !important;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;white-space:nowrap}

/* 월간 미니 캘린더 (박스 없이 자연스럽게 배치) */
.calendar-container{background:transparent;border:none;border-radius:0;padding:0;margin-bottom:16px}
.calendar-nav{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;padding:0 2px}
.calendar-month-label{font-size:var(--text-md);font-weight:800;color:var(--ink)}
.cal-nav-btn{background:var(--white);border:1px solid var(--line);border-radius:6px;width:26px;height:26px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:var(--text-xs);color:var(--ink);transition:all .16s ease}
.cal-nav-btn:hover:not(:disabled){background:var(--soft-subtle);border-color:var(--border-input)}
.cal-nav-btn:disabled,.cal-nav-btn.disabled{opacity:0.3;cursor:not-allowed;background:var(--subtle);border-color:var(--row-tint)}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;text-align:center}
.cal-day-head{font-size:var(--text-xs);font-weight:700;color:var(--muted);padding:4px 0}
.cal-cell{height:38px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:var(--text-xs);border-radius:6px;position:relative;background:var(--subtle);border:1px solid var(--row-tint);color:var(--ink)}
.cal-cell.other-month{opacity:0.25;background:transparent;border-color:transparent;color:var(--muted)}
.cal-cell.is-today{font-weight:800;border:1.5px solid var(--coral-ink);background:var(--surface-warm)}

/* 상태별 캘린더 색상 정책: 완료(초록) / 임박(코랄) / 예정(브라운베이지) */
.cal-cell.is-completed{background:var(--tone-done-bg);border:1.5px solid var(--success-bg);color:var(--success-ink);font-weight:800}
.cal-cell.is-imminent{background:var(--row-tint-soft);border:1.5px solid var(--accent);color:var(--coral-ink);font-weight:800}
.cal-cell.is-planned{background:var(--soft-subtle);border:1.5px solid var(--border-input);color:var(--ink);font-weight:800}

.cal-cell-dot{width:5px;height:5px;border-radius:50%;margin-top:3px;display:inline-block;flex-shrink:0}
.cal-cell.is-completed .cal-cell-dot{background:var(--success-ink)}
.cal-cell.is-imminent .cal-cell-dot{background:var(--coral-ink)}
.cal-cell.is-planned .cal-cell-dot{background:var(--muted-2)}

.panel-head h2 .section-title-icon,.panel-head .panel-title .section-title-icon{margin-right:8px;vertical-align:-3px}
.lesson-records-panel .panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.lesson-records-counter{font-size:var(--text-sm);color:var(--muted);font-weight:600;white-space:nowrap}

/* 상담 기록 */
.consult-panel{margin-top:20px}
.consult-list{display:flex;flex-direction:column;gap:10px}
.consult-card{background:var(--subtle);border:1px solid var(--line);border-radius:var(--radius-md);padding:14px 16px;display:flex;flex-direction:column;gap:6px}
.consult-card-clickable{cursor:pointer;transition:all .16s ease}
.consult-card-clickable:hover{background:var(--white);border-color:var(--border-input);transform:translateY(-1px);box-shadow:0 4px 12px rgba(46,33,29,.06)}
.consult-card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.consult-tag-group{display:flex;align-items:center;gap:6px}
.consult-date{font-size:var(--text-xs);color:var(--muted)}
.consult-body{font-size:var(--text-sm);color:var(--ink);line-height:1.5;margin:0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;text-overflow:ellipsis;word-break:break-all}
.consult-action-plan{margin-top:6px;padding:6px 10px;border-radius:6px;background:var(--row-tint-soft);border:1px solid var(--coral-line);font-size:var(--text-xs);color:var(--coral-ink);font-weight:700;display:flex;align-items:center;gap:6px}
.consult-action-bullet{color:var(--coral-ink);font-weight:800}

/* 상담 상세 모달 */
.consult-detail-modal{max-width:520px;width:100%}
.consult-detail-content{margin-top:16px}
.consult-detail-section{margin-bottom:14px}
.consult-detail-label{font-size:var(--text-xs);font-weight:700;color:var(--muted);margin-bottom:6px;display:block}
.consult-detail-text{background:var(--subtle);border:1px solid var(--line);border-radius:var(--radius-md);padding:14px;font-size:var(--text-md);line-height:1.6;color:var(--ink);white-space:pre-wrap;word-break:break-word}
.button.danger-outline{background:var(--white);border:1px solid var(--danger-line);color:var(--danger-strong);cursor:pointer;font-weight:600;padding:6px 14px;border-radius:var(--radius-sm);transition:all .16s ease}
.button.danger-outline:hover{background:var(--danger-wash);border-color:var(--danger-strong)}
.guidance-create-modal .modal{width:min(480px,calc(100vw - 32px))}.guidance-pick-list{display:grid;gap:8px;margin:18px 0 4px}.guidance-pick-item{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--line,var(--line));border-radius:var(--radius-md);background:var(--white);cursor:pointer;transition:border-color .12s ease,background-color .12s ease}.guidance-pick-item:has(input:checked){border-color:var(--primary);background:var(--soft-subtle)}.guidance-pick-item input{width:18px;height:18px;margin:0;accent-color:var(--primary);flex-shrink:0}.guidance-pick-number{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:var(--radius-pill);background:var(--tone-neutral-bg);color:var(--ink);font-size:var(--text-sm);font-weight:700;flex-shrink:0}.guidance-pick-label{flex:1;font-weight:600;color:var(--ink)}.guidance-pick-item small{color:var(--muted);font-size:var(--text-xs)}.guidance-pick-item.is-unwritten{cursor:not-allowed;opacity:.55;background:var(--subtle)}
.guidance-image-placeholder{position:relative;width:100%;padding:0;overflow:hidden;font:inherit;cursor:pointer;transition:border-color .12s ease,background-color .12s ease}.guidance-image-placeholder:hover{border-color:var(--primary);background:var(--soft-subtle)}.guidance-image-placeholder:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.guidance-image-placeholder:has(img):hover::after{content:'이미지 변경';position:absolute;inset:0;display:flex;align-items:center;justify-content:center;border-radius:9px;background:#2b1d1859;color:var(--white);font-size:var(--text-md);font-weight:700}
/* Student lesson dashboard heading: on mobile the title takes the full width and the three actions wrap below it. */
@media(max-width:760px){.students-view.lesson-dashboard-view>.page-heading{grid-template-columns:minmax(0,1fr)}.students-view.lesson-dashboard-view>.page-heading>.button-row{flex-wrap:wrap;gap:8px;margin-top:4px}}
/* Planned lessons under the calendar: compact session/date rows; clicking opens the schedule change modal for that session. */
.scheduled-lessons-list{display:grid;margin-top:16px}.scheduled-lesson-item{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;width:100%;min-height:48px;padding:10px 12px;border:0;border-radius:var(--radius-md);background:transparent;color:var(--ink);font:inherit;text-align:left;cursor:pointer;transition:background-color .12s ease}.scheduled-lesson-item:not(:last-child)::after{content:"";position:absolute;left:12px;right:12px;bottom:0;height:1px;background:var(--line);pointer-events:none}.scheduled-lesson-item:hover{background:var(--soft-subtle)}.scheduled-lesson-item:hover::after{opacity:0}.scheduled-lesson-item:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}.scheduled-lesson-session{min-width:40px;color:var(--primary);font-size:var(--text-sm);font-weight:700;font-variant-numeric:tabular-nums}.scheduled-lesson-date{min-width:0;overflow:hidden;color:var(--ink);font-size:var(--text-base);font-weight:600;text-overflow:ellipsis;white-space:nowrap}.scheduled-lesson-chevron{color:var(--faint-ink);font-size:var(--text-xl);line-height:1}
/* Today lesson rows open their session record; a session without a record shows an empty record page with the lesson AI action. */
.today-view .today-lesson-row[data-today-record-link]{cursor:pointer}.today-view .today-lesson-row[data-today-record-link]:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.lesson-record-empty{padding:36px 28px;text-align:center}.lesson-record-empty h2{margin:0 0 8px;font-size:var(--text-2xl)}.lesson-record-empty-pill{background:var(--tone-neutral-bg);color:var(--ink)}
/* Student lesson summary: same panel surface as the dashboard cards, muted labels over bold values, and a slim progress bar. */
.student-summary-strip{margin:0 0 20px;padding:20px 24px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-xl)}.summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px 24px;margin:0}.summary-item{display:grid;align-content:start;gap:6px;min-width:0;margin:0}.summary-item dt{color:var(--muted);font-size:var(--text-sm);font-weight:600}.summary-item dd{margin:0;color:var(--ink);font-size:var(--text-lg);font-weight:700;overflow-wrap:anywhere}.summary-progress dd{display:flex;align-items:center;gap:10px;white-space:nowrap}.summary-progress-track{display:block;flex:0 1 64px;min-width:32px;height:6px;border-radius:var(--radius-pill);background:var(--soft);overflow:hidden}.summary-progress-bar{display:block;height:100%;border-radius:inherit;background:var(--accent)}
@media(max-width:760px){.student-summary-strip{padding:18px;border-radius:18px}.summary-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.summary-item dd{font-size:var(--text-base)}}
/* Lesson records and consultations: flat divided rows matching the planned lesson list (no nested boxes). */
.lesson-record-item{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;width:100%;min-height:56px;padding:10px 12px;border:0;border-radius:var(--radius-md);background:transparent;color:var(--ink);font:inherit;text-align:left;cursor:pointer;transition:background-color .12s ease}.lesson-record-item:not(:last-child)::after,.consult-item:not(:last-child)::after{content:"";position:absolute;left:12px;right:12px;bottom:0;height:1px;background:var(--line);pointer-events:none}.lesson-record-item:hover,.consult-item:hover{background:var(--soft-subtle)}.lesson-record-item:hover::after,.consult-item:hover::after{opacity:0}.lesson-record-item:focus-visible,.consult-item:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}.lesson-record-session{min-width:40px;color:var(--primary);font-size:var(--text-sm);font-weight:700;font-variant-numeric:tabular-nums}.lesson-record-copy{display:grid;gap:3px;min-width:0}.lesson-record-date{color:var(--ink);font-size:var(--text-base);font-weight:600}.lesson-record-summary{min-width:0;overflow:hidden;color:var(--muted);font-size:var(--text-sm);white-space:nowrap;text-overflow:ellipsis}.lesson-record-status{padding:4px 8px;border-radius:var(--radius-pill);font-size:var(--text-xs);font-weight:700;white-space:nowrap}.lesson-record-status.is-needed{background:var(--attention-wash);color:var(--brown-ink)}.lesson-record-status.is-complete{background:var(--success-bg);color:var(--success-ink)}
.consult-item{position:relative;display:grid;gap:6px;padding:14px 12px;border-radius:var(--radius-md);cursor:pointer;transition:background-color .12s ease}.consult-item-meta{display:flex;align-items:center;gap:6px;margin:0;color:var(--muted);font-size:var(--text-sm);font-weight:600}.consult-item .consult-body{margin:0;color:var(--ink);font-size:var(--text-md);line-height:1.6}.consult-next-action{display:flex;align-items:baseline;gap:8px;min-width:0;margin:0;font-size:var(--text-sm);color:var(--ink)}.consult-next-action strong{flex:0 0 auto;color:var(--coral-ink);font-weight:700}.consult-next-action span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Tag system: status badges (state, solid, M 14px / S 12px), five tones, category labels (attributes), selected chips (plum), counts as plain text. Payment badges (입금 완료·정산 완료) keep their own styles. See docs/poconote-design-system.md. */
:root{--tone-neutral-bg:#E5E1DF;--tone-neutral-ink:#5A4742;--tone-attention-bg:#F1CBBE;--tone-attention-ink:#754838;--tone-progress-bg:#E3DEE6;--tone-progress-ink:#584D61;--tone-done-bg:#DCE9E0;--tone-done-ink:#42654F;--tone-reserved-bg:#ECEAF8;--tone-reserved-ink:#4F4699}
.status-badge{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;border:0;border-radius:var(--radius-pill);font-weight:700;line-height:1.2;white-space:nowrap}.status-badge--m{min-height:31px;padding:7px 12px;font-size:var(--text-md)}.status-badge--s{min-height:22px;padding:4px 8px;font-size:var(--text-xs)}
.tone-neutral{background:var(--tone-neutral-bg);color:var(--tone-neutral-ink)}.tone-attention{background:var(--tone-attention-bg);color:var(--tone-attention-ink)}.tone-progress{background:var(--tone-progress-bg);color:var(--tone-progress-ink)}.tone-done{background:var(--tone-done-bg);color:var(--tone-done-ink)}.tone-reserved{background:var(--tone-reserved-bg);color:var(--tone-reserved-ink)}
.category-label{display:inline-flex;align-items:center;padding:3px 8px;border:1px solid var(--line);border-radius:var(--radius-pill);background:transparent;color:var(--ink);font-size:var(--text-xs);font-weight:600;line-height:1.3;white-space:nowrap}
.contract-scope-card>.status-badge{align-self:flex-start;margin-bottom:8px}.guidance-section-item .guidance-section-status{margin-left:auto}
.info-day-chip{border:1px solid var(--line);background:var(--white);color:var(--muted)}.info-day-chip.active{background:var(--primary);color:var(--white);border-color:var(--primary)}
.instrument-chip{display:inline-flex;align-items:center;gap:4px;padding:4px 6px 4px 10px;border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--white);color:var(--ink);font-size:var(--text-sm)}
.today-view .lesson-day-count{background:transparent;padding:4px 0}.today-view .lesson-day.expanded .lesson-day-count{background:transparent}
@media(max-width:760px){.status-badge--m{min-height:27px;padding:6px 8px;font-size:var(--text-xs)}}
/* Report builder: every lesson record is listed; only reviewed ones can be checked (custom checkbox, plum when checked). */
.report-record-panel .panel-head{flex-wrap:wrap;gap:6px 12px}.report-selection-count{white-space:nowrap}.report-record-help{margin:0 0 8px;font-size:var(--text-sm)}.report-selection-count strong{color:var(--ink)}.report-record-list{display:grid}.report-record-row{position:relative;display:flex;align-items:center;gap:12px;min-height:56px;padding:8px 12px;border-radius:var(--radius-md);transition:background-color .12s ease}.report-record-row:not(:last-child)::after{content:"";position:absolute;left:12px;right:12px;bottom:0;height:1px;background:var(--line);pointer-events:none}.report-record-row:not(.is-locked):hover{background:var(--soft-subtle)}.report-record-check{position:relative;display:flex;align-items:center;gap:12px;flex:1;min-width:0;cursor:pointer}.report-record-row.is-locked .report-record-check{cursor:not-allowed}.report-record-row.is-locked .report-record-session,.report-record-row.is-locked .report-record-date{color:var(--muted)}
.report-check-input{position:absolute;opacity:0;width:1px;height:1px;margin:0;pointer-events:none}.report-check-box{position:relative;flex:0 0 auto;box-sizing:border-box;width:20px;height:20px;border:1.5px solid var(--border-input);border-radius:6px;background:var(--white);transition:background-color .12s ease,border-color .12s ease}.report-check-input:checked+.report-check-box{background:var(--primary);border-color:var(--primary)}.report-check-input:checked+.report-check-box::after{content:"";position:absolute;left:5px;top:1px;width:5px;height:10px;border:solid var(--white);border-width:0 2px 2px 0;transform:rotate(45deg)}.report-check-input:disabled+.report-check-box{background:var(--row-tint-soft);border-color:var(--tone-neutral-bg)}.report-check-input:focus-visible+.report-check-box{outline:2px solid var(--primary);outline-offset:2px}.report-record-check:hover .report-check-input:not(:disabled):not(:checked)+.report-check-box{border-color:var(--primary)}
.report-record-session{flex:0 0 auto;min-width:40px;color:var(--primary);font-size:var(--text-sm);font-weight:700}.report-record-date{flex:1;min-width:0;overflow:hidden;color:var(--ink);font-size:var(--text-base);font-weight:600;text-overflow:ellipsis;white-space:nowrap}.report-review-link{flex:0 0 auto;font-size:var(--text-sm)}
/* Lesson history by cycle: one 기록 주기 dropdown above the records and consultations (default: current cycle); consultations page by 5. */
.lesson-history-bar{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;margin:0 0 12px}.history-round-select .select-trigger{display:inline-flex;align-items:center;width:auto;min-height:40px;padding:8px 34px 8px 12px;font-size:var(--text-base);font-weight:600;line-height:1.2}.history-round-select .select-chevron{right:13px;width:8px;height:8px}.history-round-select [data-select-label],.history-round-select .select-option{display:inline-flex;align-items:center;gap:8px;white-space:nowrap}.history-round-select .select-options{right:auto;min-width:100%;width:max-content}.history-round-select .select-option{display:flex;font-size:var(--text-base)}.lesson-history-current{font-size:var(--text-sm)}
.history-toggle{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;margin-top:6px;padding:10px 12px;border:0;border-radius:var(--radius-md);background:transparent;color:var(--muted);font:inherit;font-size:var(--text-sm);font-weight:700;cursor:pointer}.history-toggle::after{content:"";width:6px;height:6px;border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;transform:translateY(-2px) rotate(45deg)}.history-toggle[aria-expanded="true"]::after{transform:translateY(1px) rotate(225deg)}.history-toggle:hover{background:var(--row-hover-bg);color:var(--ink)}.history-toggle:focus-visible{outline:2px solid var(--row-focus);outline-offset:-2px}
@page{size:A4;margin:14mm 14mm 16mm}
/* Row hover system: every clickable list row uses one hover color and 12px radius without shifting padding; selected rows are one step deeper; focus is a plum ring. Exceptions: today's next/imminent rows keep their coral border with a deeper hover, and choice cards change border instead of lifting. */
:root{--row-hover-bg:#F7EEE9;--row-selected-bg:#F1E4DC;--row-focus:#756B7A}
.today-view .today-lessons-section>.today-lesson-row:hover,.today-view .schedule-panel .lesson-schedule-row:hover,.schedule-panel .lesson-schedule-row:hover,.lesson-schedule-row:hover,.supplies-panel .supply-row:hover,.supplies-panel .supply-row.done:hover,.supply-row:hover,.students-view .student-panel .student-row:hover,.scheduled-lesson-item:hover,.lesson-record-item:hover,.consult-item:hover,.report-record-row:not(.is-locked):hover,.record-row-link:hover,.contract-history-toggle:hover{background:var(--row-hover-bg);border-radius:var(--radius-md)}
.scheduled-lesson-item,.lesson-record-item,.consult-item,.report-record-row{border-radius:var(--radius-md)}
.today-view .today-lessons-section>.today-lesson-row:hover{padding-left:11px;padding-right:11px;border-color:transparent}.today-view .schedule-panel .lesson-schedule-row:hover{border-color:transparent}
.today-view .today-lessons-section>.today-lesson-row.is-next-lesson:hover,.today-view .today-lessons-section>.today-lesson-row.lesson-state--imminent:hover,.today-view .schedule-panel .lesson-schedule-row.lesson-state--imminent:hover{background:var(--lesson-next-bg);border-color:var(--lesson-imminent-border)}
.guidance-section-item:not(.active):hover,.person-row:not(.selected):hover,.chat-target-row:hover,.chat-picker-option:hover{background:var(--row-hover-bg)}
.guidance-section-item.active{background:var(--row-selected-bg)}.person-row.selected{background:var(--row-selected-bg)}
.record-row-link:focus-visible,.today-view .today-lesson-row[data-today-record-link]:focus-visible,.scheduled-lesson-item:focus-visible,.lesson-record-item:focus-visible,.consult-item:focus-visible,.contract-history-toggle:focus-visible,.guidance-section-item:focus-visible{outline:2px solid var(--row-focus);outline-offset:-2px}
.lesson-day-choice input:focus-visible+span{outline-color:var(--row-focus)}
.contract-scope-card:hover{border-color:var(--primary);background:var(--row-hover-bg);transform:none;box-shadow:none}
.consult-item.consult-card-clickable:hover{transform:none;box-shadow:none}
@media(max-width:760px){.today-view .schedule-panel .lesson-schedule-row:not(.lesson-state--imminent):hover{padding-left:8px;padding-right:8px}}

/* 수납 단계 태그: 상태 배지 S와 같은 크기. 아웃라인은 높이에 더해지지 않게 inset 그림자로 그린다 */
.status-badge.tone-pay-paid{background:var(--white);color:var(--pay-paid-ink);box-shadow:inset 0 0 0 1.5px var(--pay-paid-line)}
.status-badge.tone-pay-settled{background:var(--pay-settled-bg);color:var(--pay-settled-ink);box-shadow:inset 0 0 0 1px var(--pay-settled-line)}

/* 레슨 관리 헤더 버튼 줄: 오늘의 레슨 헤더 버튼(page-action-button)과 같은 규격. 데스크톱·태블릿은 글자 크기에 맞추고, 모바일은 레슨 안내 관리 헤더처럼 줄 폭을 균등하게 나눈다 */
.students-view.lesson-dashboard-view>.page-heading>.button-row>.button{flex:0 0 auto;min-height:var(--control-md);padding:12px 16px;font-size:var(--text-base);font-weight:700}
@media(max-width:760px){.students-view.lesson-dashboard-view>.page-heading>.button-row>.button{flex:1 1 0;min-width:0;padding:10px 8px}}

/* 정의 없이 쓰이던 변수: --subtle은 기존 대체값, --primary는 선택 상태 테두리에 쓰는 뮤트 플럼 */
:root{--subtle:#fcf9f6;--primary:#756B7A}

/* 수강생 정보 사이드바 액션: 모바일에서만 두 버튼을 좌우로 나란히 둔다(태블릿·데스크톱은 세로 스택) */
@media(max-width:760px){.sidebar-action-buttons{flex-direction:row}.sidebar-action-buttons .button{flex:1 1 0;width:auto;min-width:0;padding-left:12px;padding-right:12px}}

/* 레슨 안내 항목 제목은 한 줄로 두어 모든 행의 높이를 같게 맞춘다(길면 말줄임) */
.guidance-section-item>strong{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* 내 안내서: 저장한 안내서 카드와 안내 */
.saved-guide-card{min-height:180px;padding:24px;display:flex;flex-direction:column;justify-content:space-between;gap:20px}
.saved-guide-card h2{margin:4px 0 8px}
.saved-guide-card p{margin:0}
.saved-guide-card .eyebrow{color:var(--muted-2)}
.saved-guide-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.saved-guide-actions .button{flex:1 1 auto;min-width:0}
.saved-guide-delete{margin-left:auto;color:var(--danger)}
.saved-guide-notice{margin:0 0 14px}
@media(max-width:760px){.saved-guide-card{padding:18px;min-height:0}.saved-guide-actions .button{flex:1 1 0}}
/* 신규 수강생 등록: 시작 방식(정규 계약 / 체험 레슨) 선택 카드와 방식별 입력 묶음 */
.register-mode{margin:4px 0 0;padding:0;border:0;min-width:0;display:grid;gap:8px}
.register-mode legend{padding:0;margin-bottom:2px;font-size:var(--text-sm);font-weight:700;color:var(--muted)}
.edit-form label.register-mode-option{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--white);color:var(--ink);cursor:pointer}
.edit-form label.register-mode-option:has(input:checked){border-color:var(--primary);background:var(--soft)}
.register-mode-option input{margin:3px 0 0;flex:0 0 auto;accent-color:var(--primary)}
.register-mode-option span{display:grid;gap:2px;min-width:0}
.register-mode-option strong{font-size:var(--text-base);font-weight:700}
.register-mode-option small{font-size:var(--text-sm);color:var(--muted)}
.register-group{display:grid;gap:11px}
.register-group[hidden]{display:none}
.register-group label small{font-weight:400}
/* 오늘의 레슨·다가오는 일정: 체험 레슨은 이름 옆에 작은 체험 태그를 붙인다 */
.lesson-trial-tag{margin-left:6px;vertical-align:middle}
/* 체험·미등록 수강생의 정보 관리: 체험 카드와 등록/보관 버튼, 목록의 보관 수강생 토글 */
.trial-card-note{margin:14px 0 0}
.trial-card-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}
.archived-students-toggle{margin-left:auto}
.student-panel .panel-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
@media (max-width:760px){.trial-card-actions .button{flex:1 1 0}}
/* 빈 상태 카드: 제목 + 설명 한 줄 + CTA 하나. 내 안내서의 빈 상태와 같은 모양이다. */
.empty-state-card{min-height:260px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;padding:40px 24px}
.empty-state-card h2{margin:0;font-size:var(--text-xl)}
.empty-state-card p{margin:0 0 20px;color:var(--muted);max-width:34ch}
.supply-empty{padding:18px 12px;text-align:center}
.guidance-first-hint{color:var(--muted)}
@media (max-width:760px){.empty-state-card{min-height:220px;padding:32px 18px}}
/* 수납 단계 태그: 입금 지연(주기 시작 7일 후에도 입금 전)은 위험 색으로 구분한다 */
.status-badge.tone-pay-overdue{background:var(--danger-wash);color:var(--danger-strong);box-shadow:inset 0 0 0 1px var(--danger-line)}
/* 주기 종료 후 다음 주기 제안 카드: 계약 카드 위에 두고 14일이 지나면 테두리를 위험 색으로 */
.cycle-proposal-card{margin-bottom:24px}
.cycle-proposal-card.is-overdue{box-shadow:inset 0 0 0 1px var(--danger-line)}
.cycle-proposal-card>.muted{margin:12px 0 16px}
/* 리포트 만들기 주기 선택과 내 리포트 목록 */
.report-round-field{display:inline-flex;align-items:center;gap:8px;font-size:var(--text-sm);color:var(--muted)}
.report-round-select{height:var(--control-sm);padding:0 10px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--white);color:var(--ink);font:inherit;font-size:var(--text-sm)}
.saved-report-list{display:grid}
.saved-report-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-top:1px solid var(--line)}
.saved-report-row:first-child{border-top:0}
.saved-report-copy{display:grid;gap:2px;min-width:0}
.saved-report-copy small{color:var(--muted)}
.saved-report-actions{display:flex;align-items:center;gap:10px;flex:0 0 auto}
/* 헤더 알림 종과 알림 목록 패널 */
.notice-wrap{position:relative;margin-left:auto;display:flex;align-items:center}
.app-header .profile-menu{margin-left:12px}
.notice-bell{position:relative;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border:0;border-radius:50%;background:transparent;color:var(--paper);cursor:pointer}
.notice-bell .gnb-svg{width:24px;height:24px}
.notice-count{position:absolute;top:2px;right:0;min-width:18px;height:18px;padding:0 5px;border-radius:var(--radius-pill);background:var(--accent-text);color:var(--white);font-size:var(--text-xs);font-weight:700;display:inline-flex;align-items:center;justify-content:center}
.notice-panel{position:absolute;top:calc(100% + 8px);right:0;width:min(360px,calc(100vw - 36px));padding:12px;background:var(--white);color:var(--ink);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:0 12px 32px rgba(0,0,0,.18);z-index:20;text-align:left}
.notice-panel[hidden]{display:none}
.notice-head{display:flex;justify-content:space-between;align-items:center;padding:4px 6px 10px}
.notice-list{list-style:none;margin:0;padding:0;display:grid;max-height:60vh;overflow:auto}
.notice-item a{display:grid;gap:3px;padding:10px 8px;border-top:1px solid var(--line);border-radius:var(--radius-sm);color:inherit;text-decoration:none}
.notice-item:first-child a{border-top:0}
.notice-item a:hover{background:var(--soft)}
.notice-item.is-read a{opacity:.6}
.notice-item small{color:var(--muted)}
.notice-empty{padding:16px 8px;text-align:center}
.notice-settings-link{display:block;margin-top:8px;padding:8px;text-align:center;color:var(--muted);text-decoration:none;font-size:var(--text-sm)}
@media (max-width:760px){.notice-panel{position:fixed;top:78px;left:18px;right:18px;width:auto}}
/* 상태 화면(오류·오프라인): 캐릭터 + 제목 + 설명 한 줄 + 버튼. 로딩은 버튼 스피너와 스켈레톤 행. */
.state-page{min-height:60vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:40px 24px;text-align:center}
.state-page img{width:180px;height:auto;margin-bottom:8px}
.state-page h1{margin:0}
.state-page .muted{max-width:34ch;margin:0}
.state-detail{margin:0;color:var(--muted);font-size:var(--text-xs);max-width:60ch;word-break:break-all}
.state-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:14px}
.button.is-loading{position:relative;color:transparent!important;pointer-events:none}
.button.is-loading::after{content:"";position:absolute;inset:0;margin:auto;width:18px;height:18px;border:2px solid var(--paper);border-right-color:transparent;border-radius:50%;animation:button-spin .8s linear infinite}
.button.outline.is-loading::after,.button.secondary.is-loading::after{border-color:var(--ink);border-right-color:transparent}
@keyframes button-spin{to{transform:rotate(360deg)}}
.skeleton-row{height:56px;border-radius:var(--radius-md);background:linear-gradient(90deg,var(--soft) 25%,var(--soft-subtle) 50%,var(--soft) 75%);background-size:200% 100%;animation:skeleton-shimmer 1.2s linear infinite}
.skeleton-row+.skeleton-row{margin-top:10px}
@keyframes skeleton-shimmer{to{background-position:-200% 0}}
@media (prefers-reduced-motion:reduce){.button.is-loading::after,.skeleton-row{animation:none}}
/* 레슨 기록 헤더: 회차 상태는 제목 옆에, AI 진입은 하단 액션 그룹에 둔다. */
.lesson-record-title-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px}.lesson-record-title-row h1{margin:0}
.lesson-record-heading-buttons{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.lesson-record-heading-buttons .lesson-summary-ai-button{margin-left:0}.lesson-record-heading-buttons .button{padding:10px 14px}
@media(max-width:760px){.lesson-record-heading-buttons{width:100%;justify-content:flex-end}.lesson-record-heading-buttons .button{padding:9px 11px;font-size:var(--text-md)}}
