:root{--ink-900: #0b1220;--ink-800: #131b2c;--ink-700: #1c2640;--ink-600: #2a3553;--ink-500: #4a5372;--ink-400: #6b7391;--ink-300: #9aa1ba;--ink-200: #c9cedd;--ink-100: #eef0f6;--ink-50: #f7f8fc;--paper: #fbfaf6;--paper-2: #f3efe4;--amber-700: #9a6412;--amber-600: #c17f1a;--amber-500: #e09a2b;--amber-400: #f0b658;--amber-100: #fbe8c0;--amber-50: #fdf5e4;--navy-900: #0a1a3a;--navy-800: #122554;--navy-600: #1e3a8a;--navy-500: #2c4bab;--teal-700: #0f6a66;--teal-600: #138a84;--teal-500: #1aa8a0;--teal-400: #4ec2bb;--teal-100: #cdece9;--teal-50: #e6f5f4;--success: #2f9e6b;--warning: #d4882a;--error: #c44040;--shadow-sm: 0 1px 2px rgba(10, 26, 58, .06);--shadow: 0 4px 14px rgba(10, 26, 58, .08);--shadow-lg: 0 18px 48px rgba(10, 26, 58, .12);--radius: 12px;--radius-sm: 8px;--radius-lg: 18px;--font-sans: "Inter", system-ui, -apple-system, BlinkMacSystemFont, sans-serif;--font-serif: "Fraunces", "Times New Roman", serif}*{box-sizing:border-box}html,body,#app{height:100%}body{margin:0;font-family:var(--font-sans);font-size:15px;line-height:1.5;color:var(--ink-800);background:var(--paper);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{font-family:var(--font-serif);font-weight:600;letter-spacing:-.015em;line-height:1.2;margin:0;color:var(--ink-900)}h1{font-size:28px}h2{font-size:22px}h3{font-size:18px}h4{font-size:16px}p{margin:0;line-height:1.6}a{color:var(--teal-600);text-decoration:none;transition:color .15s ease}a:hover{color:var(--teal-700)}button{font-family:inherit;cursor:pointer;border:none;background:none;padding:0;color:inherit}input,textarea,select{font-family:inherit;font-size:14px;width:100%;padding:10px 12px;border:1px solid var(--ink-200);border-radius:var(--radius-sm);background:#fff;color:var(--ink-900);transition:border-color .15s ease,box-shadow .15s ease}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--teal-500);box-shadow:0 0 0 3px var(--teal-50)}textarea{min-height:90px;resize:vertical}label{display:block;font-size:13px;font-weight:500;color:var(--ink-700);margin-bottom:6px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 18px;border-radius:var(--radius-sm);border:1px solid transparent;font-weight:500;font-size:14px;transition:transform .08s ease,background .15s ease,box-shadow .15s ease,border-color .15s ease;background:var(--ink-900);color:#fff;box-shadow:var(--shadow-sm);white-space:nowrap}.btn:hover{transform:translateY(-1px);box-shadow:var(--shadow)}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary{background:var(--navy-600)}.btn-primary:hover{background:var(--navy-800)}.btn-accent{background:var(--amber-500);color:#3a2708}.btn-accent:hover{background:var(--amber-600);color:#fff}.btn-teal{background:var(--teal-600)}.btn-teal:hover{background:var(--teal-700)}.btn-ghost{background:transparent;color:var(--ink-700);border-color:var(--ink-200);box-shadow:none}.btn-ghost:hover{background:var(--ink-50)}.btn-danger{background:#fff;color:var(--error);border-color:#f2cccc;box-shadow:none}.btn-danger:hover{background:#fdf1f1}.btn-sm{padding:6px 12px;font-size:13px}.card{background:#fff;border:1px solid var(--ink-100);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.card-pad{padding:22px}.stat{background:#fff;border:1px solid var(--ink-100);border-radius:var(--radius);padding:18px 20px;display:flex;flex-direction:column;gap:4px;transition:transform .15s ease,box-shadow .15s ease}.stat:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.stat-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-400);font-weight:600}.stat-value{font-family:var(--font-serif);font-size:28px;font-weight:600;color:var(--ink-900)}.stat-delta{font-size:12px;color:var(--success);font-weight:500}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.badge-admin{background:#e6ebf7;color:var(--navy-800)}.badge-teacher{background:var(--amber-50);color:var(--amber-700)}.badge-student{background:var(--teal-50);color:var(--teal-700)}.badge-success{background:#e3f5ec;color:var(--success)}.badge-warning{background:#fbecd4;color:var(--amber-700)}.badge-error{background:#fbe4e4;color:var(--error)}.badge-draft{background:var(--ink-100);color:var(--ink-500)}.badge-neutral{background:var(--ink-100);color:var(--ink-600)}.grid{display:grid;gap:18px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-5{grid-template-columns:repeat(5,minmax(0,1fr))}@media (max-width: 1000px){.grid-4,.grid-5{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:1fr}}@media (max-width: 700px){.grid-2,.grid-4,.grid-5{grid-template-columns:1fr}}.stack{display:flex;flex-direction:column;gap:16px}.stack-sm{display:flex;flex-direction:column;gap:8px}.row{display:flex;gap:12px;align-items:center}.row-between{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.spacer{flex:1}.muted{color:var(--ink-400)}.small{font-size:13px}.tiny{font-size:12px}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px}.page{padding:32px 36px;max-width:1440px;margin:0 auto}@media (max-width: 700px){.page{padding:20px 16px}}.page-header{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:24px;gap:16px;flex-wrap:wrap}.page-title{display:flex;flex-direction:column;gap:4px}.eyebrow{font-size:12px;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-400);font-weight:600}.table-wrap{overflow-x:auto;border-radius:var(--radius);border:1px solid var(--ink-100);background:#fff}.table{width:100%;border-collapse:collapse}.table th,.table td{text-align:left;padding:12px 14px;font-size:14px;border-bottom:1px solid var(--ink-100)}.table th{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-400);font-weight:600;background:var(--ink-50)}.table tr:last-child td{border-bottom:0}.table tr:hover td{background:var(--ink-50)}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--ink-100);margin-bottom:24px;overflow-x:auto}.tab{padding:10px 16px;color:var(--ink-500);font-weight:500;font-size:14px;border-bottom:2px solid transparent;white-space:nowrap;transition:all .15s ease}.tab:hover{color:var(--ink-800)}.tab.active{color:var(--ink-900);border-bottom-color:var(--amber-500)}.empty{padding:48px 24px;text-align:center;color:var(--ink-400);border:1px dashed var(--ink-200);border-radius:var(--radius);background:#fff}.empty h3{color:var(--ink-700);margin-bottom:6px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a1a3a6b;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;display:flex;align-items:center;justify-content:center;padding:20px}.modal{background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);max-width:560px;width:100%;max-height:90vh;overflow-y:auto}.modal-head{padding:22px 24px;border-bottom:1px solid var(--ink-100)}.modal-body{padding:22px 24px}.modal-foot{padding:16px 24px;border-top:1px solid var(--ink-100);display:flex;justify-content:flex-end;gap:10px}.chip{display:inline-block;background:var(--ink-50);color:var(--ink-600);padding:3px 10px;font-size:12px;border-radius:999px;border:1px solid var(--ink-100)}.progress-track{height:6px;background:var(--ink-100);border-radius:99px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--teal-500),var(--teal-400));transition:width .3s ease}.icon-btn{width:34px;height:34px;border-radius:8px;border:1px solid var(--ink-200);background:#fff;display:inline-flex;align-items:center;justify-content:center;color:var(--ink-600);transition:all .15s ease}.icon-btn:hover{background:var(--ink-50);color:var(--ink-900)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--ink-200);border-radius:99px}::-webkit-scrollbar-thumb:hover{background:var(--ink-300)}::-webkit-scrollbar-track{background:transparent}.fade-enter-active,.fade-leave-active{transition:opacity .2s ease}.fade-enter-from,.fade-leave-to{opacity:0}#app{height:100%}.auth-wrap[data-v-6af80a4c]{min-height:100vh;display:grid;grid-template-columns:1fr 1fr;background:linear-gradient(120deg,var(--paper) 0%,var(--paper-2) 100%)}@media (max-width: 900px){.auth-wrap[data-v-6af80a4c]{grid-template-columns:1fr}}.auth-brand[data-v-6af80a4c]{padding:64px;display:flex;flex-direction:column;gap:32px;justify-content:space-between;background:radial-gradient(1000px 500px at -10% 20%,rgba(18,37,84,.06),transparent),radial-gradient(600px 400px at 110% 110%,rgba(224,154,43,.08),transparent),var(--paper);border-right:1px solid var(--ink-100);position:relative}.auth-brand[data-v-6af80a4c]:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(transparent 0,transparent calc(100% - 1px),rgba(18,37,84,.04) calc(100% - 1px));background-size:100% 40px;pointer-events:none}.brand-header[data-v-6af80a4c]{display:flex;gap:14px;align-items:center;position:relative}.mark[data-v-6af80a4c]{width:48px;height:48px;border-radius:12px;background:#fff;border:1px solid var(--ink-100);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-sm)}.brand-title[data-v-6af80a4c]{font-family:var(--font-serif);font-size:28px;font-weight:600;color:var(--ink-900);letter-spacing:-.02em}.brand-sub[data-v-6af80a4c]{font-size:13px;color:var(--ink-400);font-weight:500;letter-spacing:.04em;text-transform:uppercase}.brand-quote[data-v-6af80a4c]{position:relative;max-width:440px}.brand-quote p.serif[data-v-6af80a4c]{font-family:var(--font-serif);font-size:22px;font-style:italic;color:var(--ink-700);line-height:1.4}.brand-samples[data-v-6af80a4c]{position:relative}.sample-label[data-v-6af80a4c]{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-400);font-weight:600;margin-bottom:10px}.sample-btns[data-v-6af80a4c]{display:flex;gap:8px;flex-wrap:wrap}.auth-card[data-v-6af80a4c]{max-width:440px;width:100%;align-self:center;justify-self:center;margin:48px}@media (max-width: 900px){.auth-brand[data-v-6af80a4c]{padding:32px}.auth-card[data-v-6af80a4c]{margin:24px}}.role-switch[data-v-6af80a4c]{display:grid;grid-template-columns:1fr 1fr;gap:8px}.role-opt[data-v-6af80a4c]{padding:10px;border:1px solid var(--ink-200);background:#fff;border-radius:var(--radius-sm);font-weight:500;color:var(--ink-600);transition:all .15s ease}.role-opt.active[data-v-6af80a4c]{border-color:var(--navy-600);background:#eef2fb;color:var(--navy-800)}.error-alert[data-v-6af80a4c]{background:#fdecec;border:1px solid #f5caca;color:var(--error);padding:10px 12px;border-radius:var(--radius-sm);font-size:13px}.shell[data-v-16ef7c6d]{display:flex;min-height:100vh;background:var(--paper)}.side[data-v-16ef7c6d]{width:260px;flex-shrink:0;background:#fff;border-right:1px solid var(--ink-100);display:flex;flex-direction:column;gap:8px;padding:22px 16px;position:sticky;top:0;height:100vh}.side-brand[data-v-16ef7c6d]{display:flex;align-items:center;gap:10px;padding:4px 8px 16px}.mark[data-v-16ef7c6d]{width:38px;height:38px;border-radius:10px;background:var(--ink-50);display:flex;align-items:center;justify-content:center}.brand-name[data-v-16ef7c6d]{font-family:var(--font-serif);font-size:22px;font-weight:600;letter-spacing:-.02em}.side-nav[data-v-16ef7c6d]{display:flex;flex-direction:column;gap:2px;flex:1}.side-link[data-v-16ef7c6d]{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--radius-sm);color:var(--ink-500);font-weight:500;font-size:14px;transition:all .15s ease}.side-link[data-v-16ef7c6d]:hover{background:var(--ink-50);color:var(--ink-900)}.side-link.active[data-v-16ef7c6d]{background:var(--ink-900);color:#fff}.side-link.active .nav-icon[data-v-16ef7c6d]{color:var(--amber-400)}.nav-icon[data-v-16ef7c6d]{display:inline-flex;width:20px;color:var(--ink-400)}.side-user[data-v-16ef7c6d]{display:flex;align-items:center;gap:10px;padding:14px 8px 10px;border-top:1px solid var(--ink-100)}.user-link[data-v-16ef7c6d]{display:flex;align-items:center;gap:10px;flex:1;min-width:0;padding:6px;border-radius:var(--radius-sm);color:inherit;transition:background .15s ease}.user-link[data-v-16ef7c6d]:hover{background:var(--ink-50);color:inherit}.avatar[data-v-16ef7c6d]{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:600;font-size:13px;flex-shrink:0}.user-meta[data-v-16ef7c6d]{flex:1;min-width:0}.user-name[data-v-16ef7c6d]{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.menu-btn[data-v-16ef7c6d]{display:none;position:fixed;top:14px;right:14px;width:40px;height:40px;border-radius:10px;background:#fff;border:1px solid var(--ink-200);align-items:center;justify-content:center;z-index:50;box-shadow:var(--shadow-sm)}.main[data-v-16ef7c6d]{flex:1;min-width:0}@media (max-width: 900px){.side[data-v-16ef7c6d]{position:fixed;top:0;left:0;z-index:60;transform:translate(-100%);transition:transform .2s ease;box-shadow:var(--shadow-lg)}.side.open[data-v-16ef7c6d]{transform:translate(0)}.menu-btn[data-v-16ef7c6d]{display:flex}.main[data-v-16ef7c6d]{padding-top:64px}}.profile-layout[data-v-28443592]{display:grid;grid-template-columns:320px 1fr;gap:18px;align-items:start}@media (max-width: 900px){.profile-layout[data-v-28443592]{grid-template-columns:1fr}}.identity-card[data-v-28443592]{display:flex;flex-direction:column;align-items:center;text-align:center}.big-av[data-v-28443592]{width:96px;height:96px;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;font-size:32px;font-weight:600;font-family:var(--font-serif);box-shadow:var(--shadow-sm);transition:background .2s ease}.identity-meta[data-v-28443592]{display:flex;flex-direction:column;gap:10px;margin-top:22px;padding-top:18px;border-top:1px solid var(--ink-100);width:100%;text-align:left}.stat-row[data-v-28443592]{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:18px;padding-top:18px;border-top:1px solid var(--ink-100);width:100%}.mini-stat[data-v-28443592]{display:flex;flex-direction:column;gap:2px;align-items:center;text-align:center}.mini-stat .stat-value[data-v-28443592]{font-size:20px}.color-grid[data-v-28443592]{display:grid;grid-template-columns:repeat(12,1fr);gap:8px}@media (max-width: 600px){.color-grid[data-v-28443592]{grid-template-columns:repeat(6,1fr)}}.color-swatch[data-v-28443592]{aspect-ratio:1;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:transform .1s ease,border-color .15s ease}.color-swatch[data-v-28443592]:hover{transform:scale(1.1)}.color-swatch.active[data-v-28443592]{border-color:var(--ink-900);box-shadow:0 0 0 2px #fff inset}.msg[data-v-28443592]{padding:10px 12px;border-radius:var(--radius-sm);font-size:13px}.msg.ok[data-v-28443592]{background:#e3f5ec;color:var(--success);border:1px solid #bfe6d0}.msg.err[data-v-28443592]{background:#fdecec;color:var(--error);border:1px solid #f5caca}.chart-head[data-v-678d3e99]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:14px;gap:12px}.chart-body[data-v-678d3e99]{position:relative;width:100%}.stat-icon[data-v-9e460787]{width:28px;height:28px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center}.stat-icon.teal[data-v-9e460787]{background:var(--teal-50);color:var(--teal-600)}.stat-icon.amber[data-v-9e460787]{background:var(--amber-50);color:var(--amber-600)}.stat-icon.navy[data-v-9e460787]{background:#eef2fb;color:var(--navy-600)}.stat-icon.success[data-v-9e460787]{background:#e3f5ec;color:var(--success)}.stat-icon.error[data-v-9e460787]{background:#fbe4e4;color:var(--error)}.range-lbl[data-v-cd80e6ee]{font-size:12px;color:var(--ink-400);text-transform:uppercase;letter-spacing:.08em;font-weight:600}.mb[data-v-cd80e6ee]{margin-bottom:14px}.av[data-v-e346b2fc]{width:32px;height:32px;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:12px}.mb[data-v-96fd5147]{margin-bottom:14px}.grid-heat[data-v-96fd5147]{display:grid;grid-template-columns:repeat(10,1fr);gap:4px}@media (min-width: 800px){.grid-heat[data-v-96fd5147]{grid-template-columns:repeat(14,1fr)}}.cell[data-v-96fd5147]{aspect-ratio:1;border-radius:3px}.legend[data-v-96fd5147]{gap:4px}.legend .cell[data-v-96fd5147]{width:12px;height:12px;display:inline-block}.mb[data-v-2833718d]{margin-bottom:14px}.class-card[data-v-3e76c7df]{display:block;background:#fff;border:1px solid var(--ink-100);border-radius:var(--radius);padding:22px;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease;color:var(--ink-800)}.class-card[data-v-3e76c7df]:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:var(--amber-100);color:var(--ink-800)}.class-head[data-v-3e76c7df]{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}.enroll-code[data-v-3e76c7df]{text-align:right}.enroll-code code[data-v-3e76c7df]{display:block;font-family:ui-monospace,monospace;background:var(--ink-50);padding:4px 10px;border-radius:6px;font-size:13px;font-weight:600;color:var(--ink-800);margin-top:4px}.class-stats[data-v-3e76c7df]{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:14px;margin-top:18px;padding-top:14px;border-top:1px solid var(--ink-100)}.num[data-v-3e76c7df]{font-family:var(--font-serif);font-weight:600;font-size:18px;color:var(--ink-900)}.sheet[data-v-9483961f]{background:var(--paper);border:1px solid var(--ink-100);border-radius:var(--radius);overflow:hidden}.sheet-head[data-v-9483961f]{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:1px solid var(--ink-100);background:#fff;gap:16px;flex-wrap:wrap}.sheet-title[data-v-9483961f]{font-family:var(--font-serif);font-size:17px;font-weight:600}.sheet-meta[data-v-9483961f]{display:flex;gap:10px;font-size:12px;color:var(--ink-400);margin-top:4px}.sheet-meta span[data-v-9483961f]:not(:last-child):after{content:"·";margin-left:10px}.sheet-controls[data-v-9483961f]{display:flex;gap:8px;align-items:center}.tempo[data-v-9483961f]{display:flex;align-items:center;gap:8px;margin:0}.tempo input[data-v-9483961f]{width:100px;padding:0;margin:0;border:0;background:transparent}.sheet-stage[data-v-9483961f]{background:repeating-linear-gradient(transparent 0 23px,#138a8405 23px,#138a8405 24px);padding:20px 24px}.staff[data-v-9483961f]{width:100%;height:140px}.measure-row[data-v-9483961f]{display:flex;justify-content:space-between;font-size:12px;color:var(--ink-500);padding-top:6px}.av[data-v-dd20022b]{width:32px;height:32px;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:12px}.lesson-num[data-v-dd20022b]{font-family:var(--font-serif);font-size:22px;color:var(--amber-600);width:34px}.lesson-body[data-v-dd20022b]{margin-top:12px;padding-top:12px;border-top:1px dashed var(--ink-100);color:var(--ink-600);font-size:14px;line-height:1.6}.serif-title[data-v-dd20022b]{font-family:var(--font-serif);font-style:italic;color:var(--ink-800);font-weight:500}.heatmap[data-v-dd20022b]{display:grid;gap:4px}.heat-head[data-v-dd20022b]{display:grid;grid-template-columns:140px repeat(auto-fit,minmax(56px,1fr));gap:4px;align-items:end}.heat-row[data-v-dd20022b]{display:grid;grid-template-columns:140px repeat(auto-fit,minmax(56px,1fr));gap:4px;align-items:center}.heat-hcol[data-v-dd20022b]{font-size:10px;color:var(--ink-500);text-overflow:ellipsis;overflow:hidden;white-space:nowrap;transform:rotate(-20deg);transform-origin:left bottom;height:40px;padding-top:20px}.heat-label[data-v-dd20022b]{font-size:12px;color:var(--ink-700)}.heat-cell[data-v-dd20022b]{aspect-ratio:1;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:#fff}.serif-title[data-v-1a8c96bc]{font-family:var(--font-serif);font-weight:500;font-style:italic}.audio[data-v-ffe5f841]{background:#fff;border:1px solid var(--ink-100);border-radius:var(--radius);padding:14px 16px}.audio-head[data-v-ffe5f841]{margin-bottom:10px}.audio-title[data-v-ffe5f841]{font-weight:600;font-size:14px}.play-btn[data-v-ffe5f841]{width:36px;height:36px;border-radius:50%;background:var(--navy-600);color:#fff;display:flex;align-items:center;justify-content:center;border:0}.play-btn[data-v-ffe5f841]:hover{background:var(--navy-800)}.speed-sel[data-v-ffe5f841]{width:auto;padding:6px 8px;font-size:12px}.wave[data-v-ffe5f841]{display:flex;align-items:center;gap:2px;height:46px}.bar[data-v-ffe5f841]{flex:1;min-height:4px;border-radius:1px;transition:background .08s ease}.comfort[data-v-b2a5ef70]{display:inline-flex;align-items:center;gap:4px}.dot[data-v-b2a5ef70]{padding:2px;border:0;background:transparent;cursor:pointer;transition:transform .1s ease}.dot[data-v-b2a5ef70]:not(.readonly):hover{transform:scale(1.15)}.dot.readonly[data-v-b2a5ef70]{cursor:default}.comfort-label[data-v-b2a5ef70]{font-size:13px;color:var(--ink-500);margin-left:8px;font-weight:500}.sm .dot svg[data-v-b2a5ef70]{width:16px;height:16px}.lg .dot svg[data-v-b2a5ef70]{width:28px;height:28px}.inbox-layout[data-v-bdc885cf]{display:grid;grid-template-columns:380px 1fr;gap:18px}@media (max-width: 900px){.inbox-layout[data-v-bdc885cf]{grid-template-columns:1fr}}.inbox-list[data-v-bdc885cf]{display:flex;flex-direction:column;gap:6px;max-height:75vh;overflow-y:auto}.inbox-row[data-v-bdc885cf]{display:flex;align-items:center;gap:12px;padding:12px 14px;background:#fff;border:1px solid var(--ink-100);border-radius:var(--radius);text-align:left;cursor:pointer;transition:all .15s ease}.inbox-row[data-v-bdc885cf]:hover{border-color:var(--amber-100)}.inbox-row.active[data-v-bdc885cf]{border-color:var(--navy-600);background:#f6f8fc}.row-body[data-v-bdc885cf]{flex:1;min-width:0}.av[data-v-bdc885cf]{width:36px;height:36px;border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:13px;flex-shrink:0}.detail-head[data-v-bdc885cf]{border-bottom:1px solid var(--ink-100)}.response-box[data-v-bdc885cf]{background:var(--paper);border:1px solid var(--ink-100);padding:14px 16px;border-radius:var(--radius-sm);font-size:14px;line-height:1.6}.grade-panel[data-v-bdc885cf]{background:var(--ink-50);padding:18px;border-radius:var(--radius);margin-top:8px}.empty-pane[data-v-bdc885cf]{min-height:300px;display:flex;align-items:center;justify-content:center}.current-card[data-v-dcfb7575]{background:linear-gradient(120deg,#fff 0%,var(--amber-50) 100%);border-color:var(--amber-100)}.plan-card[data-v-dcfb7575]{display:flex;flex-direction:column;gap:16px;position:relative}.plan-card.current[data-v-dcfb7575]{border-color:var(--teal-400);background:linear-gradient(180deg,#fff 0%,var(--teal-50) 100%)}.ribbon[data-v-dcfb7575]{position:absolute;top:14px;right:14px;background:var(--teal-600);color:#fff;font-size:10px;font-weight:700;padding:3px 8px;border-radius:4px;text-transform:uppercase;letter-spacing:.06em}.price[data-v-dcfb7575]{font-family:var(--font-serif);font-size:28px;font-weight:600;color:var(--ink-900)}.feat[data-v-dcfb7575]{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.feat li[data-v-dcfb7575]{font-size:13px;color:var(--ink-600);display:flex;align-items:center;gap:8px}.channels[data-v-dcfb7575]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}.channel[data-v-dcfb7575]{display:flex;align-items:center;gap:12px;padding:14px;background:#fff;border:1px solid var(--ink-200);border-radius:var(--radius);cursor:pointer;text-align:left;transition:all .15s ease}.channel[data-v-dcfb7575]:hover{border-color:var(--amber-100)}.channel.active[data-v-dcfb7575]{border-color:var(--navy-600);background:#f6f8fc}.channel-logo[data-v-dcfb7575]{width:38px;height:38px;border-radius:10px;background:var(--ink-900);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700}.up-row[data-v-f53ec16d]{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;background:var(--paper);border:1px solid var(--ink-100);border-radius:var(--radius-sm);transition:all .15s ease;color:var(--ink-800)}.up-row[data-v-f53ec16d]:hover{border-color:var(--teal-400);background:#fff;color:var(--ink-900)}.fb[data-v-f53ec16d]{background:var(--paper);border:1px solid var(--ink-100);padding:14px;border-radius:var(--radius-sm)}.fb-body[data-v-f53ec16d]{margin-top:8px;font-size:13px;color:var(--ink-600);line-height:1.6}.class-card[data-v-06f877f9]{display:flex;flex-direction:column;gap:10px;background:#fff;border:1px solid var(--ink-100);border-radius:var(--radius);padding:22px;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease;color:var(--ink-800)}.class-card[data-v-06f877f9]:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:var(--teal-400);color:var(--ink-900)}.lesson-num[data-v-08f13ec7]{font-family:var(--font-serif);font-size:22px;color:var(--teal-600);width:34px}.lesson-body[data-v-08f13ec7]{margin-top:16px;padding-top:16px;border-top:1px dashed var(--ink-100);line-height:1.7;color:var(--ink-700)}.serif-title[data-v-08f13ec7]{font-family:var(--font-serif);font-weight:500;font-style:italic}.asg-row[data-v-08f13ec7]{display:flex;justify-content:space-between;align-items:center;gap:16px;background:#fff;border:1px solid var(--ink-100);border-radius:var(--radius);padding:18px 22px;transition:all .15s ease;color:var(--ink-800)}.asg-row[data-v-08f13ec7]:hover{border-color:var(--teal-400);transform:translateY(-1px);box-shadow:var(--shadow);color:var(--ink-900)}.recorder[data-v-7f7c3427]{display:flex;align-items:center;gap:18px;margin-top:18px;padding:18px;background:var(--paper);border:1px solid var(--ink-100);border-radius:var(--radius)}.rec-btn[data-v-7f7c3427]{width:64px;height:64px;border-radius:50%;background:#fff;border:2px solid var(--ink-200);display:flex;align-items:center;justify-content:center;transition:all .15s ease}.rec-btn[data-v-7f7c3427]:hover{border-color:var(--error)}.rec-btn.recording[data-v-7f7c3427]{border-color:var(--error);animation:pulse-7f7c3427 1s infinite}.rec-dot[data-v-7f7c3427]{width:18px;height:18px;background:var(--error);border-radius:50%;transition:border-radius .15s ease}.rec-btn.recording .rec-dot[data-v-7f7c3427]{border-radius:3px}@keyframes pulse-7f7c3427{0%,to{box-shadow:0 0 #c4404066}50%{box-shadow:0 0 0 10px #c4404000}}.practice-layout[data-v-c1963d06]{display:grid;grid-template-columns:360px 1fr;gap:18px}@media (max-width: 900px){.practice-layout[data-v-c1963d06]{grid-template-columns:1fr}}.piece-list[data-v-c1963d06]{max-height:75vh;overflow-y:auto}.piece-btn[data-v-c1963d06]{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);width:100%;text-align:left;cursor:pointer;transition:all .15s ease}.piece-btn[data-v-c1963d06]:hover{background:var(--ink-50)}.piece-btn.active[data-v-c1963d06]{background:var(--teal-50);border-color:var(--teal-400)}.serif-title[data-v-c1963d06]{font-family:var(--font-serif);font-style:italic}.body-box[data-v-c4b75fd2]{background:var(--paper);border:1px solid var(--ink-100);padding:12px 14px;border-radius:var(--radius-sm);font-size:14px;line-height:1.6;margin-top:6px}.feedback-box[data-v-c4b75fd2]{margin-top:16px;background:var(--amber-50);border-left:3px solid var(--amber-500);padding:14px 16px;border-radius:var(--radius-sm);font-size:14px;line-height:1.6;color:var(--ink-700)}
