@import url(https://fonts.googleapis.com/css2?family=Fraunces:ital,wght@0,300;0,600;1,300&family=DM+Sans:wght@300;400;500&display=swap);body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.gate-wrapper{align-items:center;background:linear-gradient(135deg,#1a1a2e,#16213e 50%,#0f3460);display:flex;justify-content:center;min-height:100vh;padding:1rem}.gate-card{background:#fff;border-radius:20px;box-shadow:0 20px 60px #0000004d;max-width:380px;padding:2.5rem 2rem;text-align:center;width:100%}.gate-card.shake{animation:shake .5s ease}.gate-logo{margin-bottom:2rem}.gate-emoji{display:block;font-size:3rem;margin-bottom:.5rem}.gate-title{color:#1a1a2e;font-size:1.6rem;font-weight:700;letter-spacing:.08em;margin:0 0 .4rem}.gate-subtitle{color:#888;font-size:.85rem;margin:0}.gate-form{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.5rem}.gate-input{border:2px solid #e0e0e0;border-radius:10px;font-size:1rem;letter-spacing:.1em;outline:none;padding:.85rem 1rem;text-align:center;transition:border-color .2s}.gate-input:focus{border-color:#2d6a4f}.gate-input.error{background:#fff5f5;border-color:#e63946}.gate-error{color:#e63946;font-size:.82rem;margin:0}.gate-btn{background:#2d6a4f;border:none;border-radius:10px;color:#fff;cursor:pointer;font-size:1rem;font-weight:600;padding:.9rem;transition:background .2s,transform .1s}.gate-btn:hover{background:#1b4332}.gate-btn:active{transform:scale(.98)}.gate-hint{color:#aaa;font-size:.78rem;margin:0}.gate-hint a{color:#2d6a4f;text-decoration:none}.login-wrapper{align-items:center;background:linear-gradient(135deg,#1a1a2e,#16213e 50%,#0f3460);display:flex;justify-content:center;min-height:100vh;padding:1rem}.login-card{background:#fff;border-radius:20px;box-shadow:0 20px 60px #0000004d;max-width:380px;padding:2.5rem 2rem;width:100%}.login-card.shake{animation:shake .5s ease}@keyframes shake{0%,to{transform:translateX(0)}20%{transform:translateX(-10px)}40%{transform:translateX(10px)}60%{transform:translateX(-8px)}80%{transform:translateX(8px)}}.login-logo{margin-bottom:2rem;text-align:center}.login-emoji{display:block;font-size:3rem;margin-bottom:.5rem}.login-title{color:#1a1a2e;font-size:1.6rem;font-weight:700;letter-spacing:.08em;margin:0 0 .3rem}.login-subtitle{color:#888;font-size:.85rem;margin:0}.login-form{gap:1rem;margin-bottom:1.5rem}.login-field,.login-form{display:flex;flex-direction:column}.login-field{gap:6px}.login-label{color:#555;font-size:.8rem;font-weight:600;letter-spacing:.05em}.login-input{border:2px solid #e0e0e0;border-radius:10px;box-sizing:border-box;font-size:1rem;outline:none;padding:.85rem 1rem;transition:border-color .2s;width:100%}.login-input:focus{border-color:#2d6a4f}.login-input.error{background:#fff5f5;border-color:#e63946}.login-pw-wrap{position:relative}.login-pw-wrap .login-input{padding-right:3rem;width:100%}.login-pw-toggle{background:none;border:none;cursor:pointer;font-size:1.1rem;padding:0;position:absolute;right:10px;top:50%;transform:translateY(-50%)}.login-error{color:#e63946;font-size:.82rem;margin:0;text-align:center}.login-btn{background:#2d6a4f;border:none;border-radius:10px;color:#fff;cursor:pointer;font-size:1rem;font-weight:600;margin-top:.25rem;padding:.9rem;transition:background .2s,transform .1s}.login-btn:hover{background:#1b4332}.login-btn:active{transform:scale(.98)}.login-hint{color:#aaa;font-size:.78rem;margin:0;text-align:center}.login-hint a{color:#2d6a4f;text-decoration:none}.onboarding-screen{background:var(--bg);display:flex;flex-direction:column;margin:0 auto;max-width:480px;min-height:100vh;padding:48px 32px 40px}.ob-progress{display:flex;gap:8px;justify-content:center;margin-bottom:40px}.ob-progress-dot{background:var(--border);border-radius:50%;height:8px;transition:all .3s;width:8px}.ob-progress-dot.active{background:var(--accent);border-radius:100px;width:24px}.ob-content{animation:fadeSlide .4s ease both;display:flex;flex:1 1;flex-direction:column;gap:40px}.ob-visual{align-items:center;display:flex;justify-content:center;min-height:200px;width:100%}.welcome-visual{flex-direction:column;gap:16px}.ob-phone{background:var(--ink);border-radius:24px;box-shadow:0 20px 60px #1a1a2e4d;padding:16px 12px;width:180px}.ob-phone-screen{background:var(--bg);border-radius:16px;display:flex;flex-direction:column;gap:8px;padding:12px}.ob-mock-logo{color:var(--accent);font-family:Fraunces,serif;font-size:10px;font-weight:600;letter-spacing:.15em;margin-bottom:4px;text-align:center}.ob-mock-card{background:#fff;border-radius:8px;color:var(--ink);font-family:DM Sans,sans-serif;font-size:11px;padding:8px 10px}.flow-visual{gap:12px}.ob-flow-step{flex-direction:column;gap:8px}.ob-flow-circle,.ob-flow-step{align-items:center;display:flex}.ob-flow-circle{background:var(--accent);border-radius:50%;color:#fff;font-family:Fraunces,serif;font-size:22px;font-weight:300;height:48px;justify-content:center;width:48px}.ob-flow-label{color:var(--ink-soft);font-size:12px;line-height:1.4;text-align:center;white-space:pre-line}.ob-flow-arrow{color:var(--border);font-size:20px;margin-top:12px}.classes-visual{gap:12px}.ob-class-pill{background:#fff;border:2px solid;border-radius:100px;font-family:DM Sans,sans-serif;font-size:15px;font-weight:600;padding:10px 20px}.ob-student-card{align-items:center;background:#fff;border:1.5px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);display:flex;flex-direction:column;gap:8px;padding:28px 40px}.ob-student-emoji{font-size:48px}.ob-student-label{color:var(--ink);font-family:Fraunces,serif;font-size:20px;font-weight:300}.ob-student-sub{color:var(--ink-soft);font-size:13px}.ob-ready-icon{animation:bounce 1s ease infinite alternate;font-size:96px}@keyframes bounce{0%{transform:translateY(0)}to{transform:translateY(-12px)}}.ob-text{display:flex;flex-direction:column;gap:10px}.ob-emoji{font-size:32px}.ob-title{color:var(--ink);font-family:Fraunces,serif;font-size:clamp(26px,5vw,36px);font-weight:300;line-height:1.2}.ob-subtitle{color:var(--accent);font-size:15px;font-weight:600}.ob-body{color:var(--ink-soft);font-size:15px;line-height:1.7}.ob-actions{display:flex;flex-direction:column;gap:10px;padding-top:32px}.ob-btn{border:none;border-radius:var(--radius);cursor:pointer;font-family:DM Sans,sans-serif;font-size:16px;font-weight:500;padding:16px;transition:all .2s;width:100%}.ob-btn.primary{background:var(--accent);color:#fff}.ob-btn.primary:hover{background:#235c43;box-shadow:0 8px 24px #2d6a4f4d;transform:translateY(-1px)}.ob-btn.ghost{background:#0000;color:var(--ink-soft)}.ob-btn.ghost:hover{color:var(--ink)}.switcher-wrap{margin:0 auto;max-width:680px;padding:0 24px;position:relative;width:100%;z-index:50}.switcher-trigger{align-items:center;background:var(--surface);border:1.5px solid var(--border);border-left:4px solid var(--cls-color);border-radius:14px;box-shadow:var(--shadow);cursor:pointer;display:flex;font-family:DM Sans,sans-serif;gap:10px;padding:12px 16px;transition:all .2s;width:100%}.switcher-trigger:hover{box-shadow:var(--shadow-hover);transform:translateY(-1px)}.switcher-emoji{flex-shrink:0;font-size:20px}.switcher-name{color:var(--ink);flex:1 1;font-size:14px;font-weight:600;text-align:left}.switcher-level{color:var(--ink-soft);font-size:12px}.switcher-chevron{color:var(--ink-soft);font-size:10px}.switcher-backdrop{inset:0;position:fixed;z-index:49}.switcher-dropdown{animation:dropIn .2s ease;background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-hover);left:24px;overflow:hidden;position:absolute;right:24px;top:calc(100% + 8px);z-index:51}@keyframes dropIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.switcher-dropdown-label{color:var(--ink-soft);font-size:11px;font-weight:600;letter-spacing:.12em;padding:14px 16px 8px;text-transform:uppercase}.switcher-option{align-items:center;background:none;border:none;border-left:3px solid #0000;cursor:pointer;display:flex;font-family:DM Sans,sans-serif;gap:12px;padding:12px 16px;text-align:left;transition:all .15s;width:100%}.switcher-option.active,.switcher-option:hover{background:var(--surface-soft)}.switcher-option.active{border-left-color:var(--cls-color)}.switcher-option-emoji{font-size:20px}.switcher-option-info{display:flex;flex:1 1;flex-direction:column;gap:1px}.switcher-option-name{color:var(--ink);font-size:14px;font-weight:500}.switcher-option-level{color:var(--ink-soft);font-size:12px}.switcher-check{color:var(--accent);color:var(--cls-color,var(--accent));font-size:14px;font-weight:700}.switcher-manage{background:none;border:none;border-top:1.5px solid var(--border);color:var(--ink-soft);cursor:pointer;font-family:DM Sans,sans-serif;font-size:13px;padding:14px 16px;text-align:left;transition:background .2s;width:100%}.switcher-manage:hover{background:var(--surface-soft);color:var(--ink)}.streak-badge{align-items:center;animation:slideUp .4s ease both;background:linear-gradient(135deg,#fff8f0,#ffecd2);border:1.5px solid #f4a261;border-radius:16px;display:flex;gap:10px;padding:12px 18px;width:100%}.streak-flame{flex-shrink:0;font-size:24px;line-height:1}.streak-info{align-items:baseline;display:flex;flex:1 1;gap:6px}.streak-number{color:#e76f51;font-family:Fraunces,serif;font-size:28px;font-weight:600;line-height:1}.streak-label{color:#c85a38;font-size:13px;font-weight:500}.streak-best{color:#f4a261;font-size:11px;font-weight:500;white-space:nowrap}.daily-card{background:linear-gradient(135deg,#d8f3dc,#b7e4c7);border:1.5px solid #74c69d;border-radius:var(--radius);box-shadow:0 4px 16px #2d6a4f1f;cursor:pointer;display:flex;flex-direction:column;gap:12px;padding:16px 20px;text-align:left;transition:all .22s cubic-bezier(.34,1.56,.64,1);width:100%}.daily-card:hover{box-shadow:0 8px 28px #2d6a4f33;transform:translateY(-2px)}.daily-header{align-items:center;display:flex;justify-content:space-between}.daily-tag{color:#2d6a4f;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.daily-arrow{color:#2d6a4f;font-size:16px;transition:transform .2s}.daily-card:hover .daily-arrow{transform:translateX(4px)}.daily-body{gap:14px}.daily-body,.daily-emoji{align-items:center;display:flex}.daily-emoji{background:#fff9;border-radius:14px;flex-shrink:0;font-size:28px;height:48px;justify-content:center;width:48px}.daily-info{display:flex;flex-direction:column;gap:4px}.daily-title{color:#1a3a2a;font-family:Fraunces,serif;font-size:20px;font-weight:300;line-height:1.2}.daily-meta{color:#2d6a4f;font-size:12px;font-weight:500}.moodqr-overlay{align-items:center;background:#000000bf;display:flex;inset:0;justify-content:center;padding:16px;position:fixed;z-index:1200}.moodqr-panel{background:#fff;border-radius:20px;padding:20px;position:relative;text-align:center;width:min(560px,100%)}.moodqr-close{background:#0000;border:none;color:var(--ink-soft);cursor:pointer;font-size:20px;position:absolute;right:10px;top:10px}.moodqr-chip{background:var(--accent-light);border-radius:999px;color:var(--accent);display:inline-block;font-size:12px;font-weight:700;margin-bottom:10px;padding:4px 10px}.moodqr-title{color:var(--ink);font-family:Fraunces,serif;font-size:clamp(30px,5vw,44px);font-weight:300}.moodqr-subtitle{color:var(--ink-soft);font-size:14px;margin-top:6px}.moodqr-code-wrap{background:#fff;border:1.5px solid var(--border);border-radius:16px;margin:18px auto 10px;padding:10px;width:min(320px,100%)}.moodqr-image{display:block;height:auto;width:100%}.moodqr-link{color:var(--ink-soft);font-size:12px;margin-bottom:14px;word-break:break-all}.moodqr-actions{display:flex;gap:10px;justify-content:center}.moodqr-btn{background:var(--accent);border:none;border-radius:999px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;padding:10px 14px}.moodqr-btn.secondary{background:var(--surface-soft);border:1px solid var(--border);color:var(--ink)}.mood-screen{margin:0 auto;max-width:680px;min-height:100vh;padding:32px 24px 80px}.mood-student-header{margin-bottom:32px}.mood-back{background:none;border:none;color:var(--ink-soft);cursor:pointer;display:block;font-family:DM Sans,sans-serif;font-size:14px;margin-bottom:16px;padding:0;transition:color .2s}.mood-back:hover,.mood-title{color:var(--ink)}.mood-title{font-family:Fraunces,serif;font-size:36px;font-weight:300;margin-bottom:8px}.mood-subtitle{color:var(--ink-soft);font-size:14px}.mood-picker{display:flex;flex-direction:column;gap:10px}.mood-option{align-items:center;background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);cursor:pointer;display:flex;font-family:DM Sans,sans-serif;gap:16px;padding:18px 20px;text-align:left;transition:all .2s}.mood-option:hover{border-color:var(--accent);transform:translateY(-1px)}.mood-option.selected{background:var(--accent-light);border-color:var(--accent)}.mood-option-emoji{font-size:32px}.mood-option-label{color:var(--ink);font-size:16px;font-weight:500}.mood-submit{background:var(--accent);border:none;border-radius:var(--radius);color:#fff;cursor:pointer;font-family:DM Sans,sans-serif;font-size:16px;font-weight:500;margin-top:8px;padding:18px;transition:all .2s;width:100%}.mood-submit:disabled{cursor:not-allowed;opacity:.4}.mood-submit:not(:disabled):hover{background:#235c43;transform:translateY(-1px)}.mood-submitted{align-items:center;display:flex;flex-direction:column;gap:16px;padding:60px 24px;text-align:center}.mood-submitted-emoji{align-items:center;background:var(--accent-light);border:2px solid var(--accent);border-radius:50%;color:var(--accent);display:flex;font-size:36px;height:80px;justify-content:center;width:80px}.mood-submitted-text{color:var(--ink);font-family:Fraunces,serif;font-size:22px;font-weight:300}.mood-teacher-view{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);padding:20px;width:100%}.mood-teacher-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.mood-teacher-title{color:var(--ink);font-size:15px;font-weight:600}.mood-student-btn{background:var(--accent);border:none;border-radius:100px;color:#fff;cursor:pointer;font-family:DM Sans,sans-serif;font-size:12px;font-weight:500;padding:7px 14px;transition:all .2s}.mood-student-btn:hover{background:#235c43}.mood-empty{color:var(--ink-soft);font-size:14px;padding:16px 0;text-align:center}.mood-empty-hint{color:var(--ink-soft);font-size:12px;font-style:italic;margin-top:4px}.mood-results{display:flex;flex-direction:column;gap:16px}.mood-avg-display{align-items:center;background:var(--bg);border-radius:14px;display:flex;gap:12px;padding:14px 16px}.mood-avg-emoji{font-size:32px}.mood-avg-info{display:flex;flex-direction:column;gap:2px}.mood-avg-label{color:var(--ink);font-size:15px;font-weight:600}.mood-avg-sub{color:var(--ink-soft);font-size:12px}.mood-bar-grid{display:flex;flex-direction:column;gap:8px}.mood-bar-row{align-items:center;display:flex;gap:10px}.mood-bar-emoji{flex-shrink:0;font-size:18px;text-align:center;width:28px}.mood-bar-track{background:var(--bg);border-radius:100px;flex:1 1;height:8px;overflow:hidden}.mood-bar-fill{background:linear-gradient(90deg,#2d6a4f,#74c69d);border-radius:100px;height:100%;min-width:4px;transition:width .6s ease}.mood-bar-count{color:var(--ink-soft);flex-shrink:0;font-size:12px;text-align:right;width:20px}.mood-suggestion{background:var(--accent-light);border:1.5px solid var(--accent);border-radius:14px;display:flex;flex-direction:column;gap:10px;padding:14px 16px}.mood-suggestion-text{color:var(--ink);font-size:13px;line-height:1.5}.mood-suggestion-pills{display:flex;gap:8px}.mood-pill{background:#fff;border:1.5px solid var(--accent);border-radius:100px;color:var(--accent);cursor:pointer;font-family:DM Sans,sans-serif;font-size:12px;font-weight:500;padding:6px 14px;transition:all .2s}.mood-pill:hover{background:var(--accent);color:#fff}.singing-bowl{display:flex;flex-direction:column;gap:10px;width:100%}.bowl-selector{grid-gap:8px;display:grid;gap:8px;grid-template-columns:1fr 1fr}.bowl-selector-btn{align-items:center;background:var(--surface);border:2px solid #e0e0e0;border-radius:12px;cursor:pointer;display:flex;flex-direction:column;gap:3px;padding:10px 8px;transition:all .2s}.bowl-selector-btn:hover{transform:translateY(-1px)}.bowl-selector-btn.active,.bowl-selector-btn:hover{border-color:#e9c46a;border-color:var(--bowl-color,#e9c46a)}.bowl-selector-btn.active{box-shadow:0 0 0 3px color-mix(in srgb,#e9c46a 20%,#0000);box-shadow:0 0 0 3px color-mix(in srgb,var(--bowl-color,#e9c46a) 20%,#0000)}.bowl-sel-icon{font-size:1.6rem}.bowl-sel-label{color:var(--ink);font-size:.85rem;font-weight:700}.bowl-sel-desc{color:var(--ink-soft);font-size:.72rem;text-align:center}.bowl-play-btn{align-items:center;background:linear-gradient(135deg,color-mix(in srgb,#e9c46a 15%,#fff),color-mix(in srgb,#e9c46a 8%,#fff));background:linear-gradient(135deg,color-mix(in srgb,var(--bowl-color,#e9c46a) 15%,#fff),color-mix(in srgb,var(--bowl-color,#e9c46a) 8%,#fff));border:2px solid #e9c46a;border:2px solid var(--bowl-color,#e9c46a);border-radius:12px;color:#7a5c00;color:var(--bowl-dark,#7a5c00);cursor:pointer;display:flex;font-size:.95rem;font-weight:600;gap:10px;padding:14px 16px;transition:all .2s;width:100%}.bowl-play-btn:hover{box-shadow:0 4px 16px color-mix(in srgb,#e9c46a 30%,#0000);box-shadow:0 4px 16px color-mix(in srgb,var(--bowl-color,#e9c46a) 30%,#0000);transform:translateY(-1px)}.singing-bowl.active .bowl-play-btn{animation:bowl-pulse 2.5s ease-in-out infinite}@keyframes bowl-pulse{0%,to{box-shadow:0 0 0 0 color-mix(in srgb,#e9c46a 40%,#0000);box-shadow:0 0 0 0 color-mix(in srgb,var(--bowl-color,#e9c46a) 40%,#0000)}50%{box-shadow:0 0 0 10px color-mix(in srgb,#e9c46a 0,#0000);box-shadow:0 0 0 10px color-mix(in srgb,var(--bowl-color,#e9c46a) 0,#0000)}}.bowl-play-icon{flex-shrink:0;font-size:1.1rem}.bowl-play-label{flex:1 1;text-align:left}.bowl-progress-bar{background:color-mix(in srgb,#e9c46a 25%,#0000);background:color-mix(in srgb,var(--bowl-color,#e9c46a) 25%,#0000);border-radius:4px;height:4px;overflow:hidden}.bowl-progress-fill{background:#e9c46a;background:var(--bowl-color,#e9c46a);border-radius:4px;height:100%;transition:width .1s linear}.singing-bowl.small .bowl-play-btn{font-size:.85rem;padding:10px 12px}.singing-bowl.small .bowl-sel-icon{font-size:1.3rem}.singing-bowl.small .bowl-selector-btn{padding:8px 6px}.bgm-wrapper{background:var(--surface);border:1.5px solid var(--border);border-radius:16px;display:flex;flex-direction:column;gap:12px;padding:16px;width:100%}.bgm-fullpage{border:none;border-radius:0;margin:0 auto;max-width:680px;min-height:calc(100vh - 80px);padding:24px 20px}.bgm-fullpage .bgm-title{font-size:18px}.bgm-fullpage .bgm-grid{gap:12px}.bgm-fullpage .bgm-card{padding:20px 12px}.bgm-fullpage .bgm-card-icon{font-size:2rem}.bgm-fullpage .bgm-card-label{font-size:15px}.bgm-fullpage .bgm-card-desc{font-size:12px}.bgm-header{align-items:center;display:flex;justify-content:space-between}.bgm-title{color:var(--ink);font-size:13px;font-weight:700}.bgm-stop-btn{background:#fff5f5;border:1.5px solid #e63946;border-radius:8px;color:#e63946;cursor:pointer;font-size:12px;font-weight:600;padding:5px 12px;transition:all .2s}.bgm-stop-btn:hover{background:#e63946;color:#fff}.bgm-now-playing{align-items:center;background:linear-gradient(135deg,#f0fff4,#dcfce7);border:1.5px solid #2d6a4f44;border-radius:10px;display:flex;font-size:12px;gap:8px;padding:8px 12px}.bgm-playing-icon{font-size:1.1rem}.bgm-playing-label{color:#2d6a4f;flex:1 1;font-weight:600}.bgm-loop-badge{color:#2d6a4f;font-size:11px;opacity:.7}.bgm-grid{grid-gap:8px;display:grid;gap:8px;grid-template-columns:1fr 1fr}.bgm-card{align-items:center;background:var(--surface);border:2px solid var(--border);border-radius:12px;cursor:pointer;display:flex;flex-direction:column;gap:4px;padding:12px 8px;transition:all .2s}.bgm-card:hover{border-color:#2d6a4f;transform:translateY(-1px)}.bgm-card.active{box-shadow:0 4px 12px #0000001a}.bgm-card-icon{font-size:1.5rem}.bgm-card-label{color:var(--ink);font-size:13px;font-weight:700}.bgm-card-desc{color:var(--ink-soft);font-size:11px;text-align:center}.bgm-card-playing{align-items:flex-end;display:flex;gap:2px;height:14px;margin-top:2px}.bgm-bar{animation:bgm-dance .8s ease-in-out infinite alternate;background:currentColor;border-radius:2px;width:3px}.bgm-bar:first-child{animation-delay:0s;height:6px}.bgm-bar:nth-child(2){animation-delay:.2s;height:12px}.bgm-bar:nth-child(3){animation-delay:.4s;height:8px}@keyframes bgm-dance{0%{transform:scaleY(.4)}to{transform:scaleY(1)}}.bgm-volume{align-items:center;display:flex;gap:8px}.bgm-vol-icon{font-size:1rem}.bgm-vol-slider{appearance:none;background:var(--border);border-radius:4px;cursor:pointer;flex:1 1;height:4px;outline:none}.bgm-vol-slider::-webkit-slider-thumb{appearance:none;background:#2d6a4f;border-radius:50%;cursor:pointer;height:16px;width:16px}.bgm-vol-pct{color:var(--ink-soft);font-size:11px;min-width:32px;text-align:right}.bgm-hint{color:var(--ink-soft);font-size:12px;margin:4px 0 0;text-align:center}.nav-music-dot{animation:dot-pulse 1.5s ease-in-out infinite;background:#2d6a4f;border-radius:50%;height:7px;position:absolute;right:6px;top:4px;width:7px}@keyframes dot-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.7)}}.start-screen{align-items:center;display:flex;flex-direction:column;gap:16px;margin:0 auto;max-width:680px;min-height:100vh;padding:48px 24px 32px}.start-header{text-align:center;width:100%}.start-logo-row{align-items:center;display:flex;justify-content:space-between;margin-bottom:24px}.start-logo{color:var(--accent);font-family:Fraunces,serif;font-size:12px;font-weight:600;letter-spacing:.2em;opacity:.8;text-transform:uppercase}.student-mode-btn{background:var(--surface);border:1.5px solid var(--border);border-radius:100px;color:var(--ink-soft);cursor:pointer;font-family:DM Sans,sans-serif;font-size:12px;font-weight:500;padding:6px 14px;transition:all .2s}.student-mode-btn:hover{background:var(--accent-light);border-color:var(--accent);color:var(--accent)}.start-title{color:var(--ink);font-family:Fraunces,serif;font-size:clamp(32px,6vw,52px);font-weight:300;line-height:1.15;margin-bottom:16px}.start-title em{color:var(--accent);font-style:italic}.start-subtitle{color:var(--ink-soft);font-size:15px;line-height:1.6;margin:0 auto;max-width:420px}.dashboard-row{grid-gap:10px;display:grid;gap:10px;grid-template-columns:repeat(3,1fr);width:100%}.dashboard-mini-card{align-items:flex-start;background:var(--surface);border:1.5px solid var(--border);border-radius:16px;box-shadow:var(--shadow);cursor:pointer;display:flex;flex-direction:column;gap:6px;min-width:0;padding:14px 12px;text-align:left;transition:all .2s}.dashboard-mini-card:hover{border-color:var(--accent);box-shadow:var(--shadow-hover);transform:translateY(-2px)}.dashboard-mini-card.highlight{animation:pulse 2s ease infinite;background:linear-gradient(135deg,#fffbf0,#fdf6e3);border-color:#e9c46a}@keyframes pulse{0%,to{box-shadow:var(--shadow)}50%{box-shadow:0 0 0 4px #e9c46a4d}}.dmc-emoji{font-size:22px}.dmc-info{display:flex;flex-direction:column;gap:2px;min-width:0;width:100%}.dmc-label{color:var(--ink-soft);font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.dmc-title{color:var(--ink);font-size:12px;font-weight:600;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dmc-sub{color:var(--ink-soft);font-size:11px}.dmc-new{color:#e9c46a;font-size:11px;font-weight:700}.dmc-bar{background:var(--border);border-radius:100px;height:4px;margin-top:4px;overflow:hidden;width:100%}.dmc-bar-fill{background:var(--accent);border-radius:100px;height:100%;transition:width .4s ease}.dmc-count{align-self:flex-end;color:var(--accent);font-size:12px;font-weight:700}.dmc-arrow{align-self:flex-end;color:var(--ink-soft);font-size:14px}.recent-section{width:100%}.recent-label{color:var(--ink-soft);font-size:11px;font-weight:600;letter-spacing:.12em;margin-bottom:10px;text-transform:uppercase}.recent-cards{display:flex;gap:10px}.recent-card{align-items:center;background:var(--surface);border:1.5px solid var(--border);border-radius:16px;box-shadow:var(--shadow);cursor:pointer;display:flex;flex:1 1;flex-direction:column;gap:6px;min-width:0;padding:14px 10px;text-align:center;transition:all .2s}.recent-card:hover{border-color:var(--accent);box-shadow:var(--shadow-hover);transform:translateY(-2px)}.recent-emoji{font-size:22px}.recent-title{color:var(--ink);font-size:12px;font-weight:500;line-height:1.3;word-break:break-word}.recent-duration{color:var(--ink-soft);font-size:11px}.situation-grid{display:flex;flex-direction:column;gap:10px;width:100%}.situation-card{align-items:center;animation:slideUp .4s ease both;background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);cursor:pointer;display:flex;gap:16px;padding:18px 24px;text-align:left;transition:all .22s cubic-bezier(.34,1.56,.64,1);width:100%}.situation-card.hovered,.situation-card:hover{background:var(--card-light);border-color:var(--card-color);box-shadow:var(--shadow-hover);transform:translateY(-2px) scale(1.01)}.situation-emoji{align-items:center;background:#f0f0f0;background:var(--card-light,#f0f0f0);border-radius:12px;display:flex;flex-shrink:0;font-size:24px;height:42px;justify-content:center;transition:background .2s;width:42px}.situation-card:hover .situation-emoji{background:#fff}.situation-label{color:var(--ink);flex:1 1;font-size:15px;font-weight:500}.situation-arrow{color:var(--ink-soft);font-size:16px;transition:transform .2s,color .2s}.situation-card:hover .situation-arrow{color:var(--card-color);transform:translateX(4px)}.random-btn{background:var(--surface);border:1.5px dashed var(--border);border-radius:var(--radius);color:var(--ink-soft);cursor:pointer;font-family:DM Sans,sans-serif;font-size:15px;font-weight:500;padding:16px;transition:all .2s;width:100%}.random-btn:hover{background:var(--accent-light);border-color:var(--accent);color:var(--accent);transform:translateY(-1px)}.start-footer{color:var(--ink-soft);font-size:13px;letter-spacing:.05em}.exercise-list-screen{margin:0 auto;max-width:680px;min-height:100vh;padding:32px 24px 48px}.list-header{margin-bottom:32px}.back-btn{margin-bottom:20px}.list-situation-badge{border-radius:100px;display:inline-block;font-size:13px;font-weight:500;margin-bottom:16px;padding:6px 14px}.list-title{color:var(--ink);font-family:Fraunces,serif;font-size:32px;font-weight:300;margin-bottom:6px}.list-subtitle{color:var(--ink-soft);font-size:14px}.exercise-cards{display:flex;flex-direction:column;gap:12px}.exercise-card{animation:slideUp .4s ease both;background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);cursor:pointer;padding:20px;text-align:left;transition:all .22s cubic-bezier(.34,1.56,.64,1);width:100%}.exercise-card:hover{border-color:var(--accent);box-shadow:var(--shadow-hover);transform:translateY(-2px)}.exercise-card-top{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.exercise-category-badge{color:var(--ink-soft);font-size:12px;font-weight:500}.exercise-noise-badge{font-size:12px;font-weight:600}.exercise-card-title{color:var(--ink);font-family:Fraunces,serif;font-size:20px;font-weight:300;margin-bottom:4px}.exercise-card-goal{color:var(--ink-soft);font-size:13px;margin-bottom:16px}.exercise-card-footer{align-items:center;border-top:1px solid var(--border);display:flex;justify-content:space-between;padding-top:12px}.exercise-duration{color:var(--ink-soft);font-size:13px}.exercise-arrow{color:var(--ink-soft);font-size:16px;transition:transform .2s}.exercise-card:hover .exercise-arrow{color:var(--accent);transform:translateX(4px)}.beamer-overlay{align-items:center;background:#0d1117;display:flex;flex-direction:column;inset:0;justify-content:center;padding:48px 64px;position:fixed;z-index:999}.beamer-close{background:#ffffff14;border:1px solid #ffffff26;border-radius:100px;color:#fff9;cursor:pointer;font-family:DM Sans,sans-serif;font-size:13px;padding:8px 18px;position:absolute;right:24px;top:24px;transition:all .2s}.beamer-close:hover{background:#ffffff24;color:#fff}.beamer-content{max-width:900px;text-align:center;width:100%}.beamer-ready{align-items:center;animation:fadeIn .5s ease;display:flex;flex-direction:column;gap:20px}.beamer-category{color:#ffffff80;font-size:18px;letter-spacing:.05em}.beamer-title{color:#fff;font-family:Fraunces,serif;font-size:clamp(48px,8vw,96px);font-weight:300;line-height:1.1}.beamer-goal{color:#fff9;font-size:22px}.beamer-duration-pill{background:#2d6a4f4d;border:1px solid #2d6a4f99;border-radius:100px;color:#74c69d;font-size:16px;padding:10px 24px}.beamer-start-btn{background:#2d6a4f;border:none;border-radius:100px;color:#fff;cursor:pointer;font-family:DM Sans,sans-serif;font-size:20px;font-weight:500;letter-spacing:.02em;margin-top:16px;padding:18px 48px;transition:all .2s}.beamer-start-btn:hover{background:#235c43;box-shadow:0 12px 40px #2d6a4f66;transform:scale(1.03)}.beamer-running{align-items:center;animation:fadeIn .4s ease;display:flex;flex-direction:column;gap:32px}.beamer-progress-bar{background:#ffffff1a;border-radius:100px;height:6px;overflow:hidden;width:100%}.beamer-progress-fill{background:linear-gradient(90deg,#2d6a4f,#74c69d);border-radius:100px;height:100%;transition:width 1s linear}.beamer-timer-big{color:#fff;font-family:Fraunces,serif;font-size:clamp(72px,14vw,140px);font-weight:300;letter-spacing:-.02em;line-height:1}.beamer-step-area{background:#ffffff0d;border:1px solid #ffffff1a;border-radius:24px;padding:36px 48px;width:100%}.beamer-step-head{align-items:center;display:flex;gap:12px;justify-content:space-between;margin-bottom:12px}.beamer-step-counter{color:#fff6;font-size:14px;letter-spacing:.1em;text-transform:uppercase}.beamer-auto-toggle{align-items:center;color:#ffffffd9;display:flex;font-size:14px;gap:8px;-webkit-user-select:none;user-select:none}.beamer-auto-toggle input{height:16px;width:16px}.beamer-step-progress-wrap{margin-bottom:20px}.beamer-step-progress-label{color:#ffffffb3;font-size:14px;margin-bottom:8px}.beamer-step-progress{background:#ffffff1f;border-radius:999px;height:10px;overflow:hidden;width:100%}.beamer-step-progress-fill{background:linear-gradient(90deg,#4ea37c,#74c69d);border-radius:999px;height:100%;transition:width 1s linear}.beamer-step-text{color:#fff;font-family:Fraunces,serif;font-size:clamp(32px,5vw,56px);font-weight:300;line-height:1.25;margin-bottom:24px}.beamer-step-dots{display:flex;gap:8px;justify-content:center}.beamer-dot{background:#fff3;border-radius:50%;height:8px;transition:all .3s;width:8px}.beamer-dot.active{background:#74c69d;transform:scale(1.4)}.beamer-dot.done{background:#74c69d66}.beamer-step-nav{display:flex;gap:16px}.beamer-nav-btn{background:#ffffff14;border:1px solid #ffffff26;border-radius:100px;color:#fff;cursor:pointer;font-family:DM Sans,sans-serif;font-size:16px;padding:12px 28px;transition:all .2s}.beamer-nav-btn:disabled{cursor:not-allowed;opacity:.25}.beamer-nav-btn:not(:disabled):hover{background:#ffffff26}.beamer-nav-btn.primary{background:#2d6a4f;border-color:#0000}.beamer-nav-btn.primary:not(:disabled):hover{background:#235c43}.beamer-teacher-line{align-items:center;background:#2d6a4f26;border:1px solid #2d6a4f4d;border-radius:16px;display:flex;gap:12px;padding:14px 24px;width:100%}.beamer-teacher-label{color:#74c69d;font-size:14px;font-weight:600;white-space:nowrap}.beamer-teacher-text{color:#ffffffbf;font-family:Fraunces,serif;font-size:18px;font-style:italic;text-align:left}.beamer-done{animation:fadeIn .5s ease;flex-direction:column;gap:20px}.beamer-done,.beamer-done-icon{align-items:center;display:flex}.beamer-done-icon{background:#2d6a4f4d;border:2px solid #2d6a4f;border-radius:50%;color:#74c69d;font-size:48px;height:100px;justify-content:center;width:100px}.beamer-done-title{color:#fff;font-family:Fraunces,serif;font-size:52px;font-weight:300}.beamer-done-sub{color:#ffffff80;font-size:20px}.guide-overlay{align-items:flex-end;animation:fadeIn .2s ease;background:#00000080;display:flex;inset:0;justify-content:center;padding:0;position:fixed;z-index:200}.guide-panel{animation:slideUp .3s cubic-bezier(.34,1.56,.64,1);background:var(--surface);border-radius:28px 28px 0 0;max-height:85vh;max-width:680px;overflow-y:auto;padding:28px 24px 48px;width:100%}.guide-header{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:28px}.guide-title-row{align-items:center;display:flex;gap:14px}.guide-emoji{font-size:32px}.guide-title{color:var(--ink);font-family:Fraunces,serif;font-size:22px;font-weight:300;margin-bottom:2px}.guide-subtitle{color:var(--ink-soft);font-size:13px}.guide-close{align-items:center;background:var(--bg);border:none;border-radius:50%;color:var(--ink-soft);cursor:pointer;display:flex;flex-shrink:0;font-size:14px;height:36px;justify-content:center;transition:all .2s;width:36px}.guide-close:hover{background:var(--border);color:var(--ink)}.guide-section{margin-bottom:24px}.guide-section-label{color:var(--ink);font-size:13px;font-weight:700;margin-bottom:12px}.guide-theory{background:var(--bg);border-radius:14px;color:var(--ink-soft);font-size:14px;line-height:1.7;padding:16px 18px}.guide-tips{display:flex;flex-direction:column;gap:10px;list-style:none}.guide-tip{align-items:flex-start;color:var(--ink-soft);display:flex;font-size:14px;gap:10px;line-height:1.5}.guide-tip-dot{background:var(--accent);border-radius:50%;flex-shrink:0;height:6px;margin-top:6px;width:6px}.guide-video-placeholder{align-items:center;background:var(--bg);border:1.5px dashed var(--border);border-radius:16px;display:flex;flex-direction:column;gap:8px;padding:28px;text-align:center}.guide-video-icon{font-size:36px}.guide-video-label{color:var(--ink);font-size:14px;font-weight:500}.guide-video-hint{color:var(--ink-soft);font-size:12px}.guide-video-wrap{aspect-ratio:16/9;border-radius:16px;overflow:hidden}.guide-video{height:100%;width:100%}.audio-player{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column;gap:14px;margin-bottom:16px;padding:20px;transition:all .3s}.audio-player.tts-mode{background:linear-gradient(135deg,#f0f7ff,#e8f4fd);border-color:#457b9d}.audio-player.file-mode{background:linear-gradient(135deg,#f5f0e8,#faf8f4);border-color:var(--accent)}.audio-player.loading{align-items:center;padding:24px}.audio-loading-dots{display:flex;gap:6px}.audio-loading-dots span{animation:loadingBounce .6s ease infinite alternate;background:var(--accent);border-radius:50%;height:8px;width:8px}.audio-loading-dots span:nth-child(2){animation-delay:.2s}.audio-loading-dots span:nth-child(3){animation-delay:.4s}@keyframes loadingBounce{0%{opacity:.4;transform:translateY(0)}to{opacity:1;transform:translateY(-6px)}}.audio-loading-label{color:var(--ink-soft);font-size:13px}.audio-player-header{align-items:center;display:flex;gap:12px}.audio-icon{flex-shrink:0;font-size:24px}.audio-info{display:flex;flex:1 1;flex-direction:column;gap:2px}.audio-title{color:var(--ink);font-size:14px;font-weight:600}.audio-subtitle{color:var(--ink-soft);font-size:12px}.audio-mode-badge{border-radius:100px;font-size:10px;font-weight:700;letter-spacing:.1em;padding:3px 8px;text-transform:uppercase}.audio-mode-badge.tts{background:#daeaf5;color:#457b9d}.audio-mode-badge.file{background:var(--accent-light);color:var(--accent)}.audio-script-preview{background:#fff9;border-radius:12px;padding:12px 16px}.audio-script-text{color:var(--ink);font-family:Fraunces,serif;font-size:15px;font-style:italic;line-height:1.5}.audio-progress-wrap{cursor:pointer;padding:8px 0}.audio-progress-bar{background:var(--border);border-radius:100px;height:6px;overflow:visible;position:relative}.audio-progress-fill{background:var(--accent);border-radius:100px;height:100%;transition:width .1s linear}.audio-progress-thumb{background:var(--accent);border:2px solid #fff;border-radius:50%;box-shadow:0 2px 6px #2d6a4f4d;height:14px;position:absolute;top:50%;transform:translate(-50%,-50%);transition:left .1s linear;width:14px}.audio-time-row{display:flex;justify-content:space-between;margin-top:-8px}.audio-time{color:var(--ink-soft);font-size:12px}.audio-controls{align-items:center;display:flex;gap:12px;justify-content:center}.audio-rewind-btn{background:#fff9;border:1.5px solid var(--border);border-radius:100px;color:var(--ink-soft);cursor:pointer;font-family:DM Sans,sans-serif;font-size:12px;font-weight:500;padding:8px 14px;transition:all .2s}.audio-rewind-btn:hover{border-color:var(--accent);color:var(--accent)}.audio-play-btn{align-items:center;background:var(--accent);border:none;border-radius:100px;color:#fff;cursor:pointer;display:flex;font-family:DM Sans,sans-serif;font-size:15px;font-weight:500;gap:8px;justify-content:center;min-width:160px;padding:12px 24px;transition:all .2s}.audio-play-btn:hover{background:#235c43;transform:scale(1.02)}.audio-play-btn.playing{background:#e76f51}.audio-play-btn.playing:hover{background:#d4613f}.play-icon{font-size:16px}.audio-tts-wave{align-items:center;display:flex;gap:3px;height:32px;justify-content:center}.tts-bar{animation:wave .8s ease infinite alternate;background:var(--accent);border-radius:100px;width:3px}@keyframes wave{0%{height:4px;opacity:.4}to{height:24px;opacity:1}}.audio-tts-hint{color:var(--ink-soft);font-size:11px;line-height:1.5;text-align:center}.audio-tts-hint code{background:var(--bg);border-radius:4px;color:#457b9d;font-size:11px;padding:1px 6px}.detail-screen{background:var(--bg);min-height:100vh;padding:32px 24px 64px}.detail-inner{margin:0 auto;max-width:640px}.detail-topbar{align-items:center;display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;margin-bottom:20px}.detail-topbar-actions{display:flex;flex-wrap:wrap;gap:6px}.back-btn{background:none;border:none;color:var(--ink-soft);cursor:pointer;font-family:DM Sans,sans-serif;font-size:14px;padding:0;transition:color .2s}.back-btn:hover{color:var(--ink)}.audio-toggle-btn{background:linear-gradient(135deg,#daeaf5,#b8d8ed);border:1.5px solid #457b9d;border-radius:100px;color:#457b9d;cursor:pointer;font-family:DM Sans,sans-serif;font-size:12px;font-weight:600;padding:6px 12px;transition:all .2s}.audio-toggle-btn:hover{background:#457b9d;color:#fff}.guide-btn{background:var(--surface);border:1.5px solid var(--border);border-radius:100px;color:var(--ink-soft);cursor:pointer;font-family:DM Sans,sans-serif;font-size:12px;font-weight:500;padding:6px 12px;transition:all .2s}.guide-btn:hover{border-color:var(--accent);color:var(--accent)}.beamer-btn{background:#0d1117;border:none;border-radius:100px;color:#fff;cursor:pointer;font-family:DM Sans,sans-serif;font-size:12px;font-weight:500;padding:6px 12px;transition:all .2s}.beamer-btn:hover{background:#1a2030}.detail-fav-btn{background:var(--surface);border:1.5px solid var(--border);border-radius:100px;color:var(--ink-soft);cursor:pointer;font-family:DM Sans,sans-serif;font-size:13px;font-weight:500;padding:6px 12px;transition:all .2s}.detail-fav-btn.active,.detail-fav-btn:hover{background:#fdf6e3;border-color:#e9c46a;color:var(--ink)}.detail-header{margin-bottom:28px}.detail-category{color:var(--ink-soft);font-size:13px;font-weight:500}.detail-title{color:var(--ink);font-family:Fraunces,serif;font-size:clamp(28px,5vw,44px);font-weight:300;line-height:1.2;margin:8px 0 16px}.detail-meta{display:flex;flex-wrap:wrap;gap:10px}.meta-pill{background:var(--surface);border:1.5px solid var(--border);border-radius:100px;color:var(--ink-soft);font-size:13px;padding:6px 14px}.detail-section{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);margin-bottom:16px;padding:24px}.section-label{color:var(--ink-soft);font-size:11px;font-weight:600;letter-spacing:.12em;margin-bottom:20px;text-transform:uppercase}.steps-list{display:flex;flex-direction:column;gap:14px;list-style:none}.step-item{align-items:flex-start;display:flex;gap:14px}.step-number{align-items:center;background:var(--accent-light);border-radius:50%;color:var(--accent);display:flex;flex-shrink:0;font-size:13px;font-weight:600;height:28px;justify-content:center;width:28px}.step-text{color:var(--ink);font-size:15px;line-height:1.5;padding-top:4px}.teacher-line-box{background:var(--accent-light);border:1.5px solid var(--accent);border-radius:var(--radius);margin-bottom:16px;padding:20px 24px}.teacher-line-label{color:var(--accent);display:block;font-size:11px;font-weight:600;letter-spacing:.12em;margin-bottom:10px;text-transform:uppercase}.teacher-line-text{color:var(--ink);font-family:Fraunces,serif;font-size:18px;font-style:italic;line-height:1.5}.note-section{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);margin-bottom:16px;overflow:hidden}.note-toggle{align-items:center;background:none;border:none;color:var(--ink-soft);cursor:pointer;display:flex;font-family:DM Sans,sans-serif;font-size:14px;font-weight:500;justify-content:space-between;padding:16px 20px;transition:background .2s;width:100%}.note-toggle:hover{background:var(--surface-soft)}.note-toggle-arrow{font-size:11px}.note-body{animation:slideDown .2s ease;display:flex;flex-direction:column;gap:10px;padding:0 20px 20px}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.note-textarea{background:var(--bg);border:1.5px solid var(--border);border-radius:12px;color:var(--ink);font-family:DM Sans,sans-serif;font-size:14px;line-height:1.6;outline:none;padding:12px 14px;resize:vertical;transition:border-color .2s;width:100%}.note-textarea:focus{border-color:var(--accent)}.note-save-btn{align-self:flex-end;background:var(--accent);border:none;border-radius:100px;color:#fff;cursor:pointer;font-family:DM Sans,sans-serif;font-size:13px;font-weight:500;padding:8px 20px;transition:all .2s}.note-save-btn:hover{background:#235c43}.note-save-btn.saved{background:#52b788}.start-btn{background:var(--accent);border:none;border-radius:var(--radius);color:#fff;cursor:pointer;font-family:DM Sans,sans-serif;font-size:16px;font-weight:500;letter-spacing:.02em;margin-bottom:16px;padding:18px;transition:all .2s;width:100%}.start-btn:hover{background:#235c43;box-shadow:0 8px 24px #2d6a4f4d;transform:translateY(-1px)}.start-actions{grid-gap:10px;display:grid;gap:10px;grid-template-columns:1fr 1fr;margin-bottom:16px}.beamer-start-btn{background:#0d1117}.beamer-start-btn:hover{background:#1a2030;box-shadow:0 8px 24px #0d111766}.feedback-box{animation:slideUp .4s ease both;background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);margin-top:16px;padding:24px}.feedback-title{font-size:20px;margin-bottom:16px;text-align:center}.feedback-buttons{display:flex;gap:10px}.feedback-btn{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);color:var(--ink);cursor:pointer;flex:1 1;font-family:DM Sans,sans-serif;font-size:13px;font-weight:500;padding:14px 8px;transition:all .2s}.feedback-btn:hover{box-shadow:var(--shadow-hover);transform:translateY(-2px)}.feedback-btn.better:hover{background:#d8f3dc;border-color:#2d6a4f}.feedback-btn.same:hover{background:#fdf6e3;border-color:#e9c46a}.feedback-btn.worse:hover{background:#fde8e3;border-color:#e76f51}.browser-screen{margin:0 auto;max-width:680px;min-height:100vh;padding:32px 24px 48px}.browser-header{margin-bottom:24px}.browser-title{color:var(--ink);font-family:Fraunces,serif;font-size:32px;font-weight:300;margin-bottom:4px}.browser-subtitle{color:var(--ink-soft);font-size:14px}.category-tabs{display:flex;gap:8px;margin-bottom:24px;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}.category-tabs::-webkit-scrollbar{display:none}.category-tab{background:var(--surface);border:1.5px solid var(--border);border-radius:100px;color:var(--ink-soft);cursor:pointer;flex-shrink:0;font-family:DM Sans,sans-serif;font-size:13px;font-weight:500;padding:8px 16px;transition:all .2s;white-space:nowrap}.category-tab:hover{border-color:var(--ink-soft);color:var(--ink)}.browser-list{display:flex;flex-direction:column;gap:10px}.browser-card{align-items:stretch;animation:slideUp .35s ease both;background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);display:flex;overflow:hidden;transition:box-shadow .2s,transform .2s}.browser-card:hover{box-shadow:var(--shadow-hover);transform:translateY(-2px)}.browser-card-main{background:none;border:none;cursor:pointer;flex:1 1;padding:18px 20px;text-align:left}.browser-card-top{display:flex;justify-content:space-between;margin-bottom:8px}.browser-category-badge{color:var(--ink-soft);font-size:12px;font-weight:500}.browser-noise{font-size:12px;font-weight:600}.browser-card-title{color:var(--ink);font-family:Fraunces,serif;font-size:18px;font-weight:300;margin-bottom:10px}.browser-card-footer{align-items:center;display:flex;gap:12px}.browser-duration,.browser-goal{color:var(--ink-soft);font-size:12px}.fav-btn{align-items:center;background:var(--surface-soft);border:none;border-left:1.5px solid var(--border);cursor:pointer;display:flex;flex-shrink:0;font-size:20px;justify-content:center;transition:background .2s,transform .2s;width:52px}.fav-btn:hover{transform:scale(1.1)}.fav-btn.active,.fav-btn:hover{background:#fdf6e3}.empty-state{padding:60px 24px;text-align:center}.report-screen{margin:0 auto;max-width:680px;min-height:100vh;padding:32px 24px 80px}.report-header{margin-bottom:28px}.report-back{background:none;border:none;color:var(--ink-soft);cursor:pointer;display:block;font-family:DM Sans,sans-serif;font-size:14px;margin-bottom:16px;padding:0;transition:color .2s}.report-back:hover,.report-title{color:var(--ink)}.report-title{font-family:Fraunces,serif;font-size:32px;font-weight:300;margin-bottom:4px}.report-subtitle{color:var(--ink-soft);font-size:14px}.report-stats-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(3,1fr);margin-bottom:28px}.report-stat{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column;gap:4px;padding:20px 16px;text-align:center}.report-stat-number{color:var(--ink);font-family:Fraunces,serif;font-size:36px;font-weight:300;line-height:1}.report-stat-label{color:var(--ink-soft);font-size:12px}.report-section{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);margin-bottom:16px;padding:20px 24px}.report-section-title{color:var(--ink-soft);font-size:11px;font-weight:600;letter-spacing:.12em;margin-bottom:20px;text-transform:uppercase}.report-days{display:flex;justify-content:space-between;margin-bottom:16px}.report-day{align-items:center;display:flex;flex-direction:column;gap:8px}.report-day.today .report-day-label{color:var(--accent);font-weight:700}.report-day-dot{align-items:center;border-radius:50%;color:#fff;display:flex;font-size:13px;font-weight:700;height:40px;justify-content:center;transition:transform .2s;width:40px}.report-day-dot.better{background:#2d6a4f}.report-day-dot.same{background:#e9c46a}.report-day-dot.worse{background:#e76f51}.report-day-dot.empty{background:var(--border)}.report-day-count{color:#fff;font-size:13px;font-weight:700}.report-day-label{color:var(--ink-soft);font-size:12px}.report-legend{display:flex;flex-wrap:wrap;gap:16px;justify-content:center}.legend-item{align-items:center;color:var(--ink-soft);display:flex;font-size:12px;gap:6px}.legend-dot{border-radius:50%;height:10px;width:10px}.legend-dot.better{background:#2d6a4f}.legend-dot.same{background:#e9c46a}.legend-dot.worse{background:#e76f51}.legend-dot.empty{background:var(--border)}.report-situations{display:flex;flex-direction:column;gap:10px}.report-situation-row{align-items:center;display:flex;gap:10px}.report-situation-rank{color:var(--ink-soft);flex-shrink:0;font-size:12px;font-weight:700;width:24px}.report-situation-label{color:var(--ink);flex-shrink:0;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:160px}.report-situation-bar-wrap{background:var(--bg);border-radius:100px;flex:1 1;height:8px;overflow:hidden}.report-situation-bar{background:linear-gradient(90deg,#2d6a4f,#74c69d);border-radius:100px;height:100%;min-width:8px;transition:width .6s ease}.report-situation-count{color:var(--ink-soft);flex-shrink:0;font-size:12px;text-align:right;width:24px}.report-categories{display:flex;flex-wrap:wrap;gap:8px}.report-category-pill{align-items:center;background:var(--bg);border:1.5px solid var(--border);border-radius:100px;color:var(--ink-soft);display:flex;font-size:13px;gap:8px;padding:6px 14px}.report-category-count{background:var(--accent);border-radius:100px;color:#fff;font-size:11px;font-weight:700;padding:1px 8px}.report-empty{padding:60px 24px;text-align:center}.challenge-screen{margin:0 auto;max-width:680px;min-height:100vh;padding:32px 24px 80px}.challenge-header{margin-bottom:24px}.challenge-back{background:none;border:none;color:var(--ink-soft);cursor:pointer;display:block;font-family:DM Sans,sans-serif;font-size:14px;margin-bottom:12px;padding:0;transition:color .2s}.challenge-back:hover{color:var(--ink)}.challenge-week-badge{background:var(--accent-light);border-radius:100px;color:var(--accent);display:inline-block;font-size:11px;font-weight:700;letter-spacing:.08em;margin-bottom:10px;padding:4px 12px;text-transform:uppercase}.challenge-title{color:var(--ink);font-family:Fraunces,serif;font-size:32px;font-weight:300}.challenge-card{background:linear-gradient(135deg,#d8f3dc,#b7e4c7);border:1.5px solid #74c69d;border-radius:var(--radius);box-shadow:0 8px 32px #2d6a4f26;display:flex;flex-direction:column;gap:16px;margin-bottom:24px;padding:24px}.challenge-card-top{align-items:flex-start;display:flex;justify-content:space-between}.challenge-emoji{font-size:40px}.challenge-days-left{align-items:flex-end;display:flex;flex-direction:column}.days-number{color:#1a3a2a;font-family:Fraunces,serif;font-size:36px;font-weight:300;line-height:1}.days-label{color:#2d6a4f;font-size:12px;font-weight:500}.challenge-name{color:#1a3a2a;font-family:Fraunces,serif;font-size:26px;font-weight:300}.challenge-desc{color:#2d6a4f;font-size:15px;line-height:1.5}.challenge-progress-section{display:flex;flex-direction:column;gap:8px}.challenge-progress-header{align-items:center;display:flex;justify-content:space-between}.challenge-progress-label{color:#2d6a4f;font-size:13px;font-weight:500}.challenge-progress-count{color:#1a3a2a;font-size:14px;font-weight:700}.challenge-progress-bar{background:#ffffff80;border-radius:100px;height:10px;overflow:hidden}.challenge-progress-fill{background:#2d6a4f;border-radius:100px;height:100%;transition:width .6s ease}.challenge-progress-fill.completed{background:linear-gradient(90deg,#2d6a4f,#52b788)}.challenge-steps{display:flex;gap:8px}.challenge-step-dot{background:#fff6;border:2px solid #2d6a4f4d;border-radius:50%;height:32px;transition:all .3s;width:32px}.challenge-step-dot.done{background:#2d6a4f;border-color:#2d6a4f}.challenge-done{align-items:center;background:#fff9;border-radius:16px;display:flex;flex-direction:column;gap:8px;padding:20px;text-align:center}.challenge-done-icon{font-size:36px}.challenge-done-title{color:#1a3a2a;font-family:Fraunces,serif;font-size:20px;font-weight:300}.challenge-done-sub{color:#2d6a4f;font-size:13px;line-height:1.5}.challenge-info-section{margin-bottom:24px}.challenge-info-title{color:var(--ink-soft);font-size:13px;font-weight:700;letter-spacing:.1em;margin-bottom:14px;text-transform:uppercase}.challenge-info-cards{display:flex;flex-direction:column;gap:10px}.challenge-info-card{align-items:flex-start;background:var(--surface);border:1.5px solid var(--border);border-radius:14px;display:flex;gap:14px;padding:14px 16px}.info-icon{flex-shrink:0;font-size:22px}.challenge-info-card p{color:var(--ink-soft);font-size:14px;line-height:1.5}.challenge-upcoming-title{color:var(--ink-soft);font-size:13px;font-weight:700;letter-spacing:.1em;margin-bottom:14px;text-transform:uppercase}.challenge-upcoming-list{display:flex;flex-direction:column;gap:8px}.upcoming-card{align-items:center;background:var(--surface);border:1.5px solid var(--border);border-radius:14px;display:flex;gap:14px;opacity:.6;padding:12px 16px}.upcoming-emoji{font-size:22px}.upcoming-info{display:flex;flex:1 1;flex-direction:column;gap:2px}.upcoming-title{color:var(--ink);font-size:14px;font-weight:600}.upcoming-desc,.upcoming-week{color:var(--ink-soft);font-size:12px}.upcoming-week{flex-shrink:0;font-weight:500}.history-view{display:flex;flex-direction:column;gap:16px}.history-group{background:var(--surface);border:1.5px solid var(--border);border-radius:16px;box-shadow:var(--shadow);padding:14px}.history-group-header{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}.history-group-chip{align-self:flex-start;background:var(--accent-light);border-radius:999px;color:var(--accent);font-size:11px;font-weight:700;letter-spacing:.08em;padding:4px 8px;text-transform:uppercase}.history-group-date{color:var(--ink-soft);font-size:12px}.history-list{display:flex;flex-direction:column;gap:8px}.history-item{align-items:center;background:#fff;border:1px solid var(--border);border-radius:12px;display:flex;gap:10px;justify-content:space-between;padding:10px}.history-item-main{display:flex;flex-direction:column;gap:6px;min-width:0}.history-item-title-row{align-items:center;display:flex;gap:8px;min-width:0}.history-item-emoji{font-size:18px}.history-item-title{color:var(--ink);font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-item-meta{color:var(--ink-soft);display:flex;flex-wrap:wrap;font-size:12px;gap:8px 12px}.history-item-feedback{flex-shrink:0;font-size:22px;line-height:1}.history-empty{background:var(--surface);border:1.5px solid var(--border);border-radius:16px;padding:40px 18px;text-align:center}.history-empty-icon{font-size:36px;margin-bottom:8px}.history-empty-title{color:var(--ink);font-family:Fraunces,serif;font-size:22px;font-weight:300;margin-bottom:4px}.history-empty-sub{color:var(--ink-soft);font-size:13px}@media (min-width:600px){.history-group{padding:16px}.history-item{padding:12px}}.ranking-screen{margin:0 auto;max-width:680px;min-height:100vh;padding:32px 24px 80px}.ranking-header{margin-bottom:24px}.ranking-back{background:none;border:none;color:var(--ink-soft);cursor:pointer;display:block;font-family:DM Sans,sans-serif;font-size:14px;margin-bottom:16px;padding:0;transition:color .2s}.ranking-back:hover,.ranking-title{color:var(--ink)}.ranking-title{font-family:Fraunces,serif;font-size:32px;font-weight:300;margin-bottom:4px}.ranking-subtitle{color:var(--ink-soft);font-size:14px}.ranking-tabs{display:flex;gap:8px;margin-bottom:24px}.ranking-tab{align-items:center;background:var(--surface);border:1.5px solid var(--border);border-radius:12px;color:var(--ink-soft);cursor:pointer;display:flex;flex:1 1;font-family:DM Sans,sans-serif;font-size:13px;font-weight:500;gap:8px;justify-content:center;padding:10px 16px;transition:all .2s}.ranking-tab.active{background:var(--accent-light);border-color:var(--accent);color:var(--accent)}.ranking-tab-badge{background:#e9c46a;border-radius:100px;color:#7a5c00;font-size:10px;font-weight:700;padding:2px 6px}.ranking-podium{align-items:flex-end;display:flex;gap:8px;justify-content:center;margin-bottom:28px;padding:0 16px}.podium-place{align-items:center;display:flex;flex:1 1;flex-direction:column;gap:6px}.podium-medal{font-size:24px}.podium-emoji{font-size:22px}.podium-name{color:var(--ink);font-size:13px;font-weight:600;text-align:center}.podium-count{color:var(--ink);font-family:Fraunces,serif;font-size:20px;font-weight:300}.podium-block{border-radius:10px 10px 0 0;opacity:.85;width:100%}.pos-1 .podium-block{height:80px}.pos-2 .podium-block{height:56px}.pos-3 .podium-block{height:40px}.ranking-list{display:flex;flex-direction:column;gap:8px}.ranking-row{align-items:center;background:var(--surface);border:1.5px solid var(--border);border-radius:16px;display:flex;gap:12px;padding:14px 16px;transition:all .2s}.ranking-row.leader{background:linear-gradient(135deg,#fffbf0,#fdf6e3);border-color:#e9c46a}.ranking-row.dummy{opacity:.75}.ranking-pos{flex-shrink:0;font-size:18px;text-align:center;width:32px}.ranking-cls-emoji{flex-shrink:0;font-size:22px}.ranking-cls-info{display:flex;flex:1 1;flex-direction:column;gap:6px;min-width:0}.ranking-cls-name-row{align-items:center;display:flex;gap:8px}.ranking-cls-name{color:var(--ink);font-size:14px;font-weight:600}.ranking-trend{font-size:14px;font-weight:700}.ranking-bar-wrap{background:var(--bg);border-radius:100px;height:6px;overflow:hidden}.ranking-bar{background:var(--accent);border-radius:100px;height:100%;min-width:4px;transition:width .8s ease}.ranking-cls-stats{align-items:flex-end;display:flex;flex-direction:column;flex-shrink:0}.ranking-cls-count{color:var(--ink);font-family:Fraunces,serif;font-size:22px;font-weight:300;line-height:1}.ranking-cls-label{color:var(--ink-soft);font-size:11px}.ranking-rate{flex-shrink:0;font-size:12px;font-weight:700;margin-left:4px}.school-ranking{display:flex;flex-direction:column;gap:16px}.school-ranking-banner{align-items:flex-start;background:linear-gradient(135deg,#fdf6e3,#fff8f0);border:1.5px solid #e9c46a;border-radius:var(--radius);display:flex;gap:12px;padding:16px 20px}.banner-icon{flex-shrink:0;font-size:28px}.banner-title{color:var(--ink);font-size:15px;font-weight:600;margin-bottom:4px}.banner-sub{color:var(--ink-soft);font-size:13px;line-height:1.5}.school-ranking-footer{color:var(--ink-soft);font-size:12px;padding:8px;text-align:center}.ranking-empty{padding:60px 24px;text-align:center}.empty-icon{font-size:48px;margin-bottom:16px}.empty-text{color:var(--ink);font-family:Fraunces,serif;font-size:20px;font-weight:300;margin-bottom:8px}.empty-hint{color:var(--ink-soft);font-size:14px}.director-view{gap:14px}.director-pin-card,.director-view{display:flex;flex-direction:column}.director-pin-card{background:var(--surface);border:1.5px solid var(--border);border-radius:16px;gap:10px;padding:18px}.director-pin-title{color:var(--ink);font-family:Fraunces,serif;font-size:20px;font-weight:300}.director-pin-subtitle{color:var(--ink-soft);font-size:13px}.director-pin-input{border:1.5px solid var(--border);border-radius:12px;font-size:18px;letter-spacing:.2em;padding:10px 12px;text-align:center;width:100%}.director-pin-error{color:#c0392b;font-size:12px}.director-pin-btn{background:var(--accent);border:none;border-radius:999px;color:#fff;cursor:pointer;font-weight:600;padding:10px 16px}.director-banner{align-items:flex-start;background:linear-gradient(135deg,#eef7ff,#f8fcff);border:1.5px solid #b7d3f2;border-radius:var(--radius);display:flex;gap:12px;padding:14px 16px}.director-table-wrap{background:var(--surface);border:1.5px solid var(--border);border-radius:16px;overflow:hidden}.director-table{border-collapse:collapse;font-size:13px;width:100%}.director-table td,.director-table th{border-bottom:1px solid var(--border);padding:10px 12px;text-align:left;vertical-align:top}.director-table th{background:var(--surface-soft);color:var(--ink-soft);font-size:11px;letter-spacing:.05em;text-transform:uppercase}.director-class-cell{align-items:center;display:flex;font-weight:600;gap:8px}.director-favorite-cell{max-width:240px}.director-rate{font-weight:700}.director-rate.good{color:#2d6a4f}.director-rate.mid{color:#b58400}.director-mobile-cards{display:none}.director-empty-cell{color:var(--ink-soft);padding:16px;text-align:center}@media (max-width:760px){.director-table{display:none}.director-mobile-cards{display:flex;flex-direction:column;gap:8px;padding:10px}.director-card{background:#fff;border:1px solid var(--border);border-radius:12px;padding:12px}.director-card-title{align-items:center;color:var(--ink);display:flex;gap:8px;margin-bottom:8px}.director-card p{color:var(--ink-soft);font-size:13px;margin:4px 0}.director-card p span:first-child{color:var(--ink);font-weight:600}}.achievements-screen{margin:0 auto;max-width:680px;min-height:100vh;padding:32px 24px 80px}.achievements-header{margin-bottom:20px}.achievements-back{background:none;border:none;color:var(--ink-soft);cursor:pointer;display:block;font-family:DM Sans,sans-serif;font-size:14px;margin-bottom:16px;padding:0;transition:color .2s}.achievements-back:hover{color:var(--ink)}.achievements-title{color:var(--ink);font-family:Fraunces,serif;font-size:32px;font-weight:300;margin-bottom:4px}.achievements-subtitle{color:var(--ink-soft);font-size:14px}.achievements-progress{display:flex;flex-direction:column;gap:8px;margin-bottom:20px}.ach-progress-bar{background:var(--border);border-radius:100px;height:10px;overflow:hidden}.ach-progress-fill{background:linear-gradient(90deg,#2d6a4f,#74c69d);border-radius:100px;height:100%;transition:width .8s ease}.ach-progress-label{color:var(--ink-soft);font-size:13px;text-align:right}.achievements-filters{display:flex;gap:8px;margin-bottom:20px}.ach-filter{background:var(--surface);border:1.5px solid var(--border);border-radius:100px;color:var(--ink-soft);cursor:pointer;flex:1 1;font-family:DM Sans,sans-serif;font-size:12px;font-weight:500;padding:8px 10px;transition:all .2s}.ach-filter.active{background:var(--accent-light);border-color:var(--accent);color:var(--accent)}.achievements-grid{display:flex;flex-direction:column;gap:10px}.achievement-card{align-items:center;animation:slideUp .3s ease both;background:var(--surface);border:1.5px solid var(--border);border-radius:16px;display:flex;gap:14px;padding:16px 18px;transition:all .2s}.achievement-card.unlocked{background:linear-gradient(135deg,#fffbf0,#fdf6e3);border-color:#e9c46a}.achievement-card.locked{opacity:.55}.ach-emoji{align-items:center;background:var(--bg);border-radius:14px;display:flex;flex-shrink:0;font-size:28px;height:48px;justify-content:center;width:48px}.ach-emoji.grayscale{filter:grayscale(1);opacity:.4}.ach-info{display:flex;flex:1 1;flex-direction:column;gap:3px}.ach-title{color:var(--ink);font-size:15px;font-weight:600}.ach-desc{color:var(--ink-soft);font-size:12px;line-height:1.4}.ach-check{align-items:center;background:#2d6a4f;border-radius:50%;color:#fff;flex-shrink:0;font-size:12px;font-weight:700;height:24px;width:24px}.ach-check,.qr-overlay{display:flex;justify-content:center}.qr-overlay{align-items:flex-end;animation:fadeIn .2s ease;background:#00000080;inset:0;position:fixed;z-index:200}.qr-panel{align-items:center;animation:slideUp .3s cubic-bezier(.34,1.56,.64,1);background:var(--bg);border-radius:28px 28px 0 0;display:flex;flex-direction:column;gap:20px;max-width:480px;padding:28px 24px 48px;width:100%}.qr-header{position:relative;text-align:center;width:100%}.qr-close{background:var(--border);border:none;border-radius:50%;color:var(--ink-soft);cursor:pointer;font-size:13px;height:32px;position:absolute;right:0;top:0;transition:background .2s;width:32px}.qr-close:hover{background:var(--ink-soft);color:#fff}.qr-title{color:var(--ink);font-family:Fraunces,serif;font-size:26px;font-weight:300;margin-bottom:8px}.qr-subtitle{color:var(--ink-soft);font-size:14px;line-height:1.5;margin:0 auto;max-width:320px}.qr-class-badge{align-items:center;border:2px solid;border-radius:100px;display:flex;font-family:DM Sans,sans-serif;font-size:15px;gap:8px;padding:8px 18px}.qr-code-wrapper{background:#fff;border-radius:20px;box-shadow:0 8px 32px #0000001f;padding:4px}.qr-svg{border-radius:16px;display:block}.qr-info-row{gap:8px;justify-content:center;width:100%}.qr-info-item,.qr-info-row{align-items:center;display:flex}.qr-info-item{color:var(--ink-soft);flex-direction:column;font-size:11px;gap:4px;max-width:70px;text-align:center}.qr-info-icon{font-size:20px}.qr-info-arrow{color:var(--border);font-size:16px}.qr-coming-soon{align-items:flex-start;background:var(--surface);border:1.5px solid var(--border);border-radius:16px;display:flex;gap:12px;padding:14px 16px;width:100%}.qr-coming-icon{flex-shrink:0;font-size:22px}.qr-coming-title{color:var(--ink);font-size:13px;font-weight:600;margin-bottom:4px}.qr-coming-sub{color:var(--ink-soft);font-size:12px;line-height:1.4}.qr-copy-btn{background:var(--ink);border:none;border-radius:var(--radius);color:#fff;cursor:pointer;font-family:DM Sans,sans-serif;font-size:15px;font-weight:500;padding:16px;transition:all .2s;width:100%}.qr-copy-btn:hover{background:#2c2c45}.qr-copy-btn.copied{background:#2d6a4f}.manager-screen{margin:0 auto;max-width:680px;min-height:100vh;padding:32px 24px 80px}.manager-back{background:none;border:none;color:var(--ink-soft);cursor:pointer;display:block;font-family:DM Sans,sans-serif;font-size:14px;margin-bottom:24px;padding:0;transition:color .2s}.manager-back:hover{color:var(--ink)}.manager-header{margin-bottom:28px}.manager-title{color:var(--ink);font-family:Fraunces,serif;font-size:32px;font-weight:300;margin-bottom:4px}.manager-subtitle{color:var(--ink-soft);font-size:14px}.class-list{display:flex;flex-direction:column;gap:10px;margin-bottom:16px}.class-card{align-items:center;background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);display:flex;overflow:hidden;transition:all .2s}.class-card.active{border-color:var(--cls-color);box-shadow:0 4px 20px #00000014,inset 3px 0 0 var(--cls-color)}.class-card-main{align-items:center;background:none;border:none;cursor:pointer;display:flex;flex:1 1;gap:14px;min-width:0;padding:18px 20px;text-align:left;transition:background .2s}.class-card-main:hover{background:var(--surface-soft)}.class-card-emoji{align-items:center;background:var(--bg);border-radius:12px;display:flex;flex-shrink:0;font-size:28px;height:44px;justify-content:center;width:44px}.class-card-info{display:flex;flex:1 1;flex-direction:column;gap:2px;min-width:0}.class-card-name{color:var(--ink);font-size:16px;font-weight:500}.class-card-level,.class-card-notes{color:var(--ink-soft);font-size:12px}.class-card-notes{font-style:italic;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.class-active-badge{background:var(--cls-color);border-radius:100px;color:#fff;flex-shrink:0;font-size:11px;font-weight:600;padding:3px 10px}.class-card-actions{border-left:1.5px solid var(--border);display:flex;flex-direction:column}.class-action-btn{background:none;border:none;cursor:pointer;flex:1 1;font-size:15px;min-width:44px;padding:12px;transition:background .2s}.class-action-btn:hover{background:var(--surface-soft)}.class-action-btn.delete:hover{background:#fde8e3}.add-class-btn{background:none;border:1.5px dashed var(--border);border-radius:var(--radius);color:var(--ink-soft);cursor:pointer;font-family:DM Sans,sans-serif;font-size:15px;font-weight:500;padding:18px;transition:all .2s;width:100%}.add-class-btn:hover{background:var(--accent-light);border-color:var(--accent);color:var(--accent)}.class-form{display:flex;flex-direction:column;gap:24px}.class-form-title{color:var(--ink);font-family:Fraunces,serif;font-size:28px;font-weight:300}.form-field{display:flex;flex-direction:column;gap:10px}.form-label{color:var(--ink-soft);font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase}.form-input{background:var(--surface);border:1.5px solid var(--border);border-radius:14px;color:var(--ink);font-family:DM Sans,sans-serif;font-size:15px;outline:none;padding:14px 18px;transition:border-color .2s}.form-input:focus{border-color:var(--accent)}.form-textarea{background:var(--surface);border:1.5px solid var(--border);border-radius:14px;color:var(--ink);font-family:DM Sans,sans-serif;font-size:14px;line-height:1.6;outline:none;padding:14px 18px;resize:vertical;transition:border-color .2s}.form-textarea:focus{border-color:var(--accent)}.level-grid{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(3,1fr)}.level-card{align-items:center;background:var(--surface);border:1.5px solid var(--border);border-radius:14px;cursor:pointer;display:flex;flex-direction:column;gap:4px;padding:16px 8px;text-align:center;transition:all .2s}.level-card.active,.level-card:hover{border-color:var(--accent)}.level-card.active{background:var(--accent-light)}.level-emoji{font-size:24px}.level-name{color:var(--ink);font-size:12px;font-weight:600}.level-desc{color:var(--ink-soft);font-size:11px}.emoji-grid{display:flex;flex-wrap:wrap;gap:8px}.emoji-option{align-items:center;background:var(--surface);border:1.5px solid var(--border);border-radius:12px;cursor:pointer;display:flex;font-size:22px;height:44px;justify-content:center;transition:all .2s;width:44px}.emoji-option:hover{border-color:var(--accent);transform:scale(1.1)}.emoji-option.active{background:var(--accent-light);border-color:var(--accent)}.color-grid{display:flex;flex-wrap:wrap;gap:10px}.color-option{border:2.5px solid #0000;border-radius:50%;cursor:pointer;height:36px;transition:all .2s;width:36px}.color-option.active,.color-option:hover{transform:scale(1.15)}.color-option.active{border-color:var(--ink);box-shadow:0 0 0 2px #fff,0 0 0 4px var(--ink)}.form-tips{background:var(--accent-light);border:1.5px solid var(--accent);border-radius:14px;display:flex;flex-direction:column;gap:6px;padding:16px 20px}.form-tips-title{color:var(--accent);font-size:13px;font-weight:600;margin-bottom:4px}.form-tip{color:var(--ink-soft);font-size:13px;line-height:1.4}.form-actions{display:flex;gap:10px;padding-bottom:16px}.form-cancel{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);color:var(--ink-soft);cursor:pointer;flex:1 1;font-family:DM Sans,sans-serif;font-size:14px;padding:14px;transition:all .2s}.form-cancel:hover{border-color:var(--ink-soft);color:var(--ink)}.form-save{background:var(--accent);border:none;border-radius:var(--radius);color:#fff;cursor:pointer;flex:2 1;font-family:DM Sans,sans-serif;font-size:14px;font-weight:500;padding:14px;transition:all .2s}.form-save:disabled{cursor:not-allowed;opacity:.4}.form-save:not(:disabled):hover{background:#235c43}.delete-overlay{align-items:center;background:#0006;display:flex;inset:0;justify-content:center;padding:24px;position:fixed;z-index:200}.delete-dialog{background:var(--surface);border-radius:var(--radius);box-shadow:0 20px 60px #0003;display:flex;flex-direction:column;gap:12px;max-width:360px;padding:28px;width:100%}.delete-title{color:var(--ink);font-family:Fraunces,serif;font-size:22px;font-weight:300}.delete-sub{color:var(--ink-soft);font-size:14px;line-height:1.5}.delete-actions{display:flex;gap:10px;margin-top:4px}.delete-confirm{background:#e63946;border:none;border-radius:100px;color:#fff;cursor:pointer;flex:1 1;font-family:DM Sans,sans-serif;font-size:14px;padding:12px;transition:background .2s}.delete-confirm:hover{background:#c1121f}.delete-cancel{background:var(--surface-soft);border:1.5px solid var(--border);border-radius:100px;color:var(--ink-soft);cursor:pointer;flex:1 1;font-family:DM Sans,sans-serif;font-size:14px;padding:12px}.moodvote-screen{align-items:center;background:var(--bg);display:flex;justify-content:center;min-height:100vh;padding:20px}.moodvote-card{background:var(--surface);border:1.5px solid var(--border);border-radius:20px;padding:22px;text-align:center;width:min(560px,100%)}.moodvote-class{color:var(--ink-soft);font-size:12px;margin-bottom:8px}.moodvote-title{color:var(--ink);font-family:Fraunces,serif;font-size:clamp(28px,6vw,42px);font-weight:300;margin-bottom:18px}.moodvote-grid{grid-gap:10px;display:grid;gap:10px;grid-template-columns:repeat(5,minmax(0,1fr))}.moodvote-btn{align-items:center;background:#fff;border:1.5px solid var(--border);border-radius:14px;cursor:pointer;display:flex;flex-direction:column;gap:6px;padding:10px 6px}.moodvote-btn:hover{border-color:var(--accent)}.moodvote-emoji{font-size:30px}.moodvote-label{color:var(--ink-soft);font-size:11px}.moodvote-thanks{color:var(--accent);font-family:Fraunces,serif;font-size:44px;padding:20px 0 6px}.legal-screen{margin:0 auto;max-width:680px;min-height:100vh;padding:32px 24px 80px}.legal-header{margin-bottom:24px}.legal-back{background:none;border:none;color:var(--ink-soft);cursor:pointer;display:block;font-family:DM Sans,sans-serif;font-size:14px;margin-bottom:16px;padding:0;transition:color .2s}.legal-back:hover,.legal-title{color:var(--ink)}.legal-title{font-family:Fraunces,serif;font-size:32px;font-weight:300}.legal-tabs{display:flex;gap:8px;margin-bottom:24px}.legal-tab{background:var(--surface);border:1.5px solid var(--border);border-radius:12px;color:var(--ink-soft);cursor:pointer;flex:1 1;font-family:DM Sans,sans-serif;font-size:13px;font-weight:500;padding:10px 8px;transition:all .2s}.legal-tab.active{background:var(--accent-light);border-color:var(--accent);color:var(--accent)}.legal-content{animation:fadeIn .3s ease;gap:20px}.legal-content,.legal-section{display:flex;flex-direction:column}.legal-section{background:var(--surface);border:1.5px solid var(--border);border-radius:16px;gap:8px;padding:20px}.legal-section-title{color:var(--accent);font-size:13px;font-weight:700;letter-spacing:.08em;margin-bottom:4px;text-transform:uppercase}.legal-section p{color:var(--ink-soft);font-size:14px;line-height:1.6}.legal-list{display:flex;flex-direction:column;gap:6px;list-style:none;padding:0}.legal-list li{color:var(--ink-soft);font-size:14px;line-height:1.5;padding-left:16px;position:relative}.legal-list li:before{color:var(--accent);content:"·";font-weight:700;left:0;position:absolute}.legal-beta-notice{align-items:flex-start;background:linear-gradient(135deg,#fdf6e3,#fff8f0);border:1.5px solid #e9c46a;border-radius:14px;display:flex;gap:12px;padding:14px 16px}.beta-icon{flex-shrink:0;font-size:20px}.legal-beta-notice p{color:var(--ink-soft);font-size:13px;line-height:1.5}.whatsnew-overlay{align-items:flex-end;animation:fadeIn .3s ease;background:#0009;display:flex;inset:0;justify-content:center;position:fixed;z-index:300}.whatsnew-panel{animation:slideUp .4s cubic-bezier(.34,1.56,.64,1);background:var(--bg);border-radius:28px 28px 0 0;display:flex;flex-direction:column;gap:24px;max-height:90vh;max-width:680px;overflow-y:auto;padding:32px 24px 48px;width:100%}.whatsnew-header{text-align:center}.whatsnew-version-badge{background:var(--accent-light);border-radius:100px;color:var(--accent);display:inline-block;font-size:11px;font-weight:700;letter-spacing:.1em;margin-bottom:12px;padding:4px 14px;text-transform:uppercase}.whatsnew-title{color:var(--ink);font-family:Fraunces,serif;font-size:32px;font-weight:300;margin-bottom:6px}.whatsnew-date{color:var(--ink-soft);font-size:13px}.whatsnew-changes{display:flex;flex-direction:column;gap:10px}.whatsnew-item{align-items:flex-start;animation:slideIn .4s ease both;background:var(--surface);border:1.5px solid var(--border);border-radius:14px;display:flex;gap:14px;padding:14px 16px}@keyframes slideIn{0%{opacity:0;transform:translateX(-12px)}to{opacity:1;transform:translateX(0)}}.whatsnew-emoji{flex-shrink:0;font-size:22px;text-align:center;width:32px}.whatsnew-text{color:var(--ink);font-size:14px;line-height:1.5;padding-top:2px}.whatsnew-footer{align-items:center;display:flex;flex-direction:column;gap:16px}.whatsnew-feedback{background:linear-gradient(135deg,#fdf6e3,#fff8f0);border:1.5px solid #e9c46a;border-radius:16px;color:var(--ink-soft);font-size:14px;line-height:1.6;padding:14px 20px;text-align:center;width:100%}.whatsnew-btn{background:var(--accent);border:none;border-radius:var(--radius);color:#fff;cursor:pointer;font-family:DM Sans,sans-serif;font-size:16px;font-weight:500;padding:18px;transition:all .2s;width:100%}.whatsnew-btn:hover{background:#235c43;box-shadow:0 8px 24px #2d6a4f4d;transform:translateY(-1px)}.feedback-overlay{align-items:flex-end;animation:fadeIn .2s ease;background:#00000080;display:flex;inset:0;justify-content:center;position:fixed;z-index:250}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.feedback-panel{animation:slideUp .3s cubic-bezier(.34,1.56,.64,1);background:var(--bg);border-radius:28px 28px 0 0;display:flex;flex-direction:column;gap:20px;max-height:90vh;max-width:680px;overflow-y:auto;padding:28px 24px 48px;width:100%}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.feedback-header{position:relative;text-align:center}.feedback-close{background:var(--border);border:none;border-radius:50%;color:var(--ink-soft);cursor:pointer;font-size:13px;height:32px;position:absolute;right:0;top:0;transition:all .2s;width:32px}.feedback-close:hover{background:var(--ink-soft);color:#fff}.feedback-title{color:var(--ink);font-family:Fraunces,serif;font-size:26px;font-weight:300;margin-bottom:6px}.feedback-subtitle{color:var(--ink-soft);font-size:14px;margin-bottom:16px}.feedback-steps{display:flex;gap:8px;justify-content:center}.feedback-step-dot{background:var(--border);border-radius:50%;height:8px;transition:all .3s;width:8px}.feedback-step-dot.active{background:var(--accent);border-radius:100px;width:24px}.feedback-body{animation:fadeSlide .3s ease;display:flex;flex-direction:column;gap:14px}@keyframes fadeSlide{0%{opacity:0;transform:translateX(12px)}to{opacity:1;transform:translateX(0)}}.feedback-section-label{color:var(--ink-soft);font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.feedback-type-grid{grid-gap:10px;display:grid;gap:10px;grid-template-columns:repeat(2,1fr)}.feedback-type-btn{align-items:center;background:var(--surface);border:1.5px solid var(--border);border-radius:16px;cursor:pointer;display:flex;font-family:DM Sans,sans-serif;gap:10px;padding:14px 16px;text-align:left;transition:all .2s}.feedback-type-btn.active,.feedback-type-btn:hover{border-color:var(--accent)}.feedback-type-btn.active{background:var(--accent-light)}.ft-emoji{flex-shrink:0;font-size:22px}.ft-label{color:var(--ink);font-size:13px;font-weight:500}.feedback-ratings{display:flex;flex-direction:column;gap:8px}.feedback-rating-btn{align-items:center;background:var(--surface);border:1.5px solid var(--border);border-radius:14px;cursor:pointer;display:flex;font-family:DM Sans,sans-serif;gap:14px;padding:12px 16px;transition:all .2s}.feedback-rating-btn:hover{border-color:var(--accent)}.feedback-rating-btn.active{background:var(--accent-light);border-color:var(--accent)}.fr-emoji{font-size:24px}.fr-label{color:var(--ink);font-size:14px;font-weight:500}.feedback-textarea{background:var(--surface);border:1.5px solid var(--border);border-radius:16px;color:var(--ink);font-family:DM Sans,sans-serif;font-size:15px;line-height:1.6;outline:none;padding:14px 16px;resize:vertical;transition:border-color .2s;width:100%}.feedback-textarea:focus{border-color:var(--accent)}.feedback-email{background:var(--surface);border:1.5px solid var(--border);border-radius:14px;color:var(--ink);font-family:DM Sans,sans-serif;font-size:14px;outline:none;padding:12px 16px;transition:border-color .2s;width:100%}.feedback-email:focus{border-color:var(--accent)}.feedback-nav{display:flex;gap:10px}.feedback-back-btn{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);color:var(--ink-soft);cursor:pointer;font-family:DM Sans,sans-serif;font-size:14px;padding:14px 20px;transition:all .2s}.feedback-back-btn:hover{border-color:var(--ink-soft);color:var(--ink)}.feedback-next-btn{background:var(--accent);border:none;border-radius:var(--radius);color:#fff;cursor:pointer;flex:1 1;font-family:DM Sans,sans-serif;font-size:15px;font-weight:500;padding:14px;transition:all .2s}.feedback-next-btn:disabled{cursor:not-allowed;opacity:.4}.feedback-next-btn:not(:disabled):hover{background:#235c43}.feedback-submit-btn{background:var(--accent);border:none;border-radius:var(--radius);color:#fff;cursor:pointer;flex:1 1;font-family:DM Sans,sans-serif;font-size:15px;font-weight:500;padding:14px;transition:all .2s}.feedback-submit-btn:disabled{cursor:not-allowed;opacity:.4}.feedback-submit-btn:not(:disabled):hover{background:#235c43}.feedback-sent{align-items:center;display:flex;flex-direction:column;gap:16px;padding:32px 0;text-align:center}.feedback-sent-icon{font-size:56px}.feedback-sent-title{color:var(--ink);font-family:Fraunces,serif;font-size:26px;font-weight:300}.feedback-sent-sub{color:var(--ink-soft);font-size:15px;line-height:1.6;max-width:320px}.bottom-nav{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:var(--surface);background:#ffffffeb;border-top:1.5px solid var(--border);bottom:0;height:var(--nav-height);justify-content:space-around;left:0;padding:0 16px;position:fixed;right:0;z-index:100}.bottom-nav,.nav-item{align-items:center;display:flex}.nav-item{background:none;border:none;border-radius:16px;cursor:pointer;flex:1 1;flex-direction:column;gap:4px;padding:8px;position:relative;transition:background .2s}.nav-item:hover{background:var(--surface-soft)}.nav-icon{font-size:22px;line-height:1;position:relative}.nav-badge{background:var(--accent-warm);border-radius:100px;color:#fff;font-family:DM Sans,sans-serif;font-size:10px;font-weight:700;padding:1px 5px;position:absolute;right:-8px;top:-4px}.nav-label{color:var(--ink-soft);font-size:11px;font-weight:400;transition:color .2s}.nav-item.active .nav-label{color:var(--accent);font-weight:600}.nav-item.active .nav-icon{transform:scale(1.1)}:root{--bg:#f5f0e8;--surface:#fff;--surface-soft:#faf8f4;--ink:#1a1a2e;--ink-soft:#5a5a7a;--accent:#2d6a4f;--accent-light:#d8f3dc;--accent-warm:#e76f51;--border:#e8e2d6;--radius:20px;--shadow:0 4px 24px #1a1a2e14;--shadow-hover:0 8px 40px #1a1a2e24;--nav-height:72px}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f5f0e8;background:var(--bg);color:#1a1a2e;color:var(--ink);font-family:DM Sans,sans-serif}.app,body{min-height:100vh}.app{display:flex;flex-direction:column;max-width:100vw;overflow-x:hidden}.app-content{flex:1 1;padding-bottom:72px;padding-bottom:var(--nav-height)}@media (max-width:480px){:root{--radius:16px}.start-screen{gap:12px;padding:32px 16px 24px}.start-title{font-size:28px}.situation-card{gap:12px;padding:14px 16px}.situation-label{font-size:14px}.situation-emoji{font-size:20px;height:36px;width:36px}.dashboard-row{gap:6px;grid-template-columns:repeat(3,1fr)}.dashboard-mini-card{padding:10px 8px}.dmc-emoji{font-size:18px}.dmc-title{font-size:11px}.recent-cards{gap:6px}.recent-card{padding:10px 6px}.recent-title{font-size:11px}.bottom-nav{padding:0 8px}.nav-label{font-size:10px}.nav-icon{font-size:20px}.detail-topbar-actions{gap:4px}.audio-toggle-btn,.beamer-btn,.detail-fav-btn,.guide-btn{font-size:11px;padding:5px 8px}.game-screen-body{padding:16px 16px 80px}.memory-grid{gap:6px}.memory-card-back,.memory-card-front{font-size:22px}.sequence-numpad{gap:6px}.numpad-btn{border-radius:12px;font-size:22px}.reaction-circle{height:200px;width:200px}.reaction-hint{font-size:24px}.ranking-podium{gap:4px;padding:0 8px}.podium-name{font-size:11px}.feedback-panel,.guide-panel,.qr-panel,.whatsnew-panel{padding:20px 16px 36px}.gamehub-grid{gap:8px;grid-template-columns:repeat(2,1fr)}.game-card{padding:14px 12px}.class-list{gap:8px}.level-grid{grid-template-columns:repeat(3,1fr)}.math-question{font-size:28px}.math-input{font-size:24px;width:120px}}@media (max-width:360px){.dashboard-row{gap:4px;grid-template-columns:repeat(3,1fr)}.dmc-title{font-size:10px}.start-title{font-size:24px}.situation-label{font-size:13px}}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:#0000}::-webkit-scrollbar-thumb{background:#e8e2d6;background:var(--border);border-radius:100px}.bottom-nav{padding-bottom:max(8px,env(safe-area-inset-bottom))}button:focus-visible{outline:2px solid #2d6a4f;outline:2px solid var(--accent);outline-offset:2px}button{-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}
/*# sourceMappingURL=main.849c7439.css.map*/