*,:after,:before{box-sizing:border-box}:root{color-scheme:light;--bg:#fbf7ee;--fg:#1c1a14;--muted:#807a6b;--subtle:#b3aa97;--border:#ebe5d4;--border-strong:#ddd5be;--surface:#f3eedc;--accent:#18181b;--accent-fg:#ffffff;--danger:#dc2626;--success:#16a34a;--pending:#d97706;--radius:12px;--radius-sm:8px;--shadow-sheet:0 -10px 32px rgba(20,20,25,0.08);--shadow-fab:0 6px 18px rgba(20,20,25,0.12);--ease:cubic-bezier(0.32,0.72,0,1);--font:"Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Segoe UI",Roboto,sans-serif}body,html{margin:0;padding:0;background:var(--bg);color:var(--fg);font-family:var(--font);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased;letter-spacing:-.005em;text-rendering:optimizeLegibility}body{min-height:100dvh}button{background:none;border:0;cursor:pointer;padding:0}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}.shell{max-width:560px;margin:0 auto;padding:16px 18px 120px;min-height:100dvh}.topbar{display:flex;align-items:center;justify-content:space-between;padding:4px 0 14px}.brand{font-size:17px;font-weight:600;letter-spacing:-.01em}.topbar.greeting{align-items:flex-start;padding:14px 0 18px;gap:12px}.greeting-text{flex:1 1;min-width:0}.greeting-line{margin:0 0 4px;font-size:19px;font-weight:400;letter-spacing:-.015em;line-height:1.3;color:var(--fg);word-break:keep-all;overflow-wrap:anywhere;text-wrap:pretty}.greeting-line strong{font-weight:700}.greeting-line .muted{color:var(--fg)}.wave{display:inline-block;transform-origin:70% 70%;animation:wave 1.6s ease-in-out 1}@keyframes wave{0%,60%,to{transform:rotate(0deg)}10%,30%{transform:rotate(14deg)}20%,40%{transform:rotate(-8deg)}}.greeting-sub{margin:0;font-size:12px;color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:999px;color:var(--muted);transition:background .18s var(--ease),color .18s var(--ease),transform .18s var(--ease)}.icon-btn:hover{background:var(--surface);color:var(--fg)}.icon-btn:active{transform:scale(.92)}.icon-btn.danger:hover{color:var(--danger)}.tab-strip{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 12px;margin:0 -2px;scrollbar-width:none}.tab-strip::-webkit-scrollbar{display:none}.student-tab{flex:0 0 auto;padding:8px 14px;border-radius:999px;border:1px solid var(--border);color:var(--muted);font-size:14px;font-weight:500;white-space:nowrap;transition:background .18s var(--ease),color .18s var(--ease),border-color .18s var(--ease),transform .18s var(--ease)}.student-tab:active{transform:scale(.96)}.student-tab:hover{border-color:var(--border-strong);color:var(--fg)}.student-tab.active{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}.tab-add{flex:0 0 auto;width:36px;height:36px;border-radius:999px;border:1px dashed var(--border-strong);color:var(--muted);display:inline-flex;align-items:center;justify-content:center}.tab-add:hover{color:var(--fg);border-color:var(--fg)}.student-head{padding:18px 0 12px;display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.student-name{font-size:26px;font-weight:700;letter-spacing:-.02em;margin:0 0 6px;word-break:keep-all;overflow-wrap:anywhere;text-wrap:pretty;min-width:0}.student-meta{color:var(--muted);font-size:14px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.student-meta strong{color:var(--fg);font-weight:600}.dot{display:inline-block;width:3px;height:3px;background:var(--subtle)}.dot,.month-pill{border-radius:999px}.month-pill{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;background:var(--surface);color:var(--fg);font-size:13px;font-weight:500}.month-pill:hover{background:var(--border)}.view-content{animation:view-fade .22s var(--ease)}@keyframes view-fade{0%{opacity:0;transform:translateY(4px)}}.divider{height:1px;background:var(--border);margin:8px 0 0}.lesson-item,.lesson-list{display:flex;flex-direction:column}.lesson-item{padding:16px 2px;border-bottom:1px solid var(--border);gap:6px;cursor:pointer;transition:background .2s var(--ease)}.lesson-item:hover{background:var(--surface)}.lesson-item .row1{display:flex;align-items:center;justify-content:space-between;gap:10px}.lesson-date{font-size:13px;color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;gap:6px;flex-wrap:wrap}.lesson-date,.lesson-status{display:inline-flex;align-items:center}.lesson-status{font-size:11px;font-weight:700;padding:1px 7px;border-radius:999px;letter-spacing:.02em}.lesson-status.scheduled{background:#e0f2fe;color:#0369a1}.lesson-status.cancelled{background:#fee2e2;color:var(--danger)}.lesson-status.noshow{background:#fef3c7;color:#b45309}.lesson-item.is-cancelled .lesson-content,.lesson-item.is-scheduled .lesson-content{color:var(--muted)}.lesson-item.is-cancelled .lesson-content{text-decoration:line-through}.lesson-content{font-size:15px;color:var(--fg);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.hw-badge{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--muted)}.hw-badge .hw-dot{width:6px;height:6px;border-radius:999px;background:var(--subtle)}.hw-badge.pending .hw-dot{background:var(--pending)}.hw-badge.done .hw-dot{background:var(--success)}.hw-badge.done{color:var(--success)}.hw-badge.pending{color:var(--pending)}.lesson-detail{padding:12px 18px 18px;border-bottom:1px solid var(--border);background:var(--surface);margin:0 -18px;animation:expand-down .24s var(--ease);transform-origin:top}@keyframes expand-down{0%{opacity:0;transform:translateY(-6px)}}.lesson-detail .body{white-space:pre-wrap;font-size:15px;color:var(--fg);margin:4px 0 12px}.lesson-detail .hw-block{border-left:2px solid var(--border-strong);padding:4px 0 4px 12px;margin:0 0 14px;color:var(--muted);font-size:14px;white-space:pre-wrap}.lesson-detail .hw-block strong{color:var(--fg);display:block;font-weight:600;margin-bottom:2px;font-size:12px;letter-spacing:.04em;text-transform:uppercase}.lesson-detail .actions{display:flex;gap:6px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 14px;border-radius:var(--radius-sm);font-size:14px;font-weight:500;background:var(--fg);color:var(--accent-fg);transition:opacity .18s var(--ease),transform .18s var(--ease),background .18s var(--ease)}.btn:hover{opacity:.88}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.ghost{background:transparent;color:var(--fg);border:1px solid var(--border)}.btn.ghost:hover{background:var(--surface);opacity:1}.btn.subtle{background:var(--surface);color:var(--fg)}.btn.subtle:hover{background:var(--border);opacity:1}.btn.danger{background:transparent;color:var(--danger);border:1px solid var(--border)}.btn.danger:hover{background:#fef2f2;border-color:#fecaca;opacity:1}.btn.full{width:100%}.btn.detail-btn{height:32px;padding:0 12px;font-size:13px}.btn.kakao{background:#fee500;color:#181600}.btn.kakao:hover{opacity:1;background:#fdd835}.onboarding-card{display:flex;gap:12px;padding:14px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);margin:6px 0 12px;animation:slide-up .32s var(--ease)}.onboarding-icon{flex:0 0 auto;font-size:22px;margin-top:1px}.onboarding-body{flex:1 1;display:flex;flex-direction:column;gap:2px}.onboarding-body strong{font-size:14px;font-weight:600}.onboarding-body p{font-size:13px;margin:0}.today-card{margin:8px 0 10px;padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg)}.today-card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.today-tag{font-size:11px;font-weight:700;letter-spacing:.04em;padding:2px 8px;border-radius:999px;background:var(--fg);color:var(--accent-fg)}.today-list{display:flex;flex-direction:column;gap:2px}.today-row{display:flex;align-items:center;gap:12px;padding:8px 4px;width:100%;text-align:left;border-radius:var(--radius-sm);transition:background .18s var(--ease)}.today-row:hover{background:var(--surface)}.today-time{font-size:14px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;flex:0 0 auto;width:48px}.today-color{flex:0 0 auto;width:6px;height:18px;border-radius:3px}.today-info{flex:1 1;font-size:13px}.add-lesson-row,.today-info{color:var(--muted);display:flex;align-items:center}.add-lesson-row{justify-content:center;width:100%;padding:18px 0;border-bottom:1px solid var(--border);transition:color .12s,background .12s}.add-lesson-row:hover{color:var(--fg);background:var(--surface)}.fab{position:fixed;right:max(20px,calc((100vw - 560px) / 2 + 20px));bottom:24px;width:56px;height:56px;border-radius:999px;background:var(--fg);color:var(--accent-fg);display:inline-flex;align-items:center;justify-content:center;box-shadow:var(--shadow-fab);transition:transform .2s var(--ease),box-shadow .2s var(--ease);z-index:50}.fab:hover{transform:scale(1.04)}.fab:active{transform:scale(.96)}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field label{font-size:12px;font-weight:600;color:var(--muted);letter-spacing:.02em}.input,.select,.textarea{width:100%;padding:10px 12px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg);color:var(--fg);outline:none;transition:border-color .12s;font-size:16px}.input:focus,.select:focus,.textarea:focus{border-color:var(--fg);box-shadow:0 0 0 4px rgba(24,24,27,.06)}.textarea{resize:vertical;min-height:100px;font-family:inherit;line-height:1.55}.textarea.compact{min-height:64px}.view-toggle{background:var(--surface);padding:2px}.view-toggle,.view-toggle button{display:inline-flex;border-radius:999px}.view-toggle button{align-items:center;justify-content:center;width:30px;height:26px;color:var(--muted);transition:background .12s,color .12s}.view-toggle button.on{background:var(--bg);color:var(--fg);box-shadow:0 1px 2px rgba(0,0,0,.06)}.calendar,.week-view{margin-top:8px}.week-head{display:grid;grid-template-columns:36px repeat(7,1fr);border-bottom:1px solid var(--border);position:-webkit-sticky;position:sticky;top:0;background:var(--bg);z-index:5}.week-time-spacer{width:36px}.week-day-head{text-align:center;padding:6px 0 8px;display:flex;flex-direction:column;align-items:center;gap:2px}.week-day-head .dow{font-size:11px;color:var(--muted);font-weight:600;letter-spacing:.04em}.week-day-head .day-num{font-size:14px;font-weight:600;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.week-day-head.today .day-num{background:var(--fg);color:var(--accent-fg)}.week-day-head.sun .day-num,.week-day-head.sun .dow{color:#c44}.week-day-head.sat .day-num,.week-day-head.sat .dow{color:#46a}.week-day-head.today.sat .day-num,.week-day-head.today.sun .day-num{background:var(--fg);color:var(--accent-fg)}.week-body{display:grid;grid-template-columns:36px repeat(7,1fr);position:relative}.week-time-gutter{display:flex;flex-direction:column;border-right:1px solid var(--border)}.week-time-label{font-size:10px;color:var(--muted);text-align:right;padding:0 6px;border-top:1px solid transparent;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.week-day-col{position:relative;border-right:1px solid var(--border)}.week-day-col:last-child{border-right:0}.week-cell{display:block;width:100%;background:transparent;border:0;border-top:1px solid var(--border);cursor:pointer;padding:0;transition:background .12s}.week-cell:hover{background:var(--surface)}.week-cell:first-child{border-top:1px solid transparent}.week-lesson{position:absolute;left:2px;right:2px;border-radius:6px;padding:4px 6px;font-size:10px;color:white;text-align:left;display:flex;flex-direction:column;gap:1px;overflow:hidden;border:1px solid;cursor:-webkit-grab;cursor:grab;z-index:2;transition:transform .18s var(--ease),opacity .18s var(--ease),box-shadow .18s var(--ease);line-height:1.2;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.week-lesson.dragging{cursor:-webkit-grabbing;cursor:grabbing;z-index:10;transition:none;opacity:.85;box-shadow:0 8px 20px rgba(0,0,0,.18)}.week-lesson:hover{opacity:.92}.week-lesson:active{transform:scale(.98)}.week-lesson.is-scheduled{background:transparent!important;color:inherit;border-style:dashed}.week-lesson.is-cancelled{opacity:.45;text-decoration:line-through}.week-lesson .wl-time{font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.week-lesson .wl-name{font-weight:500}.week-lesson.is-scheduled .wl-name{color:var(--fg)}.now-line{position:absolute;left:-1px;right:0;height:0;border-top:2px solid #ef4444;z-index:3;pointer-events:none}.now-line:before{content:"";position:absolute;left:-4px;top:-4px;width:6px;height:6px;border-radius:999px;background:#ef4444}.cal-nav{display:flex;align-items:center;justify-content:space-between;padding:4px 2px 8px}.cal-nav-title{font-size:15px;font-weight:600;letter-spacing:-.01em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.cal-week{display:grid;grid-template-columns:repeat(7,1fr);font-size:11px;font-weight:600;letter-spacing:.04em;color:var(--subtle);text-align:center;padding:6px 0;border-bottom:1px solid var(--border)}.cal-week .sun{color:#c44}.cal-week .sat{color:#46a}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr)}.cal-day{min-height:64px;border-bottom:1px solid var(--border);border-right:1px solid var(--border);display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:4px 2px;font-size:13px;color:var(--fg);background:var(--bg);position:relative;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;transition:background .12s;gap:1px}.cal-day:nth-child(7n){border-right:0}.cal-day.outside{color:var(--subtle);background:transparent}.cal-day.drop-target{background:var(--surface);box-shadow:inset 0 0 0 2px var(--fg);z-index:2}.cal-day.drop-target .num{background:var(--fg);color:var(--accent-fg);border-radius:999px;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center}.cal-day.outside .marks .mark{opacity:.35}.cal-day:not(.outside):hover{background:var(--surface)}.cal-day.today .num{background:var(--fg);color:var(--accent-fg);border-radius:999px}.cal-day .num,.cal-day.today .num{width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center}.cal-day.sun .num{color:#c44}.cal-day.sat .num{color:#46a}.cal-day.today.sat .num,.cal-day.today.sun .num{color:var(--accent-fg)}.cal-day .marks{margin-top:2px;width:100%;display:flex;flex-direction:column;gap:2px;align-items:stretch;padding:0 2px 2px}.cal-day .marks .mark{width:100%;height:14px;border-radius:3px;background:var(--fg);color:white;font-size:9px;font-weight:600;display:flex;align-items:center;justify-content:center;padding:0 2px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:1;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:-webkit-grab;cursor:grab;will-change:transform}.cal-day .marks .mark.dragging{cursor:-webkit-grabbing;cursor:grabbing;box-shadow:0 4px 12px rgba(0,0,0,.25);opacity:.95}.cal-day .marks .mark-cancelled,.cal-day .marks .mark-scheduled{background:transparent;border:1.5px solid var(--fg)}.cal-day .marks .mark-cancelled{position:relative}.cal-day .marks .mark-cancelled:before{content:"";position:absolute;inset:0;border-top:1.5px solid;transform:rotate(45deg);transform-origin:center}.cal-day .marks .more{font-size:9px;color:var(--muted);margin-left:1px}.plan-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));grid-gap:14px;gap:14px}.plan-card{position:relative;padding:24px 20px;border:1px solid var(--line);border-radius:16px;background:var(--surface)}.plan-card.pro{border-color:var(--fg);background:linear-gradient(180deg,#fef9ec,var(--surface))}.plan-badge{position:absolute;top:-10px;right:16px;padding:4px 10px;border-radius:999px;background:var(--fg);color:var(--accent-fg);font-size:11px;font-weight:600}.plan-name{font-size:18px;font-weight:700;letter-spacing:-.01em;margin-bottom:6px}.plan-price{font-size:14px}.plan-price strong{font-size:28px;font-weight:700;letter-spacing:-.02em}.plan-features{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}.plan-features li{display:flex;align-items:flex-start;gap:8px;font-size:13px;line-height:1.5}.plan-features li>span{flex:1 1}.help-channels{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:8px;gap:8px}.help-channel{display:flex;align-items:center;gap:12px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--surface);text-decoration:none;color:inherit}.help-channel:hover{background:var(--bg)}.faq-list{display:flex;flex-direction:column;gap:6px}.faq-item{text-align:left;width:100%;border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:var(--surface);cursor:pointer;font-family:inherit;font-size:inherit;color:inherit}.faq-item.open{border-color:var(--border-strong)}.faq-q{display:flex;justify-content:space-between;align-items:center;gap:12px;font-weight:600;font-size:14px}.faq-a{margin-top:10px;font-size:13px;color:var(--muted);line-height:1.65;white-space:pre-line}.notice-list{display:flex;flex-direction:column;gap:8px}.notice-card{border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:var(--surface)}.notice-date{font-size:11px;margin-bottom:4px}.notice-title{font-weight:600;font-size:14px;margin-bottom:4px}.notice-body{font-size:13px;line-height:1.55}.tutorial-banner{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;margin:12px 0;border-radius:14px;background:linear-gradient(135deg,#fef3c7,#fde68a);border:1px solid #facc15;animation:tutorial-pulse 2s ease-in-out infinite}.tutorial-step{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;min-width:36px;height:36px;padding:0 8px;border-radius:999px;background:#b45309;color:#fff;font-size:13px;font-weight:700}.tutorial-title{font-size:15px;font-weight:700;color:#78350f;margin-bottom:2px}.tutorial-desc{font-size:13px;color:#92400e;line-height:1.5}.tutorial-actions{display:flex;flex-direction:column;gap:6px;flex-shrink:0}@keyframes tutorial-pulse{0%,to{box-shadow:0 0 0 0 rgba(250,204,21,0)}50%{box-shadow:0 0 0 6px rgba(250,204,21,.18)}}@media (max-width:480px){.tutorial-banner{flex-wrap:wrap}.tutorial-actions{flex-direction:row;width:100%;margin-top:4px}.tutorial-actions .btn{flex:1 1}}.bill-alert{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;font-size:13px;font-weight:700;color:#fff;background:var(--danger);border:0;border-radius:999px;cursor:pointer;box-shadow:0 0 0 0 rgba(220,38,38,.5);animation:bill-pulse 1.8s ease-out infinite}.bill-alert:hover{filter:brightness(1.05)}.bill-alert-pulse{display:inline-block;width:8px;height:8px;border-radius:50%;background:#fff;box-shadow:0 0 0 0 rgba(255,255,255,.7);animation:dot-pulse 1.4s ease-out infinite}.bill-alert-arrow{font-weight:600;transition:transform .2s}.bill-alert:hover .bill-alert-arrow{transform:translateX(2px)}@keyframes bill-pulse{0%{box-shadow:0 0 0 0 rgba(220,38,38,.45)}70%{box-shadow:0 0 0 12px rgba(220,38,38,0)}to{box-shadow:0 0 0 0 rgba(220,38,38,0)}}@keyframes dot-pulse{0%{box-shadow:0 0 0 0 rgba(255,255,255,.8)}70%{box-shadow:0 0 0 6px rgba(255,255,255,0)}to{box-shadow:0 0 0 0 rgba(255,255,255,0)}}.cal-day .paymark{display:inline-block;margin-top:2px;padding:1px 4px;font-size:9px;font-weight:600;color:#fff;background:var(--success,#16a34a);border-radius:4px;line-height:1.2}.cal-legend{display:flex;flex-wrap:wrap;gap:6px 12px;margin:12px 2px 0;font-size:12px;color:var(--muted)}.cal-legend .item{display:inline-flex;align-items:center;gap:5px}.cal-legend .swatch{width:8px;height:8px;border-radius:999px}.student-tag{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--muted);margin-bottom:4px}.student-tag .swatch{width:8px;height:8px;border-radius:999px}.day-list{display:flex;flex-direction:column;gap:0;margin:4px -18px -8px}.day-list .lesson-item{padding:14px 18px}.progress-list{display:flex;flex-direction:column;gap:8px}.progress-row{display:flex;gap:6px;align-items:stretch}.progress-row .input{flex:1 1}.progress-row .row-remove{flex:0 0 auto;width:36px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--muted);background:var(--bg)}.progress-row .row-remove:hover{color:var(--danger);border-color:var(--danger)}.progress-add{margin-top:8px;display:inline-flex;align-items:center;gap:4px;padding:6px 10px;border-radius:var(--radius-sm);font-size:13px;color:var(--muted);border:1px dashed var(--border-strong);align-self:flex-start}.progress-add:hover{color:var(--fg);border-color:var(--fg)}.hw-tracklist{list-style:none;padding:0;margin:4px 0 0;display:flex;flex-direction:column;gap:4px}.hw-tracklist li{font-size:14px;color:var(--fg)}.hw-track-row{display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:4px;border-radius:var(--radius-sm);transition:background .12s}.hw-track-row:hover{background:var(--bg)}.hw-track-row.done{color:var(--muted);text-decoration:line-through;text-decoration-thickness:1px}.hw-mini-check{flex:0 0 auto;width:16px;height:16px;border-radius:999px;border:1.5px solid var(--border-strong);display:inline-flex;align-items:center;justify-content:center;transition:background .22s var(--ease),border-color .22s var(--ease)}.hw-mini-check.on{background:var(--success);border-color:var(--success);color:#fff;animation:pop .32s var(--ease)}.hw-mini-check.on svg{animation:check-in .24s var(--ease)}.progress-bullets{margin:4px 0 12px;padding-left:18px}.progress-bullets li{font-size:15px;margin:2px 0}.segmented{display:flex;border:1px solid var(--border-strong);border-radius:var(--radius-sm);overflow:hidden}.segmented button{flex:1 1;padding:9px 0;font-size:14px;color:var(--muted);background:var(--bg);border-right:1px solid var(--border);transition:background .12s,color .12s}.segmented button:last-child{border-right:0}.segmented button:hover{background:var(--surface);color:var(--fg)}.segmented button.on{background:var(--fg);color:var(--accent-fg)}.focus-chip{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--muted)}.focus-chip .bars{display:inline-flex;gap:2px;align-items:flex-end}.focus-chip .bars i{display:block;width:3px;background:var(--border-strong);border-radius:1px}.focus-chip .bars i:first-child{height:5px}.focus-chip .bars i:nth-child(2){height:8px}.focus-chip .bars i:nth-child(3){height:11px}.focus-chip.l1 .bars i:first-child{background:var(--pending)}.focus-chip.l2 .bars i:first-child,.focus-chip.l2 .bars i:nth-child(2){background:var(--fg)}.focus-chip.l3 .bars i{background:var(--success)}.empty{text-align:center;padding:64px 16px;color:var(--muted);font-size:14px}.empty-cta{margin-top:14px}.sheet-bg{position:fixed;inset:0;background:rgba(10,10,12,.4);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:100;display:flex;align-items:flex-end;justify-content:center;animation:fade .24s var(--ease);padding-bottom:var(--kb-inset,0);transition:padding-bottom .18s var(--ease)}@keyframes fade{0%{opacity:0}}.sheet{width:100%;max-width:560px;background:var(--bg);border-top-left-radius:20px;border-top-right-radius:20px;padding:16px 18px 28px;max-height:90dvh;overflow-y:auto;-webkit-overflow-scrolling:touch;box-shadow:var(--shadow-sheet);animation:slide-up .32s var(--ease)}.sheet input,.sheet select,.sheet textarea{scroll-margin-block:80px 120px}@keyframes slide-up{0%{transform:translateY(36px);opacity:0}}.sheet-grip{width:36px;height:4px;background:var(--border-strong);border-radius:999px;margin:0 auto 14px}.sheet-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.sheet-head h2{font-size:17px;font-weight:600;margin:0;letter-spacing:-.01em}.sheet-actions{display:flex;gap:8px;margin-top:4px}.sheet-actions .btn{flex:1 1}.month-list{display:flex;flex-direction:column;margin:4px -18px -8px}.month-row{text-align:left;padding:14px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;font-size:15px}.month-row:last-child{border-bottom:0}.month-row.active{font-weight:600}.month-row span.count{font-size:13px;color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.auth{max-width:380px;margin:14vh auto 0;padding:0 24px 40px;animation:auth-fade .48s var(--ease)}@keyframes auth-fade{0%{opacity:0;transform:translateY(8px)}}.auth h1{font-size:28px;font-weight:700;letter-spacing:-.025em;margin:0 0 6px;animation:auth-rise .52s var(--ease) both}.auth p.lead{color:var(--muted);margin:0 0 32px;font-size:14px;animation:label-swap .32s var(--ease) both}.auth-intro-link{text-align:center;margin:24px 0 28px;font-size:13.5px;color:var(--muted);animation:auth-rise .52s var(--ease) .32s both}.auth-intro-link a{color:inherit;text-decoration:none;display:inline-block;padding:8px 14px;border-radius:8px;border:1px solid var(--rule,rgba(0,0,0,.08));transition:background .12s ease,transform .12s ease}.auth-intro-link a:hover{background:rgba(21,128,61,.06);transform:translateY(-1px)}.auth-intro-link a strong{color:#15803d;font-weight:700;margin-left:4px}.auth form{animation:auth-rise .52s var(--ease) .36s both}.auth-submit{height:46px;font-size:15px;font-weight:600;border-radius:12px}.auth-submit-label{display:inline-block;animation:label-swap .28s var(--ease)}@keyframes label-swap{0%{opacity:0;transform:translateY(4px)}}.pw-rules{list-style:none;padding:0;margin:6px 2px 0;display:flex;flex-direction:column;gap:2px;font-size:12px;color:var(--muted)}.pw-rules li{display:flex;align-items:center;gap:6px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;transition:color .2s var(--ease)}.pw-rules li.ok{color:var(--success)}.spinner{display:inline-block;width:14px;height:14px;border-radius:999px;border:2px solid;border-right:2px solid transparent;animation:spin .72s linear infinite;margin-right:6px}@keyframes spin{to{transform:rotate(1turn)}}.auth-switch{animation:auth-rise .52s var(--ease) .42s both}@keyframes auth-rise{0%{opacity:0;transform:translateY(8px)}}.auth-bullets{list-style:none;padding:0;margin:0 0 32px;display:flex;flex-direction:column;gap:4px}.auth-bullets li{display:flex;align-items:flex-start;gap:12px;font-size:14px;padding:10px 12px;animation:auth-rise .54s var(--ease) both}.auth-bullets li:first-child{animation-delay:.12s}.auth-bullets li:nth-child(2){animation-delay:.2s}.auth-bullets li:nth-child(3){animation-delay:.28s}.auth-bullets li:nth-child(4){animation-delay:.36s}.auth-bullets .bullet-icon{flex:0 0 auto;font-size:20px;width:36px;height:36px;border-radius:999px;background:var(--surface);display:inline-flex;align-items:center;justify-content:center}.auth-bullets li>span:last-child{display:flex;flex-direction:column;gap:2px;flex:1 1;min-width:0;word-break:keep-all;overflow-wrap:anywhere;text-wrap:pretty}.auth-bullets li strong{font-weight:600;color:var(--fg);line-height:1.4}.auth-bullets li small{font-size:12px;color:var(--muted);line-height:1.5}.auth-switch{margin-top:14px;font-size:13px;color:var(--muted);text-align:center}.auth-switch button{color:var(--fg);font-weight:600;text-decoration:underline;text-underline-offset:3px}.toast{position:fixed;bottom:96px;left:50%;transform:translateX(-50%);background:var(--fg);color:var(--accent-fg);padding:10px 16px;border-radius:999px;font-size:13px;z-index:200;animation:slide-up .18s;max-width:calc(100vw - 32px);text-align:center}.toast.error{background:var(--danger)}.notice{border:1px solid var(--border);border-radius:var(--radius);padding:18px;margin-top:24px;background:var(--surface)}.notice h2{margin:0 0 8px;font-size:16px}.notice p{margin:0 0 8px;color:var(--muted);font-size:14px}.notice code{background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:1px 5px;font-size:12px}.hw-summary{font-size:18px;font-weight:600;letter-spacing:-.01em;padding:8px 0 12px}.hw-summary strong{color:var(--fg)}.hw-list{gap:18px}.hw-day,.hw-list{display:flex;flex-direction:column}.hw-day{gap:8px}.hw-day-head{display:flex;align-items:baseline;justify-content:space-between;font-size:13px;font-weight:600;color:var(--fg);padding:0 2px 4px;border-bottom:1px solid var(--border)}.hw-day-head .muted{font-size:12px;font-weight:500}.hw-day-items{display:flex;flex-direction:column;gap:6px}.hw-section-title{margin:14px 2px 4px;font-size:12px;font-weight:600;letter-spacing:.04em;color:var(--muted);text-transform:uppercase}.hw-card{display:flex;align-items:flex-start;gap:12px;padding:14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);text-align:left;width:100%;transition:border-color .12s,background .12s}.hw-card:hover{border-color:var(--border-strong)}.hw-card.done{background:var(--surface);border-color:var(--border)}.hw-card.done .hw-text{color:var(--muted);text-decoration:line-through;text-decoration-thickness:1px}.hw-check{flex:0 0 auto;width:22px;height:22px;border-radius:999px;border:1.5px solid var(--border-strong);display:inline-flex;align-items:center;justify-content:center;margin-top:1px;transition:background .22s var(--ease),border-color .22s var(--ease),transform .22s var(--ease)}.hw-check.on{background:var(--success);border-color:var(--success);color:#fff;animation:pop .32s var(--ease)}.hw-check.on svg{animation:check-in .28s var(--ease)}@keyframes pop{0%{transform:scale(.85)}60%{transform:scale(1.12)}to{transform:scale(1)}}@keyframes check-in{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}.hw-card{transition:border-color .2s var(--ease),background .2s var(--ease),transform .22s var(--ease)}.hw-card:active{transform:scale(.985)}.hw-body{flex:1 1;flex-direction:column}.hw-body,.hw-meta{display:flex;gap:4px}.hw-meta{font-size:12px;color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;align-items:center;flex-wrap:wrap}.hw-due{font-weight:600}.hw-due.soon{color:var(--pending)}.hw-due.overdue{color:var(--danger)}.hw-text{font-size:15px;white-space:pre-wrap}.mode-cards{gap:8px}.mode-card,.mode-cards{display:flex;flex-direction:column}.mode-card{gap:2px;padding:14px 16px;border:1.5px solid var(--border);border-radius:var(--radius);text-align:left;background:var(--bg);transition:all .18s var(--ease)}.mode-card strong{font-size:15px;font-weight:600}.mode-card small{font-size:12px;color:var(--muted)}.mode-card.on{border-color:var(--fg);background:var(--surface)}.mode-card:active{transform:scale(.98)}.weekly-list{flex-direction:column}.weekly-list,.weekly-slot{display:flex;gap:6px}.weekly-slot .select{flex:0 0 84px}.weekly-slot .input[type=time]{flex:1 1}.weekday-chips{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:6px;gap:6px}.weekday-chip{padding:8px 0;font-size:13px;font-weight:500;border:1px solid var(--border-strong);border-radius:999px;color:var(--muted);background:var(--bg);transition:all .18s var(--ease)}.weekday-chip:hover{color:var(--fg)}.weekday-chip:active{transform:scale(.95)}.weekday-chip.on{background:var(--fg);color:var(--accent-fg);border-color:var(--fg)}.weekday-chip.sun{color:#c44}.weekday-chip.sat{color:#46a}.weekday-chip.on.sat,.weekday-chip.on.sun{color:var(--accent-fg)}.plea-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.plea-chip{padding:6px 11px;font-size:13px;border:1px solid var(--border-strong);border-radius:999px;color:var(--muted);background:var(--bg);transition:background .18s var(--ease),color .18s var(--ease),border-color .18s var(--ease),transform .18s var(--ease)}.plea-chip:hover{color:var(--fg);border-color:var(--fg)}.plea-chip:active{transform:scale(.96)}.plea-chip.on{background:var(--fg);color:var(--accent-fg);border-color:var(--fg)}.plea-box{margin:0 0 16px;padding:14px 16px;border:1px dashed var(--border-strong);border-radius:var(--radius);background:var(--surface)}.plea-head{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--muted);margin-bottom:10px}.plea-inbox{display:flex;flex-direction:column;gap:12px;margin-top:4px}.plea-card{border:1px solid var(--border-strong);border-radius:var(--radius);padding:14px}.plea-card.ack{border-color:var(--border);background:var(--surface);opacity:.85}.plea-meta{display:flex;justify-content:space-between;align-items:baseline;font-size:13px;margin-bottom:6px}.plea-meta .ts{color:var(--muted);font-size:11px}.plea-msg{font-size:15px;margin-bottom:10px;white-space:pre-wrap}.plea-reply{margin-top:4px;padding:8px 10px;border-radius:var(--radius-sm);background:var(--bg);border:1px solid var(--border);font-size:14px;display:flex;gap:8px;align-items:baseline}.plea-reply .reply-tag{font-size:11px;font-weight:700;padding:2px 6px;border-radius:4px;flex:0 0 auto}.plea-reply.k1 .reply-tag{background:#dcfce7;color:var(--success)}.plea-reply.k0 .reply-tag{background:#fee2e2;color:var(--danger)}.plea-badge{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:#ef4444;color:white;font-size:10px;font-weight:700;margin-left:6px;vertical-align:middle;animation:badge-pop .38s var(--ease)}@keyframes badge-pop{0%{transform:scale(0)}60%{transform:scale(1.18)}to{transform:scale(1)}}.plea-list{display:flex;flex-direction:column;gap:8px;margin:4px 0 14px}.plea-list .plea{padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);font-size:14px}.plea-list .plea .ts{display:block;font-size:11px;color:var(--muted);margin-top:2px}.payment-list{list-style:none;padding:0;margin:4px 0 6px;display:flex;flex-direction:column;gap:2px}.payment-list li{display:flex;align-items:center;gap:10px;padding:4px 2px;font-size:14px}.payment-list li strong{font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.payment-add{margin-top:8px;padding:10px;border:1px dashed var(--border-strong);border-radius:var(--radius-sm)}.share-link{display:flex;gap:6px;align-items:center;margin:4px 0 14px;flex-wrap:wrap}.share-link .input{font-size:12px;font-family:ui-monospace,SF Mono,Menlo,monospace;min-width:0;flex:1 1 200px}.share-link .btn{flex-shrink:0;white-space:nowrap;padding:8px 12px}.parent-cards{display:flex;flex-direction:column;gap:8px;margin-bottom:18px}.parent-card{display:flex;align-items:center;gap:12px;padding:14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg)}.parent-card-icon{flex:0 0 auto;width:36px;height:36px;border-radius:999px;background:var(--surface);display:inline-flex;align-items:center;justify-content:center;color:var(--muted)}.parent-card-body{flex:1 1;display:flex;flex-direction:column;gap:2px}.parent-card-label{font-size:12px;color:var(--muted)}.parent-card-value{font-size:16px;font-weight:600}.parent-section-title{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin:8px 2px}.parent-hw-list{display:flex;flex-direction:column;gap:8px}.parent-hw-card{border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px}.parent-hw-head{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;margin-bottom:6px}.parent-hw-items{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:3px;font-size:14px}.parent-hw-items li.done{color:var(--muted);text-decoration:line-through;text-decoration-thickness:1px}.parent-upsell{margin-top:24px;display:flex;gap:12px;padding:16px;border:1px dashed var(--border-strong);border-radius:var(--radius);background:var(--surface)}.parent-upsell-icon{flex:0 0 auto;color:var(--muted);margin-top:2px}.parent-upsell-title{font-size:14px;font-weight:600;margin-bottom:4px}.parent-update-note{margin:18px 4px 0;padding:12px 14px;border:1px dashed var(--border);border-radius:var(--radius);font-size:12px;color:var(--muted);text-align:center;line-height:1.5}.admin-section{margin-top:28px}.admin-section-title{font-size:12px;font-weight:700;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin:0 0 10px}.admin-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:10px;gap:10px}.admin-tile{padding:16px 14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);display:flex;flex-direction:column;gap:6px}.admin-tile.accent{background:var(--surface);border-color:transparent}.admin-tile-label{font-size:12px;color:var(--muted)}.admin-tile-value{font-size:22px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:-.02em}@media (max-width:600px){.admin-grid{grid-template-columns:repeat(2,1fr)}}.admin-via-table{width:100%;border-collapse:collapse;margin-top:12px;font-size:13px}.admin-via-table td,.admin-via-table th{text-align:right;padding:7px 10px;border-bottom:1px solid var(--border);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.admin-via-table td:first-child,.admin-via-table th:first-child{text-align:left}.admin-via-table th{font-size:11.5px;font-weight:600;color:var(--muted,#888)}.parent-summary-card{margin:0 4px 16px;padding:14px 16px 12px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);animation:auth-rise .48s var(--ease) both}.parent-summary-head{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;letter-spacing:.05em;color:var(--muted);text-transform:uppercase}.parent-summary-body{margin:8px 0 0;font-size:14px;line-height:1.6;color:var(--fg);word-break:keep-all;text-wrap:pretty}.parent-summary-body.muted{color:var(--muted)}.parent-summary-foot{margin:8px 0 0;font-size:11px;color:var(--muted)}.parent-attendance{margin-top:20px}.parent-attendance-row{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:8px;gap:8px;margin-top:10px}.parent-attendance-cell{border:1px solid var(--line);border-radius:12px;padding:14px 10px;text-align:center;background:var(--surface)}.parent-attendance-num{font-size:24px;font-weight:700;letter-spacing:-.02em;line-height:1.1}.parent-attendance-num.done{color:#16a34a}.parent-attendance-num.warn{color:#d97706}.parent-attendance-num.gray{color:#6b7280}.parent-attendance-label{font-size:12px;color:var(--muted);margin-top:4px}.hw-chart{gap:4px;padding:12px 4px 8px;overflow-x:auto;-webkit-overflow-scrolling:touch;justify-content:safe center}.hw-chart,.hw-chart-col{display:flex;align-items:stretch}.hw-chart-col{flex-direction:column;flex:0 0 56px;min-width:56px;border-radius:10px;padding:8px 4px 6px}.hw-chart-col:nth-child(odd){background:rgba(0,0,0,.025)}.hw-chart-bar-wrap{flex:1 1;height:150px;width:100%;display:flex;align-items:flex-end;justify-content:center;position:relative;padding-top:18px;background:linear-gradient(0deg,rgba(0,0,0,.05),rgba(0,0,0,0));border-radius:6px}.hw-chart-bar{width:70%;border-radius:6px 6px 2px 2px;transition:height .7s cubic-bezier(.22,1,.36,1);position:relative}.hw-chart-pct{position:absolute;top:2px;left:50%;transform:translateX(-50%);font-size:11px;font-weight:700;white-space:nowrap;opacity:0;animation:hw-chart-fade .4s .7s forwards}.hw-chart-label,.hw-chart-pct{color:var(--fg);letter-spacing:-.02em}.hw-chart-label{font-size:12px;font-weight:600;margin-top:8px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:1px}.hw-chart-wd{font-size:10px;font-weight:500;color:var(--muted)}@keyframes hw-chart-fade{to{opacity:1}}.muted{color:var(--muted)}.row{display:flex;gap:8px}.spacer{flex:1 1}.cal-day,.icon-btn,.tab,a,button{-webkit-tap-highlight-color:transparent;touch-action:manipulation}@media (max-width:480px){.shell{padding:12px 14px 120px}.topbar.greeting{gap:8px}.greeting-line{font-size:17px}.greeting-sub{font-size:11px}.student-name{font-size:22px}.cal-day{min-height:56px;font-size:12px}.cal-day .marks .mark{font-size:9px}.sheet{padding:16px 14px 20px!important}.sheet-head h2{font-size:17px}.topbar .brand{font-size:16px}.icon-btn{width:38px!important;height:38px!important}.btn{min-height:38px}}.parent-topbar{display:flex;flex-direction:column;gap:6px;padding:4px 0 8px}.parent-brand-link{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--ink-soft,#555);text-decoration:none;letter-spacing:-.01em;width:-moz-fit-content;width:fit-content;transition:color .15s ease}.parent-brand-link:hover{color:var(--ink,#1a1a1a)}.parent-brand-mark{position:relative;display:inline-block;width:18px;height:18px;flex-shrink:0}.parent-brand-mark .sq{position:absolute;inset:0;background:#15803d;border-radius:3px}.parent-brand-mark .ck{position:absolute;top:5px;left:4px;width:10px;height:6px;border-left:1.6px solid #faf8f3;border-bottom:1.6px solid #faf8f3;transform:rotate(-50deg);transform-origin:left bottom}.parent-brand-mark .nib{position:absolute;right:-2px;bottom:-2px;width:6px;height:6px;background:#c0392b;border-radius:50%;box-shadow:0 0 0 1.2px #fff}.parent-brand-name{font-size:12.5px;font-weight:700;letter-spacing:.02em}.parent-diary-title{font-size:17px;font-weight:600;letter-spacing:-.015em;color:var(--ink,#1a1a1a);margin-left:26px}.parent-referral-card{margin-top:20px;padding:18px 16px;background:rgba(21,128,61,.05);border:1px solid rgba(21,128,61,.18);border-radius:12px}.parent-referral-head{font-size:14.5px;font-weight:700;color:var(--ink,#1a1a1a);margin-bottom:6px;letter-spacing:-.01em}.parent-referral-body{margin:0 0 12px;font-size:13px;line-height:1.55;color:var(--ink-soft,#555)}.parent-referral-actions{display:flex;gap:8px;flex-wrap:wrap}.parent-referral-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;background:#fff;border:1px solid var(--rule,#e5e5e5);border-radius:8px;font-size:13px;font-weight:600;color:var(--ink,#1a1a1a);cursor:pointer;transition:background .15s ease,border-color .15s ease;letter-spacing:-.01em}.parent-referral-btn:hover{background:var(--paper-deep,#f7f7f5)}.parent-referral-btn.kakao{background:#fee500;border-color:#f0c84e;color:#1a1a1a}.parent-referral-btn.kakao:hover{background:#fff0b8}.parent-footer{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:24px;padding:14px;background:var(--paper-deep,#f7f7f5);border-radius:10px;font-size:12px;color:var(--ink-soft,#555)}.parent-footer-text{flex:1 1;min-width:140px;letter-spacing:-.01em}.parent-footer-text strong{font-weight:700;color:var(--ink,#1a1a1a)}.parent-footer-link{font-size:12px;font-weight:600;color:#15803d;text-decoration:none;letter-spacing:-.01em;white-space:nowrap}.parent-footer-link:hover{text-decoration:underline}.monthly-report-attach{margin:12px 0 8px;padding:12px 14px;background:rgba(21,128,61,.06);border:1px solid rgba(21,128,61,.18);border-radius:12px}.monthly-report-attach-head{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:var(--fg);margin-bottom:6px}.monthly-report-status{margin-left:auto;font-size:11px;font-weight:600;padding:2px 8px;border-radius:999px}.monthly-report-status.loading{background:rgba(0,0,0,.06);color:var(--ink-soft,#555)}.monthly-report-status.ok{background:rgba(21,128,61,.14);color:#15803d}.monthly-report-status.err{background:rgba(220,38,38,.14);color:#dc2626}.monthly-report-comment{margin:0 0 8px;font-size:13px;line-height:1.5;color:var(--fg)}.monthly-report-comment.muted{color:var(--ink-soft,#888)}.monthly-report-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.monthly-report-toggle{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:var(--fg);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.monthly-report-toggle input[type=checkbox]{width:16px;height:16px;accent-color:#15803d;cursor:pointer}.monthly-report-preview-link{font-size:12.5px;font-weight:600;color:#15803d;text-decoration:underline;margin-left:auto}.monthly-report-card{background:#fff;border:1px solid rgba(0,0,0,.06);border-radius:16px;padding:16px;margin-top:16px;box-shadow:0 1px 2px rgba(0,0,0,.04)}.monthly-report-card-head{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:#15803d;margin-bottom:12px;letter-spacing:.01em}.monthly-report-card-preview{display:block;border-radius:12px;overflow:hidden;margin:0 -2px 12px;background:#faf8f3;border:1px solid rgba(0,0,0,.05);cursor:zoom-in}.monthly-report-card-preview img{width:100%;height:auto;display:block}.monthly-report-card-comment{margin:0 0 14px;font-size:14px;line-height:1.55;color:var(--ink,#1a1a1a)}.monthly-report-card-actions{display:flex;gap:8px;flex-wrap:wrap}.monthly-report-card-btn{flex:1 1;min-width:130px;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 16px;border-radius:10px;border:1px solid rgba(0,0,0,.1);background:#fff;color:var(--ink,#1a1a1a);font-size:13px;font-weight:600;cursor:pointer;text-decoration:none;transition:background .12s ease}.monthly-report-card-btn:hover{background:#f5f5f0}.monthly-report-card-btn.kakao{background:#fee500;border-color:#fee500;color:#181600}.monthly-report-card-btn.kakao:hover{background:#ffd400}.monthly-report-edit-btn{margin-left:auto;display:inline-flex;align-items:center;gap:4px;padding:3px 8px;font-size:11px;font-weight:600;background:rgba(0,0,0,.04);border:1px solid rgba(0,0,0,.08);color:var(--fg);border-radius:999px;cursor:pointer;transition:background .12s ease}.monthly-report-edit-btn:hover{background:rgba(0,0,0,.08)}.monthly-report-edit{display:flex;flex-direction:column;gap:8px;margin-top:4px}.monthly-report-edit-input{width:100%;padding:10px 12px;font-size:13px;line-height:1.5;font-family:inherit;background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:8px;resize:vertical;min-height:64px;color:var(--fg)}.monthly-report-edit-input:focus{outline:none;border-color:#15803d;box-shadow:0 0 0 3px rgba(21,128,61,.12)}.monthly-report-edit-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.monthly-report-edit-hint{flex:1 1;font-size:11px;color:var(--ink-soft,#888)}.monthly-report-btn{display:inline-flex;align-items:center;padding:6px 14px;font-size:12.5px;font-weight:600;border-radius:6px;border:1px solid rgba(0,0,0,.12);background:#fff;color:var(--fg);cursor:pointer;transition:background .12s ease}.monthly-report-btn:hover:not(:disabled){background:#f5f5f0}.monthly-report-btn.primary{background:#15803d;border-color:#15803d;color:#fff}.monthly-report-btn.primary:hover:not(:disabled){background:#166534}.monthly-report-btn.ghost{background:transparent;border-color:transparent;color:var(--ink-soft,#555)}.monthly-report-btn:disabled{opacity:.5;cursor:not-allowed}.monthly-report-regen-btn{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;font-size:11.5px;font-weight:600;background:transparent;border:1px solid rgba(21,128,61,.3);color:#15803d;border-radius:999px;cursor:pointer;transition:background .12s ease}.monthly-report-regen-btn:hover:not(:disabled){background:rgba(21,128,61,.08)}.monthly-report-regen-btn:disabled{opacity:.5;cursor:not-allowed}.admin-nav-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));grid-gap:12px;gap:12px;margin-top:4px}.admin-nav-card{display:block;padding:16px 18px;background:var(--paper,#fff);border:1px solid rgba(0,0,0,.08);border-radius:12px;text-decoration:none;color:inherit;transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}.admin-nav-card:hover{transform:translateY(-1px);border-color:rgba(21,128,61,.4);box-shadow:0 4px 12px rgba(0,0,0,.06)}.admin-nav-card-title{font-size:15px;font-weight:700;color:var(--fg);margin-bottom:4px}.admin-nav-card-desc{font-size:12.5px;color:var(--ink-soft,#888);line-height:1.4}.admin-tb-grid{display:grid;grid-template-columns:280px 1fr;grid-gap:16px;gap:16px;align-items:start}@media (max-width:720px){.admin-tb-grid{grid-template-columns:1fr}}.admin-tb-detail-panel,.admin-tb-list-panel{background:var(--paper,#fff);border:1px solid rgba(0,0,0,.08);border-radius:12px;padding:12px}.admin-tb-list-head{display:flex;align-items:center;justify-content:space-between;padding:4px 6px 10px;font-size:13px;font-weight:700;color:var(--fg);border-bottom:1px solid rgba(0,0,0,.06);margin-bottom:8px}.admin-tb-refresh{background:transparent;border:none;color:var(--ink-soft,#888);cursor:pointer;padding:4px;border-radius:4px}.admin-tb-refresh:hover{background:rgba(0,0,0,.04)}.admin-tb-empty{padding:24px 12px;text-align:center;font-size:13px;color:var(--ink-soft,#888)}.admin-tb-list{display:flex;flex-direction:column;gap:6px;max-height:70vh;overflow-y:auto}.admin-tb-item{position:relative;padding:10px 12px;border:1px solid rgba(0,0,0,.06);border-radius:8px;cursor:pointer;transition:background .12s ease,border-color .12s ease}.admin-tb-item:hover{background:rgba(0,0,0,.02)}.admin-tb-item.active{border-color:#15803d;background:rgba(21,128,61,.06)}.admin-tb-item-title{font-size:13.5px;font-weight:700;color:var(--fg);margin-bottom:3px;padding-right:22px}.admin-tb-item-meta{font-size:11.5px;color:var(--ink-soft,#666);display:flex;align-items:center;gap:6px;flex-wrap:wrap}.admin-tb-item-owner{font-size:11px;color:var(--ink-soft,#999);margin-top:2px}.admin-tb-low-badge{display:inline-flex;align-items:center;gap:2px;background:rgba(220,38,38,.12);color:#dc2626;padding:1px 6px;border-radius:999px;font-size:10.5px;font-weight:600}.admin-tb-item-del{position:absolute;top:8px;right:8px;background:transparent;border:none;color:var(--ink-soft,#999);cursor:pointer;padding:3px;border-radius:4px}.admin-tb-item-del:hover{background:rgba(220,38,38,.1);color:#dc2626}.admin-tb-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:4px 6px 12px;border-bottom:1px solid rgba(0,0,0,.06);margin-bottom:12px}.admin-tb-detail-title{font-size:16px;font-weight:700;color:var(--fg)}.admin-tb-detail-meta{font-size:12px;color:var(--ink-soft,#888);margin-top:2px}.admin-tb-filter-btn{display:inline-flex;align-items:center;gap:4px;padding:5px 10px;font-size:11.5px;font-weight:600;background:transparent;border:1px solid rgba(0,0,0,.12);border-radius:999px;color:var(--ink-soft,#666);cursor:pointer;white-space:nowrap}.admin-tb-filter-btn.active{background:rgba(220,38,38,.08);color:#dc2626;border-color:rgba(220,38,38,.3)}.admin-tb-entries{display:flex;flex-direction:column;gap:8px;max-height:70vh;overflow-y:auto}.admin-tb-entry{border:1px solid rgba(0,0,0,.08);border-radius:8px;padding:10px 12px;background:#fff}.admin-tb-entry.low-conf{border-color:rgba(220,38,38,.3);background:rgba(220,38,38,.04)}.admin-tb-entry.editing{border-color:#15803d;background:rgba(21,128,61,.04)}.admin-tb-entry-head{display:flex;align-items:center;gap:8px;font-size:13px;flex-wrap:wrap}.admin-tb-entry-pages{font-weight:700;color:#15803d;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;min-width:55px}.admin-tb-entry-chapter{font-weight:600;color:var(--fg);flex:1 1;min-width:120px}.admin-tb-entry-source{font-size:11px;color:var(--ink-soft,#888)}.admin-tb-entry-btns{display:flex;gap:4px;margin-left:auto}.admin-tb-icon-btn{background:transparent;border:none;color:var(--ink-soft,#888);cursor:pointer;padding:4px;border-radius:4px}.admin-tb-icon-btn:hover{background:rgba(0,0,0,.05)}.admin-tb-icon-btn.danger:hover{background:rgba(220,38,38,.1);color:#dc2626}.admin-tb-entry-section{font-size:12px;color:var(--ink-soft,#666);margin-top:4px;padding-left:63px}.admin-tb-entry-topics{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px;padding-left:63px}.admin-tb-topic-chip{font-size:11px;background:rgba(0,0,0,.05);padding:2px 8px;border-radius:999px;color:var(--ink-soft,#555)}.admin-tb-entry-edit{display:flex;flex-direction:column;gap:6px}.admin-tb-edit-row{display:flex;gap:6px}.admin-tb-entry-actions{display:flex;gap:6px;justify-content:flex-end;margin-top:4px}.aladin-modal-backdrop{position:fixed;inset:0;z-index:100;background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center;padding:24px 16px;animation:aladinBackdropIn .2s ease forwards}@keyframes aladinBackdropIn{0%{opacity:0}to{opacity:1}}.aladin-modal{position:relative;background:var(--paper,#faf8f3);color:var(--ink,#1a1a1a);border-radius:16px;max-width:720px;width:100%;max-height:90vh;overflow-y:auto;padding:24px 24px 20px;box-shadow:0 24px 60px rgba(0,0,0,.25);animation:aladinModalIn .28s cubic-bezier(.22,1,.36,1) forwards}@keyframes aladinModalIn{0%{opacity:0;transform:translateY(20px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.aladin-modal-head{display:flex;align-items:center;justify-content:space-between;font-size:17px;font-weight:700;margin-bottom:8px}.aladin-modal-close{background:transparent;border:none;cursor:pointer;padding:4px;color:var(--ink-soft,#888);border-radius:4px}.aladin-modal-close:hover{background:rgba(0,0,0,.05)}.aladin-modal-hint{font-size:12.5px;color:var(--ink-soft,#888);line-height:1.5;margin:0 0 16px}.aladin-meta-row{display:flex;gap:16px;flex-wrap:wrap;padding:12px;background:rgba(0,0,0,.03);border-radius:10px;margin-bottom:12px}.aladin-meta-field{flex:1 1;min-width:200px;display:flex;flex-direction:column;gap:6px}.aladin-meta-field label{font-size:11.5px;font-weight:700;color:var(--ink-soft,#666);text-transform:uppercase;letter-spacing:.04em}.aladin-chip-row{display:flex;flex-wrap:wrap;gap:4px}.aladin-chip{display:inline-flex;align-items:center;padding:5px 11px;font-size:12px;font-weight:600;border:1px solid rgba(0,0,0,.12);background:#fff;color:var(--ink,#1a1a1a);border-radius:999px;cursor:pointer;transition:background .12s ease}.aladin-chip:hover{background:#f0f0ec}.aladin-chip.active{background:#15803d;color:#fff;border-color:#15803d}.aladin-search-row{display:flex;gap:8px;margin-bottom:12px}.aladin-search-row .input{background:#fff}.aladin-search-row .btn{display:inline-flex;align-items:center;gap:6px;font-weight:600}.aladin-msg{padding:8px 12px;border-radius:8px;font-size:12.5px;margin-bottom:10px}.aladin-msg.err{background:rgba(220,38,38,.06);border:1px solid rgba(220,38,38,.25);color:#dc2626}.aladin-msg.ok{background:rgba(21,128,61,.08);border:1px solid rgba(21,128,61,.3);color:#15803d}.aladin-results{display:flex;flex-direction:column;gap:10px;margin-top:8px}.aladin-result-card{display:flex;gap:12px;padding:12px;background:#fff;border:1px solid rgba(0,0,0,.08);border-radius:10px;align-items:center}.aladin-result-cover{width:56px;height:80px;object-fit:cover;border-radius:4px;background:#f0f0ec;flex-shrink:0}.aladin-result-cover.placeholder{display:inline-block}.aladin-result-body{flex:1 1;min-width:0}.aladin-result-title{font-size:14px;font-weight:700;color:var(--fg);margin-bottom:3px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.aladin-result-meta{font-size:11.5px;color:var(--ink-soft,#666);margin-bottom:2px}.aladin-result-cat{font-size:11px;color:var(--ink-soft,#888)}.aladin-result-card .btn{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;padding:6px 12px;border-radius:6px;border:1px solid rgba(0,0,0,.12);cursor:pointer;white-space:nowrap}.aladin-result-card .btn:hover:not(:disabled){background:#f5f5f0}.aladin-result-card .btn:disabled{opacity:.5;cursor:not-allowed}@media (max-width:540px){.aladin-result-card{flex-direction:column;align-items:stretch}.aladin-result-card .btn{align-self:flex-end}}.aladin-debug-link{display:inline-flex;align-items:center;margin-top:4px;padding:0;background:transparent;border:none;color:var(--ink-soft,#888);font-size:11px;font-weight:500;cursor:pointer;text-decoration:underline;-webkit-text-decoration-style:dotted;text-decoration-style:dotted;text-underline-offset:2px}.aladin-debug-link:hover{color:#15803d}