.bottom-tab-bar{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:480px;height:calc(var(--tab-bar-height) + var(--safe-area-bottom));padding-bottom:var(--safe-area-bottom);background:#fff;border-top:1px solid #E5E8EB;display:flex;align-items:stretch;z-index:100}.tab-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:#c2c8d0;transition:color .15s;padding:8px 4px;position:relative;text-decoration:none}.tab-item--active{color:#191f28}.tab-item--active .tab-label{font-weight:700}.tab-item--active .tab-icon{filter:none}.tab-icon-wrap{position:relative;display:inline-flex}.tab-icon{font-size:20px;line-height:1;opacity:1;transition:opacity .15s}.tab-item:not(.tab-item--active) .tab-icon{opacity:.3}.tab-label{font-size:10px;font-weight:500;letter-spacing:-.2px;color:inherit}.tab-dot{width:4px;height:4px;border-radius:50%;background:#191f28;margin-top:1px}.notif-badge{position:absolute;top:-4px;right:-8px;background:#f04452;color:#fff;font-size:9px;font-weight:700;min-width:16px;height:16px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 3px}.global-actions{position:fixed;top:0;right:calc(50% - 240px);height:var(--header-height);display:flex;align-items:center;gap:4px;padding-right:12px;z-index:200;max-width:480px}@media (max-width: 480px){.global-actions{right:0}}.ga-btn{width:34px;height:34px;display:flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid rgba(255,255,255,.25);color:#ffffffd9;background:transparent;transition:background .15s;font-size:16px}.ga-btn-text{width:auto;padding:0 10px;font-size:13px;font-weight:600}.ga-btn:hover{background:#ffffff1f}.ga-icon{display:inline-block;line-height:1}.ga-icon.spinning{animation:ga-spin .4s linear}@keyframes ga-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.login-page{min-height:100%;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 24px;gap:28px}.login-header{text-align:center}.login-logo-img{width:240px;max-width:70vw;border-radius:16px;filter:drop-shadow(0 8px 24px rgba(0,0,0,.3))}.login-slogan{margin-top:14px;font-size:15px;font-weight:500;color:#555;letter-spacing:-.3px}.login-form{width:100%;background:var(--color-surface);border-radius:20px;padding:28px 24px;display:flex;flex-direction:column;gap:16px;box-shadow:0 20px 60px #0000004d}.form-group{display:flex;flex-direction:column;gap:6px}.form-label{font-size:13px;font-weight:600;color:var(--color-text-secondary)}.form-input{height:48px;border:1.5px solid var(--color-border);border-radius:10px;padding:0 14px;font-size:15px;color:var(--color-text);background:var(--color-bg);outline:none;transition:border-color .15s}.form-input:focus{border-color:var(--color-primary);background:#fff}.form-error{font-size:13px;color:var(--color-danger);text-align:center}.login-btn{height:52px;background:#3a3a3a;color:#fff;border-radius:12px;font-size:16px;font-weight:600;margin-top:4px;transition:opacity .15s,transform .1s}.login-btn:active{transform:scale(.98)}.login-btn:disabled{opacity:.6}.login-hints{color:#999;font-size:12px;text-align:center;display:flex;flex-direction:column;gap:3px}.login-hints p{font-weight:600;margin-bottom:4px;color:#666}.login-quick-btn{flex:1;height:40px;border-radius:10px;background:#f5f5f5;color:#333;font-size:13px;font-weight:600;border:1px solid #ddd;cursor:pointer;transition:background .15s}.login-quick-btn:active{background:#e0e0e0}.login-signup-row{display:flex;align-items:center;justify-content:center;gap:8px;padding-top:4px;border-top:1px solid var(--color-border);margin-top:4px}.login-signup-text{font-size:13px;color:var(--color-text-secondary)}.login-signup-link{font-size:13px;font-weight:700;color:var(--color-primary);text-decoration:none}.signup-page{min-height:100%;background:linear-gradient(160deg,var(--color-primary-dark) 0%,var(--color-primary) 50%,var(--color-primary-light) 100%);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 24px;gap:28px}.signup-header{text-align:center;color:#fff;width:100%;position:relative}.signup-back-btn{position:absolute;left:0;top:0;background:none;border:none;color:#fffc;font-size:14px;font-weight:600;padding:4px 0}.signup-logo{font-size:48px;margin-bottom:10px}.signup-title{font-size:24px;font-weight:700;margin-bottom:6px}.signup-subtitle{font-size:13px;color:#ffffffa6}.signup-form{width:100%;background:var(--color-surface);border-radius:20px;padding:24px 20px;display:flex;flex-direction:column;gap:14px;box-shadow:0 20px 60px #0000004d}.signup-form-group{display:flex;flex-direction:column;gap:6px}.signup-form-label{font-size:13px;font-weight:600;color:var(--color-text-secondary)}.signup-role-row{display:flex;gap:8px}.signup-role-btn{flex:1;padding:10px;border:1.5px solid var(--color-border);background:var(--color-surface);border-radius:10px;font-size:14px;font-weight:600;color:var(--color-text-secondary);cursor:pointer}.signup-role-btn.active{border-color:var(--color-primary);background:var(--color-primary);color:#fff}.signup-form-input{height:48px;border:1.5px solid var(--color-border);border-radius:10px;padding:0 14px;font-size:15px;color:var(--color-text);background:var(--color-bg);outline:none;transition:border-color .15s}.signup-form-input:focus{border-color:var(--color-primary);background:#fff}.signup-error{font-size:13px;color:var(--color-danger);text-align:center}.signup-submit-btn{height:52px;background:var(--color-primary);color:#fff;border-radius:12px;font-size:16px;font-weight:700;margin-top:4px;transition:opacity .15s}.signup-submit-btn:disabled{opacity:.6}.signup-done-card{background:var(--color-surface);border-radius:20px;padding:36px 24px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:14px;width:100%;box-shadow:0 20px 60px #0000004d}.signup-done-icon{font-size:52px}.signup-done-title{font-size:22px;font-weight:800;color:var(--color-text)}.signup-done-desc{font-size:14px;color:var(--color-text-secondary);line-height:1.7;white-space:pre-line}.signup-done-btn{width:100%;height:50px;background:var(--color-primary);color:#fff;border-radius:12px;font-size:15px;font-weight:700;margin-top:8px}.pending-page{min-height:100%;background:linear-gradient(160deg,var(--color-primary-dark) 0%,var(--color-primary) 50%,var(--color-primary-light) 100%);display:flex;align-items:center;justify-content:center;padding:32px 24px}.pending-card{background:var(--color-surface);border-radius:20px;padding:40px 24px 28px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:14px;width:100%;box-shadow:0 20px 60px #0000004d}.pending-icon{font-size:56px}.pending-title{font-size:22px;font-weight:800;color:var(--color-text)}.pending-desc{font-size:14px;color:var(--color-text-secondary);line-height:1.7;white-space:pre-line}.pending-msg{font-size:13px;font-weight:600;color:var(--color-primary);background:#eef1fb;padding:10px 16px;border-radius:10px;width:100%}.pending-refresh-btn{width:100%;height:50px;background:var(--color-primary);color:#fff;border-radius:12px;font-size:15px;font-weight:700;margin-top:6px;transition:opacity .15s}.pending-refresh-btn:disabled{opacity:.6}.pending-logout-btn{font-size:13px;color:var(--color-text-muted);background:none;border:none;padding:4px}.adm-stats-row{display:flex;gap:8px;margin-bottom:20px}.adm-stat-card{flex:1;background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;padding:12px 0;display:flex;flex-direction:column;align-items:center;gap:4px}.adm-stat-card.accent{background:var(--color-primary);border-color:var(--color-primary)}.adm-stat-card.accent .adm-stat-num,.adm-stat-card.accent .adm-stat-label{color:#fff}.adm-stat-num{font-size:24px;font-weight:800;color:var(--color-text);line-height:1}.adm-stat-label{font-size:11px;font-weight:600;color:var(--color-text-secondary)}.adm-lj-section{font-size:15px;font-weight:700;color:var(--color-text);margin-bottom:12px}.adm-lj-group-label{font-size:12px;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.03em;margin-bottom:6px}.adm-lj-item{display:flex;align-items:center;gap:12px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;padding:12px 14px;margin-bottom:8px}.adm-lj-date-col{display:flex;flex-direction:column;gap:2px;min-width:96px}.adm-lj-date{font-size:13px;font-weight:600;color:var(--color-text)}.adm-lj-time{font-size:11px;color:var(--color-text-secondary)}.adm-lj-people{flex:1;display:flex;flex-direction:column;gap:2px}.adm-lj-student{font-size:13px;font-weight:600;color:var(--color-text)}.adm-lj-teacher{font-size:12px;color:var(--color-text-secondary)}.adm-lj-badge{font-size:11px;font-weight:700;padding:3px 10px;border-radius:20px;white-space:nowrap}.adm-lj-empty{text-align:center;color:var(--color-text-muted);font-size:14px;padding:40px 0}.adm-today-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:14px;padding:14px 16px;margin-bottom:4px}.adm-today-row{display:flex;justify-content:space-between;align-items:center}.adm-today-label{font-size:13px;color:var(--color-text-secondary)}.adm-today-value{font-size:15px;font-weight:700;color:var(--color-text)}.adm-today-teachers{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.adm-teacher-pill{font-size:12px;font-weight:600;padding:4px 10px;background:#e8ecf5;color:var(--color-primary);border-radius:20px}.adm-today-empty{font-size:13px;color:var(--color-text-muted);margin-top:8px}.adm-noshow-row{margin-top:10px;padding-top:10px;border-top:1px solid var(--color-border)}.adm-noshow-value{font-size:14px;font-weight:700;color:#ef4444}.adm-week-bar-wrap{margin-top:10px}.adm-week-bar-bg{width:100%;height:7px;background:var(--color-bg);border-radius:99px;overflow:hidden}.adm-week-row{padding:10px 0;border-bottom:1px solid var(--color-border)}.adm-week-row:last-child{border-bottom:none;padding-bottom:0}.adm-week-row:first-child{padding-top:0}.adm-week-row-header{display:flex;align-items:center;gap:8px}.adm-week-row-label{font-size:13px;font-weight:600;color:var(--color-text-secondary);width:52px;flex-shrink:0}.adm-week-row-rate{font-size:15px;font-weight:700;color:var(--color-text);width:42px}.adm-week-row-rate-highlight{color:var(--color-primary)}.adm-week-row-detail{font-size:12px;color:var(--color-text-secondary);margin-left:auto}.adm-week-bar-fill-highlight{background:var(--color-primary)!important;opacity:1!important}.adm-insights{display:flex;flex-direction:column;gap:8px;margin-bottom:4px}.adm-insight-card{display:flex;align-items:flex-start;gap:12px;padding:13px 14px;border-radius:12px;border-left:4px solid transparent}.adm-insight-warn{background:#f2f4f6;border-left-color:#8b95a1}.adm-insight-danger{background:#fef2f2;border-left-color:#ef4444}.adm-insight-info{background:#eff6ff;border-left-color:#3b82f6}.adm-insight-icon{font-size:18px;line-height:1;flex-shrink:0;margin-top:1px}.adm-insight-text{display:flex;flex-direction:column;gap:3px}.adm-insight-title{font-size:13px;font-weight:700;color:var(--color-text)}.adm-insight-desc{font-size:12px;color:var(--color-text-secondary);line-height:1.4}.adm-week-bar-fill{height:100%;background:var(--color-primary);border-radius:99px;transition:width .4s ease;opacity:.35}.adm-week-bar-fill-highlight{opacity:1}.adm-ticket-alerts{display:flex;flex-direction:column;gap:8px;margin-bottom:4px}.adm-ticket-alert-item{display:flex;align-items:center;justify-content:space-between;background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;padding:12px 14px}.adm-ticket-alert-info{display:flex;flex-direction:column;gap:3px}.adm-ticket-alert-name{font-size:14px;font-weight:600;color:var(--color-text)}.adm-ticket-alert-sub{font-size:11px;color:var(--color-text-muted)}.adm-ticket-alert-badges{display:flex;gap:6px}.adm-ticket-badge{font-size:11px;font-weight:700;padding:3px 10px;border-radius:20px}.adm-ticket-badge-empty{background:#fee2e2;color:#dc2626}.adm-ticket-badge-expire{background:#f2f4f6;color:#8b95a1}.di-wrap{position:relative;width:100%}.di-trigger{width:100%;padding:9px 12px;border:1px solid var(--color-border);border-radius:10px;font-size:14px;background:var(--color-bg);display:flex;align-items:center;justify-content:space-between;cursor:pointer;text-align:left}.di-trigger:focus{outline:none;border-color:var(--color-accent)}.di-value{color:var(--color-text)}.di-placeholder{color:var(--color-text-muted)}.di-icon{font-size:14px;opacity:.6}.di-popup{width:260px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;padding:8px;box-shadow:0 4px 24px #00000026}.di-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.di-month-label{font-size:13px;font-weight:700;color:var(--color-text)}.di-nav{width:24px;height:24px;border-radius:6px;font-size:15px;color:var(--color-text-secondary);background:var(--color-bg);border:1px solid var(--color-border);display:flex;align-items:center;justify-content:center;line-height:1;cursor:pointer}.di-nav:hover{background:var(--color-border)}.di-dow-row{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:2px}.di-dow{text-align:center;font-size:10px;font-weight:600;color:var(--color-text-secondary);padding:1px 0}.di-dow.sun{color:#ef4444}.di-dow.sat{color:#3b82f6}.di-week{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;margin-bottom:1px}.di-day{height:34px;border-radius:6px;font-size:12px;font-weight:500;color:var(--color-text);background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center}.di-day:hover:not(.di-empty):not(.di-disabled){background:var(--color-border)}.di-day.di-empty{cursor:default;pointer-events:none}.di-day.di-disabled{color:var(--color-text-muted);opacity:.35;cursor:not-allowed}.di-day.di-today{font-weight:700;border:1.5px solid var(--color-primary);color:var(--color-primary)}.di-day.di-selected{background:var(--color-primary);color:#fff;font-weight:700}.di-day.sun:not(.di-selected){color:#ef4444}.di-day.sat:not(.di-selected){color:#3b82f6}.page-header{display:flex;align-items:center;justify-content:space-between}.btn-refresh{font-size:18px;line-height:1;padding:6px 8px;border-radius:8px;border:1px solid rgba(255,255,255,.25);color:#ffffffd9;transition:background .15s;background:transparent;display:inline-flex;align-items:center;justify-content:center}.btn-refresh:hover{background:#ffffff1a}.btn-refresh .refresh-icon{display:inline-block}.btn-refresh.spinning .refresh-icon{animation:spin .5s linear}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.header-logout{font-size:13px;color:#ffffffbf;padding:6px 10px;border-radius:8px;border:1px solid rgba(255,255,255,.25);transition:background .15s}.header-logout:hover{background:#ffffff1a}.welcome-card{background:var(--color-primary);border-radius:16px;padding:20px;color:#fff;margin-bottom:8px}.welcome-name{font-size:20px;font-weight:700;margin-bottom:4px}.welcome-role{font-size:13px;color:#ffffffa6}.student-welcome-card{background:#191f28;border-radius:16px;padding:20px;color:#fff;margin-bottom:16px}.student-welcome-msg{font-size:15px;font-weight:700;line-height:1.5;margin-bottom:6px}.student-welcome-sub{font-size:12px;opacity:.65;font-weight:500}.active-tabs{display:flex;gap:0;margin-bottom:16px;border-bottom:1.5px solid #E5E8EB}.active-tab{padding:10px 20px;font-size:14px;font-weight:600;color:#8b95a1;border-bottom:2.5px solid transparent;margin-bottom:-1.5px;background:none;cursor:pointer;white-space:nowrap}.active-tab.active{color:#191f28;border-bottom-color:#191f28}.active-tab-badge{position:relative}.pending-count-badge{display:inline-flex;align-items:center;justify-content:center;background:#f04452;color:#fff;font-size:10px;font-weight:700;min-width:16px;height:16px;border-radius:8px;padding:0 4px;margin-left:4px}.branch-tabs{display:flex;gap:4px;margin-bottom:10px;background:#f2f4f6;border-radius:12px;padding:3px}.branch-tab{flex:1;padding:8px 6px;border-radius:9px;font-size:13px;font-weight:500;color:#8b95a1;background:transparent;border:none;cursor:pointer;transition:all .15s;white-space:nowrap}.branch-tab.active{background:#191f28;color:#fff;font-weight:700}.type-tabs{display:flex;gap:4px;margin-bottom:10px;background:#f2f4f6;border-radius:12px;padding:3px}.type-tab{flex:1;padding:8px 4px;border-radius:9px;font-size:12px;font-weight:500;color:#8b95a1;background:transparent;border:none;cursor:pointer;transition:all .15s;white-space:nowrap}.type-tab.active{background:#191f28;color:#fff;font-weight:700}.sort-bar{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap}.sort-btn{padding:6px 14px;border-radius:20px;font-size:12px;font-weight:600;color:#8b95a1;border:none;background:#f2f4f6;cursor:pointer;transition:all .15s;white-space:nowrap}.sort-btn.active{background:#191f28;color:#fff}.search-bar{position:relative;margin-bottom:14px}.search-input{width:100%;padding:12px 36px 12px 14px;border:none;border-radius:12px;font-size:14px;background:#f2f4f6;color:#191f28;font-family:inherit}.search-input:focus{outline:none}.search-input::placeholder{color:#8b95a1}.search-clear{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-size:14px;color:#8b95a1;background:none;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center}.search-empty{text-align:center;color:#8b95a1;font-size:14px;padding:32px 0}.section-title{font-size:13px;font-weight:700;color:#8b95a1;margin-bottom:10px;letter-spacing:.2px}.user-item-clickable{width:100%;text-align:left;cursor:pointer;background:#f2f4f6;border-radius:16px;padding:16px;margin-bottom:8px;display:flex;align-items:center;justify-content:space-between;border:none;transition:background .12s}.user-item-clickable:active{background:#e8eaed}.user-item{background:#f2f4f6;border-radius:16px;padding:16px;margin-bottom:8px;display:flex;align-items:center;justify-content:space-between;border:none}.user-info{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}.user-name-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.user-name{font-size:15px;font-weight:700;color:#191f28}.user-email{font-size:12px;color:#8b95a1}.user-reg-date{font-size:11px;color:#8b95a1}.user-ticket-badge{font-size:11px;color:#8b95a1;font-weight:600}.user-ticket-badge.no-info{color:#c2c8d0}.user-item-arrow{font-size:18px;color:#c2c8d0;flex-shrink:0;margin-left:8px}.user-type-badge{font-size:10px;font-weight:700;padding:2px 7px;border-radius:8px;flex-shrink:0}.user-type-badge.type-fixed,.user-type-badge.type-flexible{background:#f2f4f6;color:#191f28}.user-branch-badge{font-size:10px;font-weight:700;border-radius:8px;padding:2px 8px;flex-shrink:0}.user-branch-badge.branch-nohyeong{background:#e5e8eb;color:#191f28}.user-branch-badge.branch-beopwon{background:#191f28;color:#fff}.user-inactive-badge{font-size:11px;font-weight:700;padding:2px 8px;border-radius:20px;background:#fee9eb;color:#f04452}.user-fixed-summary{display:flex;flex-wrap:wrap;gap:4px;margin-top:2px}.user-fixed-tag{font-size:11px;font-weight:600;color:#4e5968;background:#f2f4f6;border-radius:6px;padding:1px 7px}.pending-list{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.pending-empty{text-align:center;color:#8b95a1;font-size:14px;padding:40px 0}.pending-card{background:#f2f4f6;border:none;border-radius:16px;padding:16px;display:flex;align-items:center;justify-content:space-between;gap:12px}.pending-card-info{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0}.pending-card-name{font-size:15px;font-weight:700;color:#191f28}.pending-card-phone{font-size:13px;color:#8b95a1}.pending-card-date{font-size:11px;color:#8b95a1}.pending-card-actions{display:flex;gap:6px;flex-shrink:0;align-items:center}.pending-approve-btn{padding:8px 16px;border-radius:10px;background:#191f28;color:#fff;border:none;font-size:13px;font-weight:700;cursor:pointer}.pending-reject-btn{padding:8px 14px;border-radius:10px;background:none;border:1.5px solid #F04452;color:#f04452;font-size:13px;font-weight:600;cursor:pointer}.pending-reject-confirm{display:flex;align-items:center;gap:4px;font-size:12px;color:#f04452;font-weight:600}.pending-reject-yes{padding:5px 10px;border-radius:8px;background:#f04452;color:#fff;border:none;font-size:12px;font-weight:700;cursor:pointer}.pending-reject-no{padding:5px 10px;border-radius:8px;background:none;border:1px solid #E5E8EB;color:#8b95a1;font-size:12px;cursor:pointer}.sd-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;flex-direction:column;justify-content:flex-end;z-index:150}.sd-modal{background:#fff;border-radius:20px 20px 0 0;width:100%;max-height:88vh;display:flex;flex-direction:column;overflow:hidden}.sd-branch-stripe{height:6px;border-radius:20px 20px 0 0;display:flex;align-items:center;justify-content:flex-end;padding:0 14px;font-size:10px;font-weight:700;letter-spacing:.5px;flex-shrink:0;height:26px}.sd-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px 0;flex-shrink:0}.sd-header-info{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.sd-name{font-size:17px;font-weight:800;color:#191f28}.sd-close{width:30px;height:30px;border-radius:50%;background:#f2f4f6;color:#8b95a1;font-size:14px;display:flex;align-items:center;justify-content:center;border:none;cursor:pointer;flex-shrink:0}.sd-withdraw-btn{padding:6px 13px;border-radius:10px;font-size:12px;font-weight:700;color:#f04452;border:1.5px solid #F04452;background:none;cursor:pointer}.sd-restore-btn{padding:6px 13px;border-radius:10px;font-size:12px;font-weight:700;color:#00b493;border:1.5px solid #00B493;background:none;cursor:pointer}.sd-delete-btn{padding:6px 13px;border-radius:10px;font-size:12px;font-weight:700;color:#fff;border:none;background:#f04452;cursor:pointer}.sd-switch-row{display:flex;align-items:center;gap:8px;padding:12px 18px 0;flex-wrap:wrap}.sd-switch-group{display:flex;background:#f2f4f6;border-radius:10px;overflow:hidden;padding:2px;gap:2px}.sd-switch-btn{padding:5px 13px;font-size:12px;font-weight:600;color:#8b95a1;background:transparent;border:none;cursor:pointer;border-radius:8px;transition:all .15s}.sd-switch-btn.active{background:#191f28;color:#fff}.sd-switch-btn.active.branch-nohyeong{background:#e5e8eb;color:#191f28}.sd-switch-btn.active.branch-beopwon{background:#1f2937;color:#fff}.sd-tabs{display:flex;padding:12px 18px 0;border-bottom:1.5px solid #E5E8EB;overflow-x:auto;flex-shrink:0;-webkit-overflow-scrolling:touch;gap:0}.sd-tabs::-webkit-scrollbar{display:none}.sd-tab{padding:7px 14px;font-size:13px;font-weight:600;color:#8b95a1;border-bottom:2.5px solid transparent;white-space:nowrap;margin-bottom:-1.5px;background:none;cursor:pointer;transition:all .15s}.sd-tab.active{color:#191f28;border-bottom-color:#191f28}.sd-body{flex:1;overflow-y:auto;overflow-x:hidden;min-height:0;padding:16px 18px 24px}.modal-label{display:block;font-size:12px;font-weight:700;color:#8b95a1;margin-bottom:6px;margin-top:14px}.modal-input{width:100%;padding:12px 14px;border:none;border-radius:12px;font-size:14px;background:#f2f4f6;color:#191f28;margin-bottom:4px;font-family:inherit}.modal-input:focus{outline:none}.form-error{color:#f04452;font-size:12px;margin-bottom:8px}.success-msg{color:#00b493;font-size:14px;font-weight:600;text-align:center;padding:10px 0}.btn-modal-confirm{padding:13px;background:#191f28;color:#fff;border-radius:12px;font-size:14px;font-weight:700;border:none;cursor:pointer;transition:opacity .15s}.btn-modal-confirm:active{opacity:.85}.course-modal-status{display:flex;flex-direction:column;align-items:center;padding:12px 0 16px;gap:4px}.course-modal-remaining{font-size:36px;font-weight:800;color:#191f28;line-height:1}.course-modal-sub{font-size:12px;color:#8b95a1}.period-quick-btns{display:flex;gap:6px;margin-bottom:6px}.period-quick-btn{flex:1;padding:8px 0;border-radius:10px;font-size:12px;font-weight:600;color:#191f28;border:1.5px solid #E5E8EB;background:#f2f4f6;cursor:pointer;transition:all .15s}.period-quick-btn.active,.period-quick-btn:active{background:#191f28;color:#fff;border-color:#191f28}.fs-divider{height:1px;background:#e5e8eb;margin:16px 0}.ci-summary{background:#f2f4f6;border-radius:12px;padding:14px 16px;margin-bottom:4px;display:flex;flex-direction:column;gap:8px}.ci-summary-row{display:flex;justify-content:space-between;align-items:center}.ci-summary-label{font-size:13px;color:#8b95a1}.ci-summary-value{font-size:13px;font-weight:700;color:#191f28}.ci-history-row{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid #E5E8EB}.ci-history-row:last-child{border-bottom:none}.ci-history-left{display:flex;flex-direction:column;gap:3px}.ci-history-reason{font-size:13px;color:#191f28}.ci-history-date{font-size:11px;color:#8b95a1}.ci-charge{color:#00b493}.ci-use{color:#f04452}.ci-period{color:#6366f1;font-size:11px;font-weight:700}.history-section-label{font-size:12px;font-weight:700;color:#8b95a1;letter-spacing:.04em;margin-bottom:8px}.history-empty{text-align:center;color:#8b95a1;font-size:14px;padding:24px 0}.history-card{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-radius:12px;background:#f2f4f6;border:none;margin-bottom:6px}.history-card-left{display:flex;flex-direction:column;gap:3px}.history-card-date{font-size:13px;font-weight:600;color:#191f28}.history-card-meta{font-size:12px;color:#8b95a1}.history-card-status{font-size:12px;font-weight:700;white-space:nowrap}.fs-list{background:#f2f4f6;border-radius:12px;padding:12px 14px;margin-bottom:4px}.fs-list-title{font-size:12px;font-weight:700;color:#8b95a1;text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px}.fs-item{display:flex;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px solid #E5E8EB}.fs-item:last-child{border-bottom:none}.fs-item-info{font-size:13px;color:#191f28}.fs-item-sub{font-size:12px;color:#8b95a1}.fs-delete-btn{font-size:12px;font-weight:600;color:#f04452;padding:4px 12px;border:1.5px solid #F04452;border-radius:8px;background:none;cursor:pointer;flex-shrink:0}.fs-add-title{font-size:14px;font-weight:700;color:#191f28;margin-bottom:4px}.fs-day-row{display:flex;gap:4px;margin-bottom:8px}.fs-day-btn{flex:1;padding:8px 0;border-radius:10px;font-size:13px;font-weight:600;color:#8b95a1;border:none;background:#f2f4f6;cursor:pointer;transition:all .15s}.fs-day-btn.active{background:#191f28;color:#fff}.fs-row-2col{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:4px}.fs-preview-msg{font-size:12px;color:#8b95a1;background:#f2f4f6;border-radius:10px;padding:10px 14px;margin:12px 0}.fs-result-msg{font-size:13px;font-weight:600;color:#00b493;background:#e6f9f5;border-radius:10px;padding:12px;margin:10px 0;text-align:center}.fs-error-msg{font-size:13px;font-weight:600;color:#f04452;background:#fee9eb;border-radius:10px;padding:12px;margin:10px 0;text-align:center}.hold-section-title{font-size:14px;font-weight:700;color:#191f28;margin-bottom:10px}.hold-type-row{display:flex;gap:4px;margin-bottom:12px}.hold-type-btn{flex:1;padding:8px 0;border-radius:10px;font-size:12px;font-weight:600;color:#8b95a1;border:none;background:#f2f4f6;cursor:pointer;transition:all .15s}.hold-type-btn.active{background:#191f28;color:#fff}.hold-status-card{background:#f2f4f6;border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:8px}.hold-status-row{display:flex;justify-content:space-between;align-items:center}.hold-status-label{font-size:12px;color:#8b95a1}.hold-status-value{font-size:12px;font-weight:600;color:#191f28}.hold-badge{font-size:11px;font-weight:700;background:#f2f4f6;color:#4e5968;padding:2px 8px;border-radius:20px}.hold-btn-row{display:flex;gap:8px;margin-top:2px}.hold-cancel-btn{flex:1;padding:9px;border-radius:10px;font-size:13px;font-weight:600;background:none;border:1.5px solid #E5E8EB;color:#8b95a1;cursor:pointer}.hold-history{border-top:1px solid #E5E8EB;padding-top:8px;display:flex;flex-direction:column;gap:4px}.hold-history-item{display:flex;align-items:center;gap:8px;font-size:11px}.hold-history-date{color:#8b95a1}.hold-history-days{color:#191f28;font-weight:600}.hold-history-status.completed{color:#00b493;font-weight:600}.hold-history-status.cancelled{color:#8b95a1}.sd-confirm-box{background:#fff;border-radius:20px;padding:24px 20px 20px;width:calc(100% - 48px);max-width:320px;margin:auto;display:flex;flex-direction:column;gap:20px}.sd-confirm-msg{font-size:15px;font-weight:600;color:#191f28;text-align:center;line-height:1.5}.sd-confirm-btns{display:flex;gap:8px}.sd-confirm-cancel{flex:1;padding:12px;border-radius:12px;font-size:14px;font-weight:600;border:none;color:#8b95a1;background:#f2f4f6;cursor:pointer}.sd-confirm-ok{flex:1;padding:12px;border-radius:12px;font-size:14px;font-weight:600;background:#f04452;color:#fff;border:none;cursor:pointer}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:150;padding:16px}.modal-box{background:#fff;border-radius:16px;padding:24px;width:100%;max-width:320px;max-height:85vh;overflow-y:auto}.modal-actions{display:flex;gap:10px;margin-top:12px}.btn-modal-cancel{flex:1;padding:12px;background:#f2f4f6;color:#8b95a1;border-radius:12px;font-size:14px;font-weight:600;border:none;cursor:pointer}.tt-wrapper{background:var(--color-surface);border-radius:14px;border:1px solid var(--color-border);overflow:hidden;margin-bottom:12px}.tt-nav{display:flex;align-items:center;justify-content:space-between;padding:12px 14px 8px}.tt-week-label{font-size:13px;font-weight:600;color:var(--color-text)}.tt-nav-btn{width:30px;height:30px;border-radius:8px;background:var(--color-bg);border:1px solid var(--color-border);font-size:18px;color:var(--color-text-secondary);display:flex;align-items:center;justify-content:center;line-height:1}.tt-hint{font-size:11px;color:var(--color-text-muted);padding:0 14px 8px}.tt-booking-notice{font-size:12px;font-weight:500;color:var(--color-text-secondary);padding:0 14px 8px}.tt-nav-btn:disabled{opacity:.25;cursor:default}@keyframes tt-fadein-bg{0%{opacity:0}to{opacity:1}}@keyframes tt-fadeout-bg{0%{opacity:1}to{opacity:0}}@keyframes tt-slidein-box{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@keyframes tt-slideout-box{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.92)}}.tt-warn-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:200;padding:24px;animation:tt-fadein-bg .2s ease}.tt-warn-overlay.tt-warn-fadeout{animation:tt-fadeout-bg .25s ease forwards}.tt-warn-box{background:var(--color-surface);border-radius:16px;padding:24px 20px 16px;width:100%;max-width:280px;display:flex;flex-direction:column;align-items:center;gap:16px;animation:tt-slidein-box .2s ease}.tt-warn-box.tt-warn-box-fadeout{animation:tt-slideout-box .25s ease forwards}.tt-warn-msg{font-size:14px;font-weight:600;color:var(--color-text);text-align:center;line-height:1.5}.tt-warn-btn{width:100%;padding:11px;background:var(--color-primary);color:#fff;border-radius:10px;font-size:14px;font-weight:600}.tt-scroll{overflow-x:auto;overflow-y:auto;max-height:calc(100vh - 280px);-webkit-overflow-scrolling:touch}.tt-grid{display:grid;grid-template-columns:40px repeat(7,1fr);min-width:320px}.tt-cell{border-right:1px solid var(--color-border);border-bottom:1px solid var(--color-border);display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:40px;font-size:10px;padding:2px}.tt-cell:last-child{border-right:none}.tt-corner{background:var(--color-bg);border-bottom:2px solid var(--color-border);position:sticky;top:0;left:0;z-index:30}.tt-day-header{background:var(--color-bg);border-bottom:2px solid var(--color-border);gap:1px;padding:6px 2px;min-height:44px;position:sticky;top:0;z-index:20}.tt-day-header.is-today .tt-day-name{color:var(--color-accent);font-weight:700}.tt-day-header.is-today .tt-day-date{color:var(--color-accent)}.tt-day-name{font-size:11px;font-weight:600;color:var(--color-text-secondary)}.tt-day-date{font-size:10px;color:var(--color-text-muted)}.tt-day-dot{width:4px;height:4px;border-radius:50%;background:var(--color-accent);margin-top:1px;flex-shrink:0}.tt-out-of-range{background:var(--color-bg)}.tt-time-label{font-size:10px;color:var(--color-text-muted);background:var(--color-bg);padding:0 4px;position:sticky;left:0;z-index:10}.tt-lesson{border:none;border-right:1px solid var(--color-border);border-bottom:1px solid var(--color-border);cursor:default;transition:filter .1s;width:100%}.tt-lesson:not(:disabled):hover{filter:brightness(.93)}.tt-lesson:not(:disabled){cursor:pointer}.cell-empty{background:#fff}.cell-past{background:var(--color-bg)}.cell-past-open{background:#f0f4ff;opacity:.6}.cell-open{background:#dbeafe}.cell-open-recurring{background:#ede9fe}.cell-open-recurring .cell-text{color:#6d28d9}.cell-open-disabled{background:#f1f5f9;opacity:.6;cursor:not-allowed}.cell-pending{background:#f2f4f6}.cell-confirmed{background:#dcfce7}.cell-mine-pending{background:#fed7aa}.cell-mine-confirmed{background:#bbf7d0}.cell-taken{background:#f1f5f9}.cell-del-x{font-size:8px;font-weight:700;color:#ef4444;line-height:1;letter-spacing:-.2px}.cell-add{font-size:14px;color:var(--color-border);font-weight:300;line-height:1}.cell-text{font-size:9px;font-weight:700;color:inherit;letter-spacing:-.2px}.cell-open .cell-text{color:#1d4ed8}.cell-pending .cell-text{color:#4e5968}.cell-confirmed .cell-text{color:#166534}.cell-mine-pending .cell-text{color:#9a3412}.cell-mine-confirmed .cell-text{color:#14532d}.cell-dot-inner{width:6px;height:6px;border-radius:50%;background:#1d4ed8}.cell-x{font-size:12px;color:var(--color-text-muted)}.tt-legend{display:flex;gap:12px;padding:10px 14px;border-top:1px solid var(--color-border);background:var(--color-bg);flex-wrap:wrap}.legend-item{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--color-text-secondary)}.legend-dot{width:12px;height:12px;border-radius:3px;flex-shrink:0}.btt-now-row{border-top:2px solid #ef4444!important}.btt-now-label{color:#ef4444!important;font-weight:700}.lesson-subtab-bar{display:flex;gap:0;border-bottom:1.5px solid var(--color-border);margin-bottom:14px}.lesson-subtab{padding:8px 18px;font-size:13px;font-weight:600;color:var(--color-text-muted);border-bottom:2.5px solid transparent;margin-bottom:-1.5px;transition:all .15s;white-space:nowrap}.lesson-subtab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.rec-wrap{padding-bottom:16px}.rec-divider{height:1px;background:var(--color-border);margin:12px 0}.rec-label{display:block;font-size:12px;font-weight:600;color:var(--color-text-secondary);margin-bottom:4px}.btn-primary-full{width:100%;padding:11px;background:var(--color-primary);color:#fff;border-radius:10px;font-size:14px;font-weight:600;margin-top:8px}.pending-section{background:#f2f4f6;border:1px solid #E5E8EB;border-radius:12px;padding:12px 14px;margin-bottom:16px}.pending-section-title{font-size:13px;font-weight:700;color:#4e5968;margin-bottom:10px;display:flex;align-items:center;gap:6px}.pending-count{background:#8b95a1;color:#fff;font-size:11px;padding:1px 7px;border-radius:20px}.pending-card{display:flex;align-items:center;justify-content:space-between;gap:8px;background:#fff;border:1px solid #E5E8EB;border-radius:8px;padding:10px 12px;margin-bottom:8px}.pending-card:last-child{margin-bottom:0}.pending-card-info{display:flex;flex-direction:column;gap:2px;min-width:0}.pending-card-name{font-size:14px;font-weight:700;color:var(--color-text)}.pending-card-sub{font-size:12px;color:var(--color-text-secondary)}.pending-card-actions{display:flex;gap:6px;flex-shrink:0}.pending-btn-confirm{font-size:13px;font-weight:700;padding:6px 14px;background:var(--color-primary);color:#fff;border-radius:8px}.pending-btn-cancel{font-size:13px;font-weight:600;padding:6px 14px;background:#f1f5f9;color:var(--color-text-secondary);border-radius:8px;border:1px solid var(--color-border)}.view-mode-toggle{display:flex;background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;padding:3px;width:fit-content;margin-bottom:12px}.view-mode-btn{padding:5px 18px;border-radius:6px;font-size:13px;font-weight:600;color:var(--color-text-secondary);transition:all .15s}.view-mode-btn.active{background:var(--color-primary);color:#fff}.bwk-grid{min-width:360px}.bwk-day-header{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px 4px;background:var(--color-primary);border-right:1px solid rgba(255,255,255,.15);border-bottom:1px solid rgba(255,255,255,.2);gap:2px;position:sticky;top:0;z-index:20}.bwk-today-header{background:var(--color-accent)}.bwk-day-name{font-size:11px;font-weight:700;color:#ffffffd9}.bwk-day-date{font-size:11px;font-weight:600;color:#fff}.bwk-time-label{font-size:9px;position:sticky;left:0;z-index:10}.bwk-cell{border-right:1px solid var(--color-border);border-bottom:1px solid var(--color-border);min-height:52px;display:flex;flex-direction:column;position:relative;align-items:stretch;justify-content:center;padding:2px;gap:2px}.bwk-empty{background:#f8fafc}.bwk-today-col{background-color:#f2f4f6!important}.bwk-multi{background:#fff}.bwk-mini{position:relative;display:flex;align-items:center;gap:3px;padding:2px 4px;border-radius:4px;width:100%;text-align:left;cursor:pointer}.bwk-mini:hover{filter:brightness(.93)}.bwk-mini-open{background:#f1f5f9}.bwk-mini-pending{background:#f2f4f6}.bwk-mini-confirmed{background:#dcfce7}.bwk-mini-auto_cancelled{background:#fee2e2}.bwk-mini-rejected,.bwk-mini-cancelled{background:#f1f5f9}.bwk-mini-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.bwk-mini-text{display:flex;flex-direction:column;overflow:hidden;max-width:100%}.bwk-mini-student{font-size:9px;font-weight:700;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bwk-mini-teacher{font-size:8px;font-weight:500;color:var(--color-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bwk-single{width:100%;cursor:pointer;flex-direction:column;align-items:center;position:relative;justify-content:center;padding:4px;gap:3px}.bwk-single:hover{filter:brightness(.93)}.bwk-single-open{background:#fff}.bwk-single-pending{background:#f2f4f6}.bwk-single-confirmed{background:#dcfce7}.bwk-single-auto_cancelled{background:#fee2e2}.bwk-single-rejected,.bwk-single-cancelled{background:#f1f5f9}.bwk-single-name{font-size:10px;font-weight:700;color:var(--color-text);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.bwk-single-teacher{font-size:8px;font-weight:500;color:var(--color-text-secondary);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.bwk-branch-tag{font-size:8px;font-weight:600;color:var(--color-accent);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.bwk-single-badge{font-size:8px;font-weight:700;padding:1px 5px;border-radius:10px}.bwk-badge-open{background:#e2e8f0;color:#64748b}.bwk-badge-pending{background:#e5e8eb;color:#191f28}.bwk-badge-confirmed{background:#4ade80;color:#14532d}.bwk-badge-auto_cancelled{background:#f87171;color:#7f1d1d}.bwk-badge-rejected,.bwk-badge-cancelled{background:#cbd5e1;color:#475569}.bwk-badge-no_show{background:#fca5a5;color:#7f1d1d}.tab-bar{display:flex;background:var(--color-surface);border-radius:12px;padding:4px;margin-bottom:16px;border:1px solid var(--color-border)}.tab-btn{flex:1;padding:10px;font-size:14px;font-weight:500;border-radius:8px;color:var(--color-text-secondary);transition:all .15s}.tab-btn.active{background:var(--color-primary);color:#fff}.teacher-selector{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}.teacher-chip{padding:7px 16px;border-radius:20px;font-size:13px;font-weight:600;background:var(--color-surface);color:var(--color-text-secondary);border:1px solid var(--color-border);transition:all .15s}.teacher-chip.selected{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.date-nav{display:flex;align-items:center;justify-content:space-between;background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;padding:10px 12px;margin-bottom:12px}.date-nav-btn{width:32px;height:32px;border-radius:8px;background:var(--color-bg);border:1px solid var(--color-border);font-size:20px;color:var(--color-text-secondary);display:flex;align-items:center;justify-content:center;flex-shrink:0}.date-nav-center{display:flex;flex-direction:column;align-items:center;gap:3px}.date-nav-label{font-size:14px;font-weight:700;color:var(--color-text)}.date-today-btn{font-size:11px;font-weight:600;color:var(--color-accent);background:#eff6ff;padding:2px 8px;border-radius:10px}.booking-legend{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:12px;padding:8px 12px;background:var(--color-surface);border-radius:10px;border:1px solid var(--color-border)}.legend-item{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--color-text-secondary);font-weight:500}.legend-dot{width:10px;height:10px;border-radius:3px;flex-shrink:0}.leg-pending{background:#e5e8eb}.leg-confirmed{background:#4ade80}.leg-auto-cancelled{background:#f87171}.leg-rejected{background:#cbd5e1}.as-lesson-list{display:flex;flex-direction:column;gap:8px}.as-lesson-item{display:flex;align-items:center;gap:12px;width:100%;padding:14px 16px;border-radius:12px;border:1px solid var(--color-border);text-align:left;cursor:pointer;transition:filter .12s}.as-lesson-item:hover{filter:brightness(.96)}.as-open{background:#fff}.as-pending{background:#f2f4f6}.as-confirmed{background:#dcfce7}.as-auto_cancelled{background:#fee2e2}.as-rejected,.as-cancelled{background:#f1f5f9}.as-time{display:flex;align-items:center;gap:3px;font-size:14px;font-weight:700;color:var(--color-text);min-width:110px}.as-time-sep{font-weight:400;color:var(--color-text-secondary)}.as-student{flex:1;font-size:14px;font-weight:600;color:var(--color-text)}.as-teacher-tag{font-size:12px;font-weight:500;color:var(--color-text-secondary)}.as-badge{font-size:11px;font-weight:700;padding:3px 10px;border-radius:20px;white-space:nowrap}.as-badge-open{background:#f1f5f9;color:#64748b}.as-badge-pending{background:#e5e8eb;color:#191f28}.as-badge-confirmed{background:#4ade80;color:#14532d}.as-badge-auto_cancelled{background:#f87171;color:#7f1d1d}.as-badge-rejected,.as-badge-cancelled{background:#cbd5e1;color:#475569}.day-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 0}.day-empty-icon{font-size:48px;margin-bottom:10px}.day-empty-text{font-size:15px;font-weight:500;color:var(--color-text-muted)}.btt-scroll-wrap{overflow-x:auto;overflow-y:auto;max-height:calc(100vh - 280px);-webkit-overflow-scrolling:touch;border-radius:12px;border:1px solid var(--color-border)}.btt-grid{display:grid;min-width:280px}.btt-corner{background:var(--color-primary);border-right:1px solid rgba(255,255,255,.15);border-bottom:1px solid rgba(255,255,255,.15);min-height:44px;position:sticky;top:0;left:0;z-index:30}.btt-teacher-header{display:flex;align-items:center;justify-content:center;padding:10px 6px;font-size:12px;font-weight:700;color:#fff;border-right:1px solid rgba(255,255,255,.15);border-bottom:1px solid rgba(255,255,255,.2);text-align:center;min-height:44px;position:sticky;top:0;z-index:20}.btt-teacher-header:last-child{border-right:none}.btt-time-label{background:var(--color-bg);border-right:1px solid var(--color-border);border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:600;color:var(--color-text-muted);min-height:56px;padding:0 4px;position:sticky;left:0;z-index:10}.btt-cell{border-right:1px solid var(--color-border);border-bottom:1px solid var(--color-border);min-height:56px;display:flex;flex-direction:column;position:relative;align-items:center;justify-content:center;padding:4px;gap:3px;text-align:center}.btt-cell:last-child{border-right:none}.btt-empty{background:#f8fafc}.btt-open{background:#fff}.btt-open-clickable{cursor:pointer;transition:background .12s;width:100%}.btt-past-open{opacity:.35;cursor:default}.btt-open-clickable:hover{background:#f0f9ff}.btt-open-label{font-size:9px;font-weight:600;color:var(--color-text-muted);letter-spacing:.02em}.btt-open-del{font-size:9px;font-weight:700;color:#ef4444;line-height:1}.btt-badge-open{background:#dbeafe;color:#1d4ed8}.btt-booked{cursor:pointer;transition:filter .12s;width:100%}.btt-booked:hover{filter:brightness(.93)}.btt-pending{background:#f2f4f6}.btt-confirmed{background:#dcfce7}.btt-auto_cancelled{background:#fee2e2}.btt-rejected,.btt-cancelled{background:#f1f5f9}.btt-student{font-size:11px;font-weight:700;color:var(--color-text);line-height:1.2}.btt-status-badge{font-size:9px;font-weight:700;padding:2px 6px;border-radius:10px}.btt-pending .btt-status-badge{background:#e5e8eb;color:#191f28}.btt-confirmed .btt-status-badge{background:#4ade80;color:#14532d}.btt-auto_cancelled .btt-status-badge{background:#f87171;color:#7f1d1d}.btt-rejected .btt-status-badge,.btt-cancelled .btt-status-badge{background:#cbd5e1;color:#475569}.btt-fixed-badge{font-size:8px;font-weight:700;color:#4e5968;background:#f2f4f6;border-radius:6px;padding:1px 5px}.btt-recurring-badge{font-size:8px;font-weight:700;color:#1e40af;background:#dbeafe;border-radius:6px;padding:1px 5px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:flex-end;justify-content:center;z-index:200;padding:0}.detail-modal{background:var(--color-surface);border-radius:20px 20px 0 0;width:100%;max-width:480px;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;animation:slideUp .22s ease}.detail-modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;color:#fff;font-size:15px;font-weight:700}.detail-close{color:#fffc;font-size:16px;width:28px;height:28px;border-radius:50%;background:#ffffff26;display:flex;align-items:center;justify-content:center}.detail-body{padding:8px 20px 16px;overflow-y:auto;flex:1;min-height:0}.detail-row{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--color-border)}.detail-row:last-child{border-bottom:none}.detail-memo-row{display:flex;flex-direction:column;gap:8px;padding:12px 0 0}.detail-memo-row .detail-label{font-size:13px;color:var(--color-text-secondary);font-weight:500}.detail-memo-input{width:100%;border:1px solid var(--color-border);border-radius:8px;padding:10px 12px;font-size:13px;color:var(--color-text);background:var(--color-bg);resize:vertical;font-family:inherit;line-height:1.5;box-sizing:border-box}.detail-memo-input:focus{outline:none;border-color:var(--color-primary)}.cell-memo-dot{position:absolute;top:0;right:0;width:0;height:0;border-style:solid;border-width:0 7px 7px 0;border-color:transparent #e53e3e transparent transparent;pointer-events:none;font-size:0}.list-memo-badge{display:block;font-size:11px;color:var(--color-text-secondary);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px}.detail-label{font-size:13px;color:var(--color-text-secondary);font-weight:500}.detail-value{font-size:14px;font-weight:600;color:var(--color-text)}.status-badge-inline{display:inline-block;font-size:12px;font-weight:700;padding:4px 12px;border-radius:20px}.btt-badge-pending{background:#f2f4f6;color:#4e5968}.btt-badge-confirmed{background:#dcfce7;color:#166534}.btt-badge-auto_cancelled{background:#fee2e2;color:#991b1b}.btt-badge-rejected,.btt-badge-cancelled{background:#f1f5f9;color:#64748b}.btt-badge-no_show{background:#fee2e2;color:#991b1b}.detail-actions{display:flex;gap:10px;padding:12px 20px 24px;flex-shrink:0;border-top:1px solid var(--color-border)}.detail-btn{flex:1;padding:13px;border-radius:12px;font-size:15px;font-weight:700}.detail-btn.confirm{background:var(--color-primary);color:#fff}.detail-btn.cancel-btn{background:#f1f5f9;color:var(--color-text-secondary);border:1px solid var(--color-border)}.detail-btn.noshow-btn{background:#fee2e2;color:#dc2626;border:1px solid #fca5a5}.detail-btn.unnoshow-btn{background:#dcfce7;color:#16a34a;border:1px solid #86efac}.manual-book-divider{height:1px;background:var(--color-border);margin:12px 0}.manual-book-title{font-size:13px;font-weight:700;color:var(--color-text);margin-bottom:8px}.manual-search-wrap{position:relative;margin-bottom:8px}.manual-search-input{width:100%;padding:9px 32px 9px 12px;border:1px solid var(--color-border);border-radius:10px;font-size:14px;background:var(--color-bg);color:var(--color-text);box-sizing:border-box}.manual-search-input:focus{outline:none;border-color:var(--color-accent)}.manual-search-clear{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-size:12px;color:var(--color-text-muted)}.manual-search-list{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;box-shadow:0 4px 16px #0000001f;z-index:10;max-height:180px;overflow-y:auto}.manual-search-item{width:100%;display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--color-border);text-align:left}.manual-search-item:last-child{border-bottom:none}.manual-search-item:hover{background:var(--color-bg)}.manual-search-name{font-size:14px;font-weight:600;color:var(--color-text)}.manual-search-ticket{font-size:12px;color:var(--color-text-secondary)}.manual-search-empty{padding:12px 14px;font-size:13px;color:var(--color-text-muted);text-align:center}.manual-book-btn{width:100%;padding:10px;background:var(--color-primary);color:#fff;border-radius:10px;font-size:14px;font-weight:600}.manual-book-btn:disabled{opacity:.4;cursor:not-allowed}.manual-book-error{font-size:12px;color:#dc2626;margin-bottom:6px}.manual-book-success{font-size:13px;font-weight:600;color:#16a34a;background:#dcfce7;border-radius:8px;padding:10px 12px;text-align:center}.noshow-icon{font-size:10px;line-height:1;flex-shrink:0}.log-filter-row{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}.log-filter-btn{padding:5px 12px;border-radius:16px;font-size:12px;font-weight:600;color:var(--color-text-secondary);border:1.5px solid var(--color-border);background:var(--color-surface);transition:all .15s;white-space:nowrap}.log-filter-btn.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.log-student-select{width:100%;padding:9px 12px;border:1px solid var(--color-border);border-radius:10px;font-size:13px;background:var(--color-surface);color:var(--color-text)}.log-empty{text-align:center;color:var(--color-text-muted);font-size:14px;padding:40px 0}.log-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;padding:14px 16px;margin-bottom:8px}.log-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.log-card-date{font-size:13px;font-weight:600;color:var(--color-text)}.log-card-time{font-size:12px;color:var(--color-text-secondary)}.log-card-names{font-size:12px}.log-card-teacher{font-weight:600;color:var(--color-accent)}.log-card-sep{color:var(--color-text-muted)}.log-card-student{font-weight:600;color:var(--color-text-secondary)}.log-card-song{font-size:14px;font-weight:700;color:var(--color-text);margin-bottom:4px}.log-card-notes{font-size:13px;color:var(--color-text-secondary);line-height:1.5;white-space:pre-wrap}.tm-grid-hint{font-size:12px;color:var(--color-text-secondary);margin-bottom:6px}.tm-pattern-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;margin-bottom:8px}.tm-pattern-grid{display:grid;grid-template-columns:34px repeat(7,minmax(0,1fr));gap:2px;min-width:0}.tm-grid-cell{display:flex;align-items:center;justify-content:center;border-radius:4px;font-size:10px;height:28px}.tm-grid-corner{background:transparent}.tm-grid-day{font-weight:700;color:var(--color-text-secondary);background:var(--color-bg)}.tm-grid-time{font-size:9px;color:var(--color-text-muted);background:transparent;justify-content:flex-end;padding-right:4px;letter-spacing:-.3px}.tm-pattern-cell{background:var(--color-bg);border:1px solid var(--color-border);border-radius:4px;cursor:pointer;transition:background .1s,border-color .1s}.tm-pattern-cell:active{opacity:.7}.tm-pattern-cell.active{background:var(--color-primary);border-color:var(--color-primary)}.tm-pattern-cell.existing{background:#d1fae5;border-color:#6ee7b7}.tm-pattern-cell.active.existing{background:var(--color-primary);border-color:var(--color-primary)}.tm-legend{display:flex;gap:12px;margin-top:6px;margin-bottom:2px}.tm-legend-item{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--color-text-secondary)}.tm-legend-dot{width:12px;height:12px;border-radius:3px;border:1px solid transparent}.tm-dot-active{background:var(--color-primary);border-color:var(--color-primary)}.tm-dot-existing{background:#d1fae5;border-color:#6ee7b7}.tm-dot-empty{background:var(--color-bg);border-color:var(--color-border)}.tm-selected-summary{font-size:12px;color:var(--color-primary);font-weight:600;background:#e8ecf5;border-radius:8px;padding:8px 12px;margin-top:4px;line-height:1.7;word-break:keep-all}.tm-date-input{font-size:14px;padding:8px 12px;margin-bottom:8px;cursor:pointer}.tm-clear-btn{width:100%;padding:10px;font-size:13px;font-weight:600;color:var(--color-danger);border:1.5px solid var(--color-danger);border-radius:10px;background:none}.tm-clear-confirm{background:#fff1f2;border:1.5px solid #fecdd3;border-radius:10px;padding:12px}.tm-clear-confirm-msg{font-size:12px;color:#be123c;margin-bottom:10px;line-height:1.5}.tm-clear-confirm-btns{display:flex;gap:8px}.tm-clear-cancel-btn{flex:1;padding:8px;font-size:13px;font-weight:600;border-radius:8px;background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text-secondary)}.tm-clear-ok-btn{flex:1;padding:8px;font-size:13px;font-weight:600;border-radius:8px;background:var(--color-danger);color:#fff}.tm-clear-section-label{font-size:13px;font-weight:700;color:var(--color-text);margin-bottom:4px}.tm-clear-section-desc{font-size:12px;color:var(--color-text-secondary);line-height:1.5;margin-bottom:10px}.from-clear-row{display:flex;gap:6px;align-items:center}.from-clear-input{flex:1;padding:8px 10px;border:1px solid var(--color-border);border-radius:8px;font-size:13px;background:var(--color-bg);color:var(--color-text)}.from-clear-btn{padding:8px 14px;font-size:13px;font-weight:600;border-radius:8px;border:1.5px solid var(--color-danger);color:var(--color-danger);background:none;white-space:nowrap}.from-clear-btn-ok{background:var(--color-danger);color:#fff}.from-clear-btn-cancel{padding:8px 10px;font-size:13px;font-weight:600;border-radius:8px;border:1px solid var(--color-border);color:var(--color-text-secondary);background:var(--color-surface);white-space:nowrap}.tm-next-month-info{background:var(--color-bg);border-radius:10px;padding:10px 14px;display:flex;align-items:center;justify-content:space-between;margin-top:4px}.tm-next-month-label{font-size:12px;color:var(--color-text-secondary)}.tm-next-month-value{font-size:14px;font-weight:700;color:var(--color-primary)}.empty-notif{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 0;color:#8b95a1}.empty-notif p{font-size:14px}.notif-item{background:#f2f4f6;border-radius:16px;padding:16px;margin-bottom:10px;border-left:3px solid #191F28}.notif-item.read{border-left-color:#e5e8eb;opacity:.65}.notif-message{font-size:14px;color:#191f28;font-weight:600;margin-bottom:6px;line-height:1.45}.notif-time{font-size:12px;color:#8b95a1}.nb-create-btn{width:100%;padding:14px;background:#191f28;color:#fff;border:none;border-radius:14px;font-size:15px;font-weight:700;margin-bottom:16px}.nb-empty{display:flex;flex-direction:column;align-items:center;gap:10px;padding:60px 20px;color:#8b95a1;font-size:14px}.nb-card{background:#f2f4f6;border-radius:16px;padding:16px;cursor:pointer;transition:opacity .12s}.nb-card:active{opacity:.75}.nb-card-pinned{background:#f2f4f6;border:1.5px solid #E5E8EB}.nb-card-title-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:5px}.nb-pin-badge{font-size:11px;font-weight:700;color:#191f28;flex-shrink:0}.nb-card-title{font-size:15px;font-weight:700;color:#191f28;word-break:break-all}.nb-card-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.nb-target-badge{font-size:11px;font-weight:600;background:#e5e8eb;color:#4e5968;padding:2px 8px;border-radius:20px}.nb-card-date{font-size:12px;color:#8b95a1}.nb-read-count{font-size:12px;color:#8b95a1;margin-left:auto}.nb-detail{margin-top:14px;padding-top:14px;border-top:1px solid #E5E8EB;display:flex;flex-direction:column;gap:14px}.nb-detail-content{font-size:14px;color:#191f28;line-height:1.65;white-space:pre-line}.nb-image-add-btn{padding:10px 16px;background:#f2f4f6;border:1px dashed #B0B8C1;border-radius:10px;font-size:14px;color:#4e5968;cursor:pointer;width:100%;margin-bottom:8px}.nb-image-preview-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px}.nb-image-preview-item{position:relative;width:80px;height:80px;border-radius:8px;overflow:hidden}.nb-image-preview-item img{width:100%;height:100%;object-fit:cover}.nb-image-remove-btn{position:absolute;top:2px;right:2px;width:20px;height:20px;background:#0009;color:#fff;border:none;border-radius:50%;font-size:10px;cursor:pointer;display:flex;align-items:center;justify-content:center}.nb-readers-section{display:flex;flex-direction:column;gap:8px}.nb-readers-label{font-size:12px;font-weight:600;color:#8b95a1}.nb-readers-empty{font-size:12px;color:#8b95a1}.nb-readers-list{display:flex;flex-wrap:wrap;gap:6px}.nb-reader-chip{font-size:12px;background:#fff;border:1px solid #E5E8EB;border-radius:20px;padding:3px 10px;color:#191f28}.nb-actions{display:flex;gap:8px;align-items:center}.nb-action-pin{font-size:12px;font-weight:600;padding:7px 12px;border-radius:8px;border:1px solid #E5E8EB;background:#fff;color:#4e5968;flex:1}.nb-action-edit{font-size:12px;font-weight:600;padding:7px 14px;border-radius:8px;border:1.5px solid #191F28;background:none;color:#191f28}.nb-action-delete{font-size:12px;font-weight:600;padding:7px 14px;border-radius:8px;border:1.5px solid #F04452;background:none;color:#f04452}.nb-delete-confirm{display:flex;align-items:center;gap:6px;font-size:12px;color:#991b1b;font-weight:600}.nb-action-delete-yes{padding:5px 10px;border-radius:6px;background:#f04452;color:#fff;border:none;font-size:12px;font-weight:600}.nb-action-delete-no{padding:5px 10px;border-radius:6px;background:none;border:1px solid #E5E8EB;color:#8b95a1;font-size:12px}.nb-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:150;display:flex;align-items:flex-end;justify-content:center}.nb-modal{background:#fff;border-radius:20px 20px 0 0;width:100%;max-width:480px;max-height:90vh;display:flex;flex-direction:column}.nb-modal-header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px 12px;border-bottom:1px solid #E5E8EB}.nb-modal-header h2{font-size:17px;font-weight:700;color:#191f28}.nb-modal-close{font-size:18px;color:#8b95a1;background:none;border:none;padding:4px}.nb-modal-body{padding:16px 20px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:4px}.nb-form-label{font-size:12px;font-weight:600;color:#8b95a1;margin-top:10px;margin-bottom:6px;display:block}.nb-cat-row,.nb-target-row{display:flex;gap:6px;flex-wrap:wrap}.nb-cat-btn,.nb-target-btn{padding:6px 12px;border-radius:20px;font-size:13px;font-weight:600;border:1.5px solid #E5E8EB;background:#f2f4f6;color:#8b95a1}.nb-cat-btn.active,.nb-target-btn.active{border-color:#191f28;background:#191f28;color:#fff}.nb-form-input{width:100%;padding:12px 14px;border-radius:12px;border:none;font-size:14px;background:#f2f4f6;color:#191f28;box-sizing:border-box}.nb-form-textarea{width:100%;padding:12px 14px;border-radius:12px;border:none;font-size:14px;background:#f2f4f6;color:#191f28;resize:vertical;font-family:inherit;line-height:1.6;box-sizing:border-box}.nb-form-input:focus,.nb-form-textarea:focus{outline:2px solid #191F28;outline-offset:-2px}.nb-modal-footer{padding:12px 20px 20px}.nb-submit-btn{width:100%;padding:14px;background:#191f28;color:#fff;border:none;border-radius:14px;font-size:15px;font-weight:700}.nb-submit-btn:disabled{opacity:.35}.leg-open{background:#e2e8f0}.ts-lesson-list{display:flex;flex-direction:column;gap:8px}.ts-lesson-item{display:flex;align-items:center;gap:12px;width:100%;padding:14px 16px;border-radius:12px;border:1px solid var(--color-border);text-align:left;cursor:pointer;transition:filter .12s}.ts-lesson-item:hover{filter:brightness(.96)}.ts-open{background:#fff}.ts-pending{background:#f2f4f6}.ts-confirmed{background:#dcfce7}.ts-auto_cancelled{background:#fee2e2}.ts-rejected,.ts-cancelled{background:#f1f5f9}.ts-time{display:flex;align-items:center;gap:3px;font-size:14px;font-weight:700;color:var(--color-text);min-width:110px}.ts-time-sep{font-weight:400;color:var(--color-text-secondary)}.ts-student{flex:1;font-size:14px;font-weight:600;color:var(--color-text)}.ts-badge{font-size:11px;font-weight:700;padding:3px 10px;border-radius:20px;white-space:nowrap}.ts-badge-open{background:#f1f5f9;color:#64748b}.ts-badge-pending{background:#e5e8eb;color:#191f28}.ts-badge-confirmed{background:#4ade80;color:#14532d}.ts-badge-auto_cancelled{background:#f87171;color:#7f1d1d}.ts-badge-rejected,.ts-badge-cancelled{background:#cbd5e1;color:#475569}.booking-card{background:var(--color-surface);border-radius:12px;padding:14px 16px;margin-bottom:10px;border:1px solid var(--color-border)}.booking-top{display:flex;justify-content:space-between;align-items:flex-start}.student-name{font-size:15px;font-weight:600;color:var(--color-text);margin-bottom:3px}.booking-teacher-tag{font-size:13px;font-weight:500;color:var(--color-text-secondary)}.booking-time{font-size:13px;color:var(--color-text-secondary)}.booking-actions{display:flex;gap:8px;margin-top:12px}.btn-confirm{flex:1;padding:9px;background:var(--color-primary);color:#fff;border-radius:8px;font-size:14px;font-weight:600}.btn-reject{flex:1;padding:9px;background:#fee2e2;color:#991b1b;border-radius:8px;font-size:14px;font-weight:600}.lj-summary-row{display:flex;gap:10px;margin-bottom:20px}.lj-summary-card{flex:1;background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;padding:14px 0;display:flex;flex-direction:column;align-items:center;gap:4px}.lj-summary-card.accent{background:var(--color-primary);border-color:var(--color-primary)}.lj-summary-card.accent .lj-summary-num,.lj-summary-card.accent .lj-summary-label{color:#fff}.lj-summary-num{font-size:26px;font-weight:800;color:var(--color-text);line-height:1}.lj-summary-label{font-size:11px;font-weight:600;color:var(--color-text-secondary)}.lj-section{font-size:13px;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.02em;margin-bottom:8px}.lj-item{display:flex;align-items:center;gap:12px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;padding:14px 16px;margin-bottom:8px}.lj-date-col{display:flex;flex-direction:column;gap:2px;min-width:100px}.lj-date{font-size:14px;font-weight:600;color:var(--color-text)}.lj-time{font-size:12px;color:var(--color-text-secondary)}.lj-name{flex:1;font-size:14px;font-weight:600;color:var(--color-text)}.lj-empty{text-align:center;color:var(--color-text-muted);font-size:14px;padding:40px 0}.lj-name-col{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.lj-song-preview{font-size:12px;color:var(--color-accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lj-actions{flex-shrink:0}.lj-write-btn{font-size:12px;font-weight:700;padding:6px 12px;border-radius:8px;white-space:nowrap}.lj-write-btn.btn-write{background:var(--color-primary);color:#fff}.lj-write-btn.btn-edit{background:var(--color-accent);color:#fff}.lj-badge{font-size:11px;font-weight:700;padding:3px 10px;border-radius:20px}.badge-noshow{background:#fee2e2;color:#dc2626}.lj-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:100;padding:16px}.lj-modal{background:var(--color-surface);border-radius:16px;padding:24px;width:100%;max-width:360px}.lj-modal-header{display:flex;align-items:center;justify-content:space-between;font-size:16px;font-weight:700;color:var(--color-text);margin-bottom:16px}.lj-modal-close{width:28px;height:28px;border-radius:50%;background:var(--color-bg);color:var(--color-text-secondary);font-size:14px;display:flex;align-items:center;justify-content:center;border:1px solid var(--color-border)}.lj-modal-body{display:flex;flex-direction:column;gap:6px}.lj-modal-meta{font-size:13px;color:var(--color-text-secondary);margin-bottom:8px}.lj-modal-student{font-weight:600;color:var(--color-text)}.lj-label{font-size:12px;font-weight:600;color:var(--color-text-secondary);margin-top:6px}.lj-required{color:#ef4444}.lj-input{width:100%;padding:10px 14px;border:1px solid var(--color-border);border-radius:10px;font-size:14px;background:var(--color-bg);color:var(--color-text)}.lj-input:focus{outline:none;border-color:var(--color-accent)}.lj-error{font-size:12px;color:#ef4444}.lj-textarea{width:100%;padding:10px 14px;border:1px solid var(--color-border);border-radius:10px;font-size:14px;background:var(--color-bg);color:var(--color-text);resize:vertical;font-family:inherit}.lj-textarea:focus{outline:none;border-color:var(--color-accent)}.lj-deduct-notice{font-size:12px;color:#8b95a1;background:#f2f4f6;border-radius:8px;padding:8px 12px;margin-top:6px}.lj-modal-actions{display:flex;gap:10px;margin-top:18px}.lj-btn-cancel{flex:1;padding:11px;background:#f1f5f9;color:var(--color-text-secondary);border-radius:10px;font-size:14px;font-weight:600;border:1px solid var(--color-border)}.lj-btn-save{flex:1;padding:11px;background:var(--color-primary);color:#fff;border-radius:10px;font-size:14px;font-weight:600}.toast{position:fixed;bottom:80px;left:50%;transform:translate(-50%);background:#1e1e1eeb;color:#fff;padding:10px 20px;border-radius:20px;font-size:14px;font-weight:500;z-index:200;white-space:nowrap;pointer-events:none}.lj-hand-row{display:flex;gap:8px;margin-bottom:12px}.lj-hand-btn{flex:1;padding:8px;border-radius:8px;font-size:13px;font-weight:600;border:1.5px solid var(--color-border);background:var(--color-bg);color:var(--color-text-secondary);transition:all .15s}.lj-hand-btn.active{border-color:var(--color-primary);background:var(--color-primary);color:#fff}.lj-sticker-toggle{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500;color:var(--color-text-secondary);margin-top:12px;cursor:pointer}.lj-sticker-toggle input[type=checkbox]{width:16px;height:16px;accent-color:var(--color-primary);cursor:pointer}.lj-new-write-btn{width:100%;padding:14px;background:var(--color-primary);color:#fff;border-radius:12px;font-size:15px;font-weight:700;margin-bottom:16px;border:none}.lj-load-prev-btn{width:100%;padding:12px;background:#f2f4f6;color:#4e5968;border-radius:10px;font-size:13px;font-weight:600;margin-bottom:16px;border:1px solid var(--color-border)}.lj-datetime-row{display:flex;gap:10px;margin-bottom:4px}.lj-datetime-col{flex:1;display:flex;flex-direction:column}.lj-hw-list{display:flex;flex-direction:column;gap:8px;margin-top:6px}.lj-hw-item{display:flex;align-items:center;gap:8px}.lj-hw-num{width:22px;height:22px;border-radius:50%;background:var(--color-primary);color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.lj-hw-input{flex:1;padding:9px 12px;border:1px solid var(--color-border);border-radius:8px;font-size:13px;background:var(--color-bg);color:var(--color-text)}.lj-hw-input:focus{outline:none;border-color:var(--color-accent)}.lj-hw-remove{width:28px;height:28px;border-radius:50%;background:#fee9eb;color:#f04452;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;border:none}.lj-hw-add-btn{padding:10px;background:transparent;color:var(--color-accent);border:1.5px dashed var(--color-accent);border-radius:8px;font-size:13px;font-weight:600}.lj-hw-preview{font-size:11px;font-weight:600;color:#8b95a1}.wiz-stepper{display:flex;align-items:flex-start;justify-content:center;gap:0;margin-bottom:20px;padding:0 8px}.wiz-stepper-line{width:32px;height:2px;background:#e5e8eb;margin-top:16px;flex-shrink:0}.wiz-stepper-line.done{background:var(--color-primary)}.wiz-step-item{display:flex;flex-direction:column;align-items:center;gap:4px;background:none;border:none;padding:0 4px;cursor:default;min-width:56px}.wiz-step-item.done{cursor:pointer}.wiz-step-circle{width:32px;height:32px;border-radius:50%;background:#e5e8eb;color:#8b95a1;font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center;transition:all .2s}.wiz-step-item.current .wiz-step-circle{background:var(--color-primary);color:#fff}.wiz-step-item.done .wiz-step-circle{background:var(--color-primary);color:#fff;font-size:14px}.wiz-step-label{font-size:11px;font-weight:600;color:#b0b8c1}.wiz-step-item.current .wiz-step-label,.wiz-step-item.done .wiz-step-label{color:var(--color-primary)}.wiz-step-value{font-size:11px;font-weight:700;color:var(--color-text);max-width:72px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wiz-content-wrapper{overflow:hidden}.wiz-content{animation-duration:.3s;animation-timing-function:cubic-bezier(.25,.46,.45,.94);animation-fill-mode:both}.wiz-slide-right{animation-name:wiz-slide-from-right}.wiz-slide-left{animation-name:wiz-slide-from-left}@keyframes wiz-slide-from-right{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}@keyframes wiz-slide-from-left{0%{opacity:0;transform:translate(-40px)}to{opacity:1;transform:translate(0)}}.wiz-step-body{min-height:200px}.wiz-step-title{font-size:18px;font-weight:800;color:#191f28;margin-bottom:16px}.wiz-card-grid{display:flex;flex-direction:column;gap:12px}.wiz-select-card{display:flex;flex-direction:column;align-items:center;gap:6px;background:var(--color-surface);border:2px solid var(--color-border);border-radius:16px;padding:24px 20px;cursor:pointer;transition:border-color .15s,transform .1s;position:relative;width:100%}.wiz-select-card:active{transform:scale(.98)}.wiz-card-icon{font-size:36px;line-height:1}.wiz-card-name{font-size:17px;font-weight:700;color:#191f28}.wiz-card-desc{font-size:13px;color:#8b95a1}.wiz-card-badge{position:absolute;top:10px;right:12px;font-size:11px;font-weight:700;background:var(--color-primary);color:#fff;padding:3px 10px;border-radius:20px}.wiz-teacher-header{display:flex;align-items:center;gap:12px;margin-bottom:12px}.wiz-teacher-back{font-size:13px;font-weight:600;color:var(--color-primary);background:none;border:none;padding:0;cursor:pointer}.wiz-teacher-name{font-size:16px;font-weight:800;color:#191f28}.wiz-back-btn{font-size:13px;font-weight:600;color:var(--color-primary);background:none;border:none;padding:0;margin-bottom:12px;cursor:pointer}.wiz-card-count{position:absolute;top:10px;right:12px;font-size:12px;font-weight:700;background:var(--color-danger);color:#fff;min-width:22px;height:22px;border-radius:11px;display:flex;align-items:center;justify-content:center;padding:0 6px}.cancelled-card{opacity:.75}.rebook-area{margin-top:10px;padding-top:10px;border-top:1px solid var(--color-border);display:flex;align-items:center}.btn-rebook{font-size:12px;font-weight:700;color:var(--color-primary);background:#eef1fb;border:1px solid var(--color-primary);border-radius:8px;padding:6px 14px;cursor:pointer}.rebook-hint{font-size:12px;color:var(--color-text-muted)}.book-sheet-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:300;display:flex;align-items:flex-end}.book-sheet{width:100%;background:#fff;border-radius:24px 24px 0 0;padding:12px 20px calc(env(safe-area-inset-bottom,0px) + 24px);animation:sheet-up .28s cubic-bezier(.32,.72,0,1)}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.book-sheet-handle{width:36px;height:4px;border-radius:2px;background:#e2e8f0;margin:0 auto 20px}.book-sheet-title{font-size:17px;font-weight:800;color:#191f28;margin-bottom:16px}.book-sheet-card{display:flex;align-items:flex-start;gap:12px;background:#f2f4f6;border-radius:14px;padding:16px;margin-bottom:20px}.book-sheet-card-icon{font-size:22px;line-height:1;flex-shrink:0}.book-sheet-card-main{font-size:13px;font-weight:700;color:#191f28;margin-bottom:4px}.book-sheet-card-sub{font-size:13px;color:#4e5968;line-height:1.5}.book-sheet-agree{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:500;color:#191f28;cursor:pointer;margin-bottom:20px}.book-sheet-agree input[type=checkbox]{width:20px;height:20px;border-radius:6px;accent-color:var(--color-primary);flex-shrink:0;cursor:pointer}.book-sheet-actions{display:flex;gap:10px}.book-sheet-cancel{flex:0 0 80px;padding:14px 0;border-radius:12px;background:#f1f5f9;color:#64748b;font-size:15px;font-weight:600}.book-sheet-confirm{flex:1;padding:14px 0;border-radius:12px;background:var(--color-primary);color:#fff;font-size:15px;font-weight:700;transition:opacity .15s}.book-sheet-confirm:disabled{opacity:.35;cursor:not-allowed}.res-no-tickets-notice{display:flex;align-items:center;gap:8px;background:#fef2f2;border:1px solid #fecaca;border-radius:10px;padding:10px 14px;font-size:13px;font-weight:500;color:#991b1b;margin-bottom:14px}.res-course-badge.badge-fixed,.res-course-badge.badge-flexible{background:#fff3;color:#fff}.fixed-notice{display:flex;align-items:center;gap:8px;background:#f2f4f6;border:1px solid #E5E8EB;border-radius:10px;padding:10px 14px;font-size:13px;font-weight:500;color:#4e5968;margin-bottom:14px}.fixed-notice-icon{font-size:16px}.fixed-schedule-card{background:#f2f4f6;border:1px solid #E5E8EB;border-radius:14px;padding:14px 16px;margin-bottom:14px}.fixed-schedule-title{font-size:11px;font-weight:700;color:#8b95a1;text-transform:uppercase;letter-spacing:.04em;margin-bottom:10px}.fixed-schedule-row{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid #E5E8EB}.fixed-schedule-row:last-child{border-bottom:none}.fixed-schedule-day{font-size:13px;font-weight:700;color:#191f28;width:44px;flex-shrink:0}.fixed-schedule-time{font-size:13px;font-weight:600;color:var(--color-text);width:80px;flex-shrink:0}.fixed-schedule-meta{font-size:12px;color:var(--color-text-secondary)}.res-course-card{display:flex;align-items:center;justify-content:space-between;background:var(--color-primary);border-radius:14px;padding:14px 18px;margin-bottom:12px;color:#fff}.res-course-card.res-course-empty{background:var(--color-surface);border:1px solid var(--color-border)}.res-course-card.res-course-empty .res-course-label{color:var(--color-text-secondary);font-size:13px}.res-course-left{display:flex;flex-direction:column;gap:2px}.res-course-label{font-size:11px;font-weight:600;color:#ffffffb3;text-transform:uppercase;letter-spacing:.04em}.res-course-count{font-size:28px;font-weight:800;color:#fff;line-height:1.1}.res-course-unit{font-size:14px;font-weight:600;margin-left:2px}.res-course-period{font-size:11px;color:#ffffffa6;margin-top:2px}.res-course-badge{font-size:12px;font-weight:700;padding:5px 12px;border-radius:20px}.res-course-badge.active{background:#fff3;color:#fff}.res-course-badge.inactive{background:#ffffff1a;color:#fff9}.res-inner-tab-bar{display:flex;background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;padding:3px;margin-bottom:16px;gap:2px}.res-inner-tab{flex:1;padding:8px;border-radius:8px;font-size:14px;font-weight:600;color:var(--color-text-secondary);display:flex;align-items:center;justify-content:center;gap:6px;transition:background .15s,color .15s}.res-inner-tab.active{background:var(--color-primary);color:#fff}.res-mine-badge{background:var(--color-accent);color:#fff;font-size:10px;font-weight:700;padding:1px 6px;border-radius:10px;min-width:18px;text-align:center}.res-inner-tab.active .res-mine-badge{background:#ffffff4d}.step-label{font-size:13px;font-weight:600;color:var(--color-text-secondary);margin:16px 0 8px;text-transform:uppercase;letter-spacing:.02em}.teacher-list{display:flex;flex-direction:column;gap:8px}.teacher-card{display:flex;align-items:center;gap:12px;background:var(--color-surface);border-radius:12px;padding:12px 14px;border:2px solid var(--color-border);text-align:left;transition:border-color .15s;width:100%}.teacher-card.selected{border-color:#191f28;background:#f2f4f6}.teacher-avatar{width:40px;height:40px;border-radius:50%;background:var(--color-primary);color:#fff;font-size:16px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.teacher-info{display:flex;flex-direction:column;gap:2px;flex:1}.teacher-name{font-size:15px;font-weight:600;color:var(--color-text)}.teacher-slots{font-size:12px;color:var(--color-text-secondary)}.check-mark{color:var(--color-accent);font-size:18px;font-weight:700}.calendar-card{background:var(--color-surface);border-radius:14px;padding:16px;border:1px solid var(--color-border)}.cal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.cal-title{font-size:15px;font-weight:700;color:var(--color-text)}.cal-nav{width:32px;height:32px;border-radius:8px;background:var(--color-bg);font-size:20px;color:var(--color-text-secondary);display:flex;align-items:center;justify-content:center;border:1px solid var(--color-border)}.cal-weekdays{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:4px}.cal-wd{text-align:center;font-size:11px;font-weight:600;color:var(--color-text-muted);padding:4px 0}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.cal-day{position:relative;aspect-ratio:1;border-radius:8px;font-size:13px;font-weight:500;color:var(--color-text);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.cal-day.past{color:var(--color-text-muted)}.cal-day.has-lesson{font-weight:700;color:var(--color-primary)}.cal-day.selected{background:var(--color-primary);color:#fff}.cal-day:disabled{cursor:default}.lesson-dot{width:4px;height:4px;border-radius:50%;background:var(--color-accent)}.cal-day.selected .lesson-dot{background:#fff}.time-lesson-list{display:flex;flex-direction:column;gap:8px}.time-lesson-item{background:var(--color-surface);border-radius:12px;padding:14px 16px;display:flex;align-items:center;justify-content:space-between;border:1px solid var(--color-border)}.time-range{font-size:15px;font-weight:600;color:var(--color-text)}.btn-book{padding:8px 16px;background:var(--color-primary);color:#fff;border-radius:8px;font-size:13px;font-weight:600}.booked-label{font-size:13px;font-weight:600;color:#00b493;background:#e6f9f5;padding:6px 12px;border-radius:8px}.empty-text{text-align:center;color:var(--color-text-muted);font-size:14px;padding:20px 0}.toast{position:fixed;bottom:calc(var(--tab-bar-height) + var(--safe-area-bottom) + 16px);left:50%;transform:translate(-50%);background:#1e293b;color:#fff;padding:12px 24px;border-radius:24px;font-size:14px;font-weight:500;z-index:200;white-space:nowrap;box-shadow:0 4px 16px #0003;animation:fadeInUp .2s ease}@keyframes fadeInUp{0%{opacity:0;transform:translate(-50%) translateY(8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.res-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:flex-end;justify-content:center;z-index:300}.res-modal{background:var(--color-surface);border-radius:20px 20px 0 0;width:100%;max-width:480px;overflow:hidden;animation:slideUp .22s ease}@keyframes slideUp{0%{transform:translateY(40px);opacity:0}to{transform:translateY(0);opacity:1}}.res-modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:var(--color-primary);color:#fff;font-size:15px;font-weight:700}.res-modal-close{color:#fffc;font-size:16px;width:28px;height:28px;border-radius:50%;background:#ffffff26;display:flex;align-items:center;justify-content:center}.res-modal-body{padding:20px 20px 8px;text-align:center}.res-modal-date{font-size:18px;font-weight:700;color:var(--color-text);margin-bottom:4px}.res-modal-time{font-size:15px;color:var(--color-text-secondary);margin-bottom:16px}.res-modal-msg{font-size:14px;color:var(--color-text-secondary);padding:12px 0;border-top:1px solid var(--color-border)}.res-modal-actions{display:flex;gap:10px;padding:16px 20px 28px}.res-btn-back{flex:1;padding:13px;border-radius:12px;font-size:14px;font-weight:600;background:#f1f5f9;color:var(--color-text-secondary);border:1px solid var(--color-border)}.res-btn-cancel{flex:1;padding:13px;border-radius:12px;font-size:14px;font-weight:700;background:var(--color-danger);color:#fff}.cell-count-badge{font-size:10px;font-weight:700;color:#191f28;line-height:1}.ts-select-arrow{font-size:12px;font-weight:600;color:#8b95a1;white-space:nowrap}.section-label{font-size:13px;font-weight:600;color:var(--color-text-secondary);margin-bottom:8px;text-transform:uppercase;letter-spacing:.02em}.my-booking-card{background:var(--color-surface);border-radius:12px;padding:14px 16px;margin-bottom:10px;border:1px solid var(--color-border)}.my-booking-header{display:flex;justify-content:space-between;align-items:flex-start}.my-teacher-name{font-size:15px;font-weight:600;color:var(--color-text);margin-bottom:3px}.my-teacher-tag{font-size:13px;font-weight:500;color:var(--color-text-secondary)}.my-branch-tag{display:inline-block;font-size:11px;font-weight:600;color:var(--color-accent);background:#eff6ff;border-radius:8px;padding:1px 7px;margin-left:6px;vertical-align:middle}.my-booking-time{font-size:13px;color:var(--color-text-secondary)}.status-badge{font-size:11px;font-weight:600;padding:3px 8px;border-radius:20px;white-space:nowrap}.status-pending{background:#f2f4f6;color:#4e5968}.status-confirmed{background:#dcfce7;color:#166534}.status-cancelled{background:#f1f5f9;color:#64748b}.status-rejected{background:#fee2e2;color:#991b1b}.booking-hint{font-size:12px;margin-top:6px}.hint-pending{color:var(--color-warning)}.hint-cancelled{color:var(--color-text-muted)}.hint-locked{color:var(--color-danger);opacity:.7}.deleted-lesson{color:var(--color-danger);font-style:italic}.cancel-area{margin-top:10px;padding-top:10px;border-top:1px solid var(--color-border)}.btn-cancel-booking{font-size:12px;font-weight:600;color:var(--color-danger);background:#fff1f2;border:1px solid #fecdd3;border-radius:8px;padding:6px 14px}.confirm-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.confirm-msg{font-size:12px;font-weight:600;color:var(--color-text);flex:1;min-width:100px}.btn-confirm-yes{font-size:12px;font-weight:700;padding:6px 14px;background:var(--color-danger);color:#fff;border-radius:8px}.btn-confirm-no{font-size:12px;font-weight:600;padding:6px 14px;background:#f1f5f9;color:var(--color-text-secondary);border-radius:8px;border:1px solid var(--color-border)}.empty-state{display:flex;flex-direction:column;align-items:center;padding:60px 0;color:var(--color-text-muted)}.empty-icon{font-size:48px;margin-bottom:12px}.empty-state p{font-size:14px}.slj-summary-row{display:flex;gap:10px;margin-bottom:20px}.slj-summary-card{flex:1;background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;padding:14px 0;display:flex;flex-direction:column;align-items:center;gap:4px}.slj-summary-card.accent{background:var(--color-primary);border-color:var(--color-primary)}.slj-summary-card.accent .slj-summary-num,.slj-summary-card.accent .slj-summary-label{color:#fff}.slj-summary-num{font-size:26px;font-weight:800;color:var(--color-text);line-height:1}.slj-summary-label{font-size:11px;font-weight:600;color:var(--color-text-secondary)}.slj-section{font-size:13px;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.02em;margin-bottom:8px}.slj-item{display:flex;align-items:center;gap:12px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;padding:14px 16px;margin-bottom:8px}.slj-date-col{display:flex;flex-direction:column;gap:2px;min-width:100px}.slj-date{font-size:14px;font-weight:600;color:var(--color-text)}.slj-time{font-size:12px;color:var(--color-text-secondary)}.slj-teacher{flex:1;font-size:14px;font-weight:600;color:var(--color-accent)}.slj-badge{font-size:11px;font-weight:700;padding:3px 10px;border-radius:20px}.badge-done{background:#f1f5f9;color:var(--color-text-muted)}.badge-upcoming{background:#dbeafe;color:#1d4ed8}.slj-empty{text-align:center;color:var(--color-text-muted);font-size:14px;padding:40px 20px;line-height:1.6}.slj-log-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;padding:14px 16px;margin-bottom:10px}.slj-log-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.slj-log-date{font-size:13px;font-weight:600;color:var(--color-text)}.slj-log-time{font-size:12px;color:var(--color-text-secondary)}.slj-log-teacher{font-size:12px;font-weight:600;color:var(--color-accent)}.slj-log-song{font-size:15px;font-weight:700;color:var(--color-text);margin-bottom:4px}.slj-log-notes{font-size:13px;color:var(--color-text-secondary);line-height:1.5;white-space:pre-wrap}.slj-hw-section{margin-top:10px;padding-top:10px;border-top:1px solid var(--color-border)}.slj-hw-title{font-size:12px;font-weight:700;color:var(--color-text-secondary);margin-bottom:8px}.slj-hw-list{display:flex;flex-direction:column;gap:6px}.slj-hw-item{display:flex;align-items:center;gap:10px;padding:8px 12px;background:#f8f9fa;border-radius:8px;cursor:pointer;transition:background .15s}.slj-hw-item.done{background:#f0fdf4}.slj-hw-checkbox{width:18px;height:18px;accent-color:#10b981;cursor:pointer;flex-shrink:0}.slj-hw-text{font-size:13px;color:var(--color-text);line-height:1.4}.slj-hw-text.done{text-decoration:line-through;color:#8b95a1}.slj-hw-complete{margin-top:8px;padding:8px 12px;background:#ecfdf5;border-radius:8px;text-align:center;font-size:14px;font-weight:700;color:#059669}.slj-tab-row{display:flex;gap:0;margin-bottom:16px;background:#f2f4f6;border-radius:10px;padding:3px}.slj-tab-btn{flex:1;padding:10px;border-radius:8px;font-size:13px;font-weight:600;color:var(--color-text-secondary);background:transparent;border:none;transition:all .15s}.slj-tab-btn.active{background:#fff;color:var(--color-text);box-shadow:0 1px 3px #00000014}.slj-tab-row{display:flex;background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;padding:3px;margin-bottom:16px;gap:2px}.slj-tab-btn{flex:1;padding:9px;border-radius:8px;font-size:13px;font-weight:600;color:var(--color-text-secondary);background:transparent;transition:background .15s,color .15s}.slj-tab-btn.active{background:var(--color-primary);color:var(--on-primary, white)}.pb-guide{font-size:13px;font-weight:600;color:var(--color-text-secondary);background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;padding:10px 14px;margin-bottom:14px;text-align:center}.pb-add-btn{width:100%;padding:11px;border-radius:10px;font-size:14px;font-weight:600;color:var(--color-primary);border:1.5px dashed var(--color-primary);background:transparent;margin-bottom:14px;transition:background .15s}.pb-add-btn:active{background:var(--color-bg)}.pb-add-form{background:var(--color-surface);border:1px solid var(--color-border);border-radius:14px;padding:16px;margin-bottom:14px}.pb-add-title{font-size:14px;font-weight:700;color:var(--color-text);margin-bottom:12px}.pb-form-label{display:block;font-size:12px;font-weight:600;color:var(--color-text-secondary);margin-bottom:5px;margin-top:10px}.pb-form-label:first-of-type{margin-top:0}.pb-form-input{width:100%;padding:9px 12px;border:1px solid var(--color-border);border-radius:8px;font-size:14px;background:var(--color-bg);color:var(--color-text);font-family:inherit}.pb-form-input:focus{outline:none;border-color:var(--color-primary)}.pb-form-error{font-size:12px;color:var(--color-danger);margin-top:4px}.pb-hand-row{display:flex;gap:6px;margin-bottom:2px}.pb-hand-btn{flex:1;padding:8px;border-radius:8px;font-size:13px;font-weight:600;border:1.5px solid var(--color-border);background:var(--color-bg);color:var(--color-text-secondary);transition:all .15s}.pb-hand-btn.active{border-color:var(--color-primary);background:var(--color-primary);color:var(--on-primary, white)}.pb-form-actions{display:flex;gap:8px;margin-top:14px}.pb-form-cancel{flex:1;padding:10px;border-radius:8px;font-size:13px;font-weight:600;background:var(--color-bg);color:var(--color-text-secondary);border:1px solid var(--color-border)}.pb-form-save{flex:2;padding:10px;border-radius:8px;font-size:13px;font-weight:700;background:var(--color-primary);color:var(--on-primary, white)}.pb-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:16px;padding:14px 14px 12px;margin-bottom:12px}.pb-card-done{border-color:#22c55e;background:#f0fdf4}.pb-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.pb-created-by{font-size:11px;font-weight:600;color:var(--color-accent);margin-bottom:8px;display:block}.pb-card-header-left{display:flex;align-items:center;gap:8px;flex-wrap:wrap;flex:1;min-width:0}.pb-date-badge{font-size:11px;font-weight:700;background:#e5e8eb;color:#191f28;border-radius:6px;padding:2px 7px;flex-shrink:0}.pb-song{font-size:14px;font-weight:700;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pb-hand-badge{font-size:10px;font-weight:700;padding:2px 7px;border-radius:6px;flex-shrink:0}.pb-hand-badge.hand-right{background:#dbeafe;color:#1e40af}.pb-hand-badge.hand-left{background:#fce7f3;color:#9d174d}.pb-hand-badge.hand-both{background:#d1fae5;color:#065f46}.pb-fruit-icon{font-size:22px;flex-shrink:0;margin-left:6px}.pb-sticker-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-bottom:10px}.pb-sticker-cell{aspect-ratio:1;border-radius:10px;border:2px solid var(--color-border);background:var(--color-bg);font-size:20px;display:flex;align-items:center;justify-content:center;transition:transform .1s,border-color .15s;cursor:pointer}.pb-sticker-cell.filled{border-color:#8b95a1;background:#f2f4f6}.pb-sticker-cell:not(.filled):active{transform:scale(.9)}.pb-sticker-cell:disabled{cursor:default}.pb-card-footer{display:flex;align-items:center;justify-content:space-between}.pb-footer-left{display:flex;align-items:center;gap:8px}.pb-memo-toggle{font-size:12px;font-weight:600;color:var(--color-text-secondary);padding:4px 8px;border-radius:6px;background:var(--color-bg);border:1px solid var(--color-border)}.pb-delete-btn{font-size:11px;color:var(--color-text-muted);padding:4px 8px;border-radius:6px;background:transparent;border:1px solid var(--color-border)}.pb-delete-confirm{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--color-text-secondary)}.pb-delete-yes{font-size:12px;font-weight:700;color:#fff;background:var(--color-danger);border-radius:6px;padding:3px 10px}.pb-delete-no{font-size:12px;font-weight:600;color:var(--color-text-secondary);background:var(--color-bg);border:1px solid var(--color-border);border-radius:6px;padding:3px 10px}.pb-progress{font-size:13px;font-weight:700;color:var(--color-text-secondary)}.pb-progress.done{color:#22c55e;font-size:14px}.pb-memo-text{font-size:13px;color:var(--color-text-secondary);background:var(--color-bg);border-radius:8px;padding:8px 10px;margin-top:8px;line-height:1.5}.pb-memo-content{white-space:pre-wrap;margin-bottom:6px}.pb-memo-edit-btn{font-size:11px;font-weight:600;color:var(--color-primary);background:transparent;padding:0}.pb-memo-write-btn{font-size:12px;font-weight:600;color:var(--color-primary);background:transparent;padding:0;width:100%;text-align:left}.pb-memo-edit{margin-top:8px}.pb-memo-input{width:100%;padding:8px 10px;border:1px solid var(--color-border);border-radius:8px;font-size:13px;background:var(--color-bg);color:var(--color-text);font-family:inherit;resize:none;line-height:1.5}.pb-memo-input:focus{outline:none;border-color:var(--color-primary)}.pb-memo-actions{display:flex;gap:8px;margin-top:8px}.met-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;z-index:9000;display:flex;align-items:flex-end;justify-content:center;animation:met-fade-in .2s ease}@keyframes met-fade-in{0%{opacity:0}to{opacity:1}}.met-panel{width:100%;max-width:500px;background:#fff;border-radius:20px 20px 0 0;padding:20px 20px calc(var(--tab-bar-height, 60px) + var(--safe-area-bottom, 0px) + 16px);display:flex;flex-direction:column;align-items:center;gap:14px;animation:met-slide-up .25s ease}@keyframes met-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.met-panel-header{display:flex;justify-content:space-between;align-items:center;width:100%}.met-title{font-size:17px;font-weight:700;color:#191f28}.met-close-btn{width:32px;height:32px;border-radius:50%;border:none;background:#f2f4f6;font-size:15px;color:#8b95a1;display:flex;align-items:center;justify-content:center;cursor:pointer}.met-bpm-display{display:flex;align-items:center;gap:20px}.met-bpm-btn{width:40px;height:40px;border-radius:50%;border:1.5px solid #E5E8EB;background:#fff;font-size:20px;font-weight:600;color:#191f28;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s;line-height:1}.met-bpm-btn:active{background:#e5e8eb}.met-bpm-center{display:flex;flex-direction:column;align-items:center;min-width:72px}.met-bpm-number{font-size:44px;font-weight:800;color:#191f28;line-height:1}.met-bpm-label{font-size:12px;font-weight:600;color:#8b95a1;margin-top:2px}.met-slider-wrap{display:flex;align-items:center;gap:8px;width:100%}.met-slider-edge{font-size:11px;color:#b0b8c1;font-weight:500;min-width:22px;text-align:center}.met-slider{flex:1;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:5px;background:#e5e8eb;border-radius:3px;outline:none}.met-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:20px;height:20px;border-radius:50%;background:#191f28;cursor:pointer;border:3px solid #FFFFFF;box-shadow:0 1px 4px #00000026}.met-slider::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:#191f28;cursor:pointer;border:3px solid #FFFFFF;box-shadow:0 1px 4px #00000026}.met-sound-row{display:flex;gap:6px;width:100%}.met-sound-btn{flex:1;padding:8px 0;border-radius:10px;border:1.5px solid #E5E8EB;background:#f2f4f6;font-size:13px;font-weight:600;color:#8b95a1;cursor:pointer;transition:all .15s}.met-sound-btn.active{background:#191f28;color:#fff;border-color:#191f28}.met-sound-btn:active{transform:scale(.96)}.met-row-group{display:flex;flex-direction:column;align-items:center;gap:8px;width:100%}.met-sig-row{display:flex;gap:6px}.met-sig-btn{padding:7px 16px;border-radius:18px;border:1.5px solid #E5E8EB;background:#fff;font-size:13px;font-weight:600;color:#8b95a1;cursor:pointer;transition:all .15s}.met-sig-btn.active{background:#191f28;color:#fff;border-color:#191f28}.met-sig-btn:active{transform:scale(.95)}.met-sub-row{display:flex;gap:6px}.met-sub-btn{padding:6px 14px;border-radius:16px;border:1.5px solid #E5E8EB;background:#f2f4f6;font-size:13px;font-weight:600;color:#b0b8c1;cursor:pointer;transition:all .15s}.met-sub-btn.active{background:#4e5968;color:#fff;border-color:#4e5968}.met-sub-btn:active{transform:scale(.95)}.met-beats{display:flex;gap:12px;padding:4px 0;flex-wrap:wrap;justify-content:center}.met-beat-group{display:flex;flex-direction:column;align-items:center;gap:4px}.met-beat-dot{width:22px;height:22px;border-radius:50%;background:#e5e8eb;transition:background .08s,transform .08s}.met-beat-dot.active{background:#c4c9d4;transform:scale(1.25)}.met-beat-dot.accent{background:#191f28;transform:scale(1.35)}.met-sub-dots{display:flex;gap:3px;justify-content:center}.met-sub-dot{width:8px;height:8px;border-radius:50%;background:#e5e8eb;transition:background .06s,transform .06s}.met-sub-dot.active{background:#8b95a1;transform:scale(1.3)}.met-action-row{display:flex;gap:8px;width:100%}.met-play-btn{flex:2;padding:14px;border-radius:12px;border:1.5px solid #E5E8EB;background:#fff;color:#191f28;font-size:16px;font-weight:700;cursor:pointer;transition:all .15s}.met-play-btn.playing{background:#191f28;color:#fff;border-color:#191f28}.met-play-btn:active{transform:scale(.97)}.met-tap-btn{flex:1;padding:14px 8px;border-radius:12px;border:1.5px dashed #C4C9D4;background:transparent;color:#8b95a1;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s}.met-tap-btn:active{background:#e5e8eb;border-color:#8b95a1}.met-trigger-btn{border-radius:10px;border:1.5px solid #E5E8EB;background:#f2f4f6;color:#191f28;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;transition:all .15s;padding:6px 10px 4px;line-height:1;gap:2px}.met-trigger-label{font-size:9px;font-weight:600;letter-spacing:-.02em}.met-trigger-btn.is-playing{background:#191f28;border-color:#191f28;color:#fff}.met-trigger-btn .met-needle-g{transform-origin:70px 95px}.met-trigger-btn.is-playing .met-needle-g{animation:met-swing var(--swing-duration, .6s) ease-in-out infinite alternate}@keyframes met-swing{0%{transform:rotate(-30deg)}to{transform:rotate(30deg)}}.ci-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;gap:12px;text-align:center;color:var(--color-text-secondary);font-size:14px;line-height:1.6}.ci-empty-icon{font-size:48px}.ci-ticket-card{background:var(--color-primary);border-radius:16px;padding:20px 20px 18px;margin-bottom:20px;color:#fff}.ci-ticket-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.ci-ticket-label{font-size:13px;font-weight:600;opacity:.8}.ci-active-badge{font-size:11px;font-weight:700;padding:3px 10px;border-radius:20px}.ci-active-badge.active{background:#ffffff40;color:#fff}.ci-active-badge.inactive{background:#ffffff1f;color:#fff9}.ci-ticket-count{display:flex;align-items:baseline;gap:4px}.ci-count-num{font-size:52px;font-weight:800;line-height:1}.ci-count-unit{font-size:22px;font-weight:600;opacity:.85}.ci-period{font-size:15px;opacity:.85;margin-top:8px}.ci-section-label{font-size:13px;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.02em;margin-bottom:10px}.ci-no-lessons{text-align:center;color:var(--color-text-muted);font-size:14px;padding:24px 0}.ci-lesson-list{display:flex;flex-direction:column;gap:8px}.ci-lesson-item{background:var(--color-surface);border-radius:12px;padding:14px 16px;display:flex;align-items:center;justify-content:space-between;border:1px solid var(--color-border)}.ci-lesson-info{display:flex;flex-direction:column;gap:2px}.ci-lesson-date{font-size:14px;font-weight:600;color:var(--color-text)}.ci-lesson-time{font-size:12px;color:var(--color-text-secondary)}.ci-lesson-teacher{font-size:13px;font-weight:600;color:var(--color-accent)}.ci-stats-row{display:flex;align-items:center;background:var(--color-surface);border:1px solid var(--color-border);border-radius:14px;padding:16px 0;margin-bottom:20px}.ci-stat-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px}.ci-stat-num{font-size:22px;font-weight:800;color:var(--color-text)}.ci-stat-label{font-size:11px;font-weight:600;color:var(--color-text-secondary)}.ci-stat-divider{width:1px;height:36px;background:var(--color-border)}.ci-ticket-card.holding{background:#78716c}.ci-ticket-top-left{display:flex;flex-direction:column;gap:4px}.ci-course-type-badge{font-size:10px;font-weight:700;background:#fff3;color:#fff;padding:2px 7px;border-radius:20px;width:fit-content}.ci-hold-badge{font-size:11px;font-weight:700;background:#f2f4f6;color:#4e5968;padding:2px 8px;border-radius:20px}.ci-hold-extended{font-size:11px;opacity:.7;margin-left:4px}.ci-hold-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:14px;padding:14px 16px;margin-bottom:20px;display:flex;flex-direction:column;gap:10px}.ci-hold-header{display:flex;justify-content:space-between;align-items:center}.ci-hold-title{font-size:14px;font-weight:700;color:var(--color-text)}.ci-hold-remain{font-size:13px;font-weight:600;color:var(--color-primary)}.ci-hold-remain-sub{font-weight:400;color:var(--color-text-secondary)}.ci-hold-msg{font-size:13px;color:var(--color-primary);font-weight:600;text-align:center;background:#e8ecf5;padding:8px 12px;border-radius:8px}.ci-hold-active-info{display:flex;justify-content:space-between;font-size:13px;color:var(--color-text-secondary)}.ci-hold-active-date{font-weight:600;color:#4e5968}.ci-hold-notice{font-size:12px;color:var(--color-text-muted);background:#f2f4f6;padding:7px 10px;border-radius:8px}.ci-hold-apply-btn{width:100%;padding:11px;border-radius:10px;font-size:14px;font-weight:700;background:#8b95a1;color:#fff;border:none}.ci-hold-cancel-btn{width:100%;padding:10px;border-radius:10px;font-size:13px;font-weight:600;background:none;border:1.5px solid var(--color-border);color:var(--color-text-secondary)}.ci-hold-exhausted{font-size:13px;color:var(--color-text-muted);text-align:center;padding:4px 0}.ci-hold-confirm-box{background:var(--color-bg);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:10px}.ci-hold-confirm-msg{font-size:13px;color:var(--color-text);line-height:1.6;white-space:pre-line}.ci-hold-confirm-btns{display:flex;gap:8px}.ci-hold-confirm-no{flex:1;padding:9px;border-radius:8px;font-size:13px;font-weight:600;border:1px solid var(--color-border);color:var(--color-text-secondary);background:var(--color-surface)}.ci-hold-confirm-yes{flex:1;padding:9px;border-radius:8px;font-size:13px;font-weight:700;background:var(--color-primary);color:#fff;border:none}.ci-hold-history{border-top:1px solid var(--color-border);padding-top:8px;display:flex;flex-direction:column;gap:4px}.ci-hold-history-item{display:flex;align-items:center;gap:8px;font-size:12px}.ci-hold-history-date{color:var(--color-text-secondary);flex:1}.ci-hold-history-days{font-weight:600;color:var(--color-text)}.ci-hold-history-status.completed{color:#16a34a;font-weight:600}.ci-hold-history-status.cancelled{color:var(--color-text-muted)}.ci-history-list{display:flex;flex-direction:column;gap:8px}.ci-history-item{background:var(--color-surface);border-radius:12px;padding:12px 16px;display:flex;align-items:center;justify-content:space-between;border:1px solid var(--color-border)}.ci-history-info{display:flex;flex-direction:column;gap:2px}.ci-history-reason{font-size:13px;font-weight:600;color:var(--color-text)}.ci-history-date{font-size:12px;color:var(--color-text-secondary)}.ci-history-count{font-size:14px;font-weight:700;flex-shrink:0}.nb-filter-row{display:flex;gap:8px;margin-bottom:16px}.nb-filter-btn{display:flex;align-items:center;gap:5px;padding:7px 16px;border-radius:20px;font-size:13px;font-weight:600;border:1.5px solid var(--color-border);background:var(--color-bg);color:var(--color-text-secondary)}.nb-filter-btn.active{border-color:var(--color-primary);color:var(--color-primary);background:#eef1fb}.nb-filter-badge{background:var(--color-danger);color:#fff;font-size:10px;font-weight:700;min-width:16px;height:16px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;padding:0 4px}.nb-empty{display:flex;flex-direction:column;align-items:center;gap:10px;padding:60px 20px;color:var(--color-text-secondary);font-size:14px}.nb-empty-icon{font-size:40px}.nb-list{display:flex;flex-direction:column;gap:10px}.nb-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:14px;padding:14px 16px;cursor:pointer;transition:box-shadow .15s}.nb-card-pinned{border-color:var(--color-primary);background:#f0f3ff}.nb-card-unread{border-color:var(--color-accent)}.nb-card-top{display:flex;align-items:flex-start;gap:12px}.nb-cat-icon{font-size:22px;flex-shrink:0;margin-top:1px}.nb-card-info{flex:1;min-width:0}.nb-card-title-row{display:flex;align-items:center;gap:6px;margin-bottom:5px}.nb-pin-badge{font-size:13px;flex-shrink:0}.nb-unread-dot{width:8px;height:8px;border-radius:50%;background:var(--color-accent);flex-shrink:0}.nb-card-title{font-size:15px;font-weight:700;color:var(--color-text);word-break:break-all}.nb-card-unread .nb-card-title{color:var(--color-primary)}.nb-card-meta{display:flex;align-items:center;gap:8px}.nb-target-badge{font-size:11px;font-weight:600;background:#e8ecf5;color:var(--color-primary);padding:2px 8px;border-radius:20px}.nb-card-date{font-size:12px;color:var(--color-text-muted)}.nb-chevron{font-size:10px;color:var(--color-text-muted);margin-top:4px;flex-shrink:0}.nb-detail{margin-top:14px;padding-top:14px;border-top:1px solid var(--color-border)}.nb-detail-content{font-size:14px;color:var(--color-text);line-height:1.7;white-space:pre-line;max-height:50vh;overflow-y:auto}.nb-detail-images{display:flex;flex-direction:column;gap:8px;margin-top:12px}.nb-detail-image{width:100%;border-radius:10px;object-fit:contain}.inp-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:300;display:flex;align-items:center;justify-content:center;padding:24px}.inp-modal{background:var(--color-surface);border-radius:20px;width:100%;max-width:360px;padding:24px 22px 20px;display:flex;flex-direction:column;gap:12px}.inp-header{display:flex;align-items:center;gap:8px}.inp-icon{font-size:20px}.inp-label{font-size:13px;font-weight:700;color:#dc2626;flex:1}.inp-count{font-size:12px;color:var(--color-text-muted)}.inp-title{font-size:18px;font-weight:800;color:var(--color-text);line-height:1.3}.inp-content{font-size:14px;color:var(--color-text);line-height:1.7;white-space:pre-line;background:var(--color-bg);border-radius:12px;padding:14px}.inp-footer{display:flex;gap:8px;margin-top:4px}.inp-btn-skip{flex:1;padding:12px;border-radius:12px;border:1px solid var(--color-border);background:none;color:var(--color-text-secondary);font-size:14px;font-weight:600}.inp-btn-ok{flex:2;padding:12px;border-radius:12px;border:none;background:var(--color-primary);color:#fff;font-size:14px;font-weight:700}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}:root{--color-primary: #191F28;--color-primary-light: #333D4B;--color-primary-dark: #111111;--color-accent: #333D4B;--color-accent-light: #4E5968;--color-bg: #F2F4F6;--color-surface: #ffffff;--color-border: #E5E8EB;--color-text: #191F28;--color-text-secondary: #8B95A1;--color-text-muted: #B0B8C1;--color-success: #00B493;--color-warning: #FF6B00;--color-danger: #F04452;--tab-bar-height: 64px;--header-height: 56px;--safe-area-bottom: env(safe-area-inset-bottom, 0px)}html,body{height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans KR,sans-serif;background-color:var(--color-bg);color:var(--color-text);overflow:hidden}#root{height:100%;max-width:480px;margin:0 auto;position:relative;background-color:var(--color-bg);box-shadow:0 0 40px #0000001a}button{cursor:pointer;border:none;background:none;font-family:inherit}input{font-family:inherit}a{text-decoration:none;color:inherit}.page-container{height:100%;display:flex;flex-direction:column;overflow:hidden}.page-header{background:#fff;color:#191f28;display:flex;align-items:center;padding:0 16px;flex-shrink:0}.page-header h1{font-size:18px;font-weight:600}.page-content{flex:1;overflow-y:auto;padding:16px;padding-bottom:calc(var(--tab-bar-height) + var(--safe-area-bottom) + 16px)}.page-content::-webkit-scrollbar{display:none}.placeholder-card{background:var(--color-surface);border-radius:12px;padding:32px 24px;text-align:center;color:var(--color-text-secondary);border:1px dashed var(--color-border);margin-top:24px}.branch-tabs{display:flex;gap:6px;margin-bottom:12px}.branch-tab{flex:1;padding:8px 12px;border-radius:20px;font-size:13px;font-weight:600;color:var(--color-text-secondary);border:1.5px solid var(--color-border);background:var(--color-surface);transition:all .15s}.branch-tab.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.placeholder-card .icon{font-size:48px;margin-bottom:12px}.placeholder-card p{font-size:14px;line-height:1.6}
