:root{--swai-purple:#7c3aed;--swai-purple-dark:#5b21b6;--swai-purple-light:#ede9fe;--swai-mode-daily:#7c3aed;--swai-mode-roleplay:#10b981;--swai-mode-topic:#f59e0b;--swai-mode-quiz:#06b6d4;--swai-mode-debate:#ec4899;--swai-bg:#f8fafc;--swai-surface:#fff;--swai-sidebar-bg:#fff;--swai-chat-sidebar-bg:#1e1b2e;--swai-chat-sidebar-text:#e2e8f0;--swai-text:#0f172a;--swai-text-muted:#64748b;--swai-border:#e2e8f0;--swai-success:#10b981;--swai-warning:#f59e0b;--swai-danger:#ef4444;--swai-info:#06b6d4;--swai-font-sans:"Inter", "Poppins", system-ui, -apple-system, sans-serif;--swai-font-size-base:16px;--swai-radius-sm:8px;--swai-radius-md:12px;--swai-radius-lg:20px;--swai-shadow-card:0 4px 16px #0f172a14;--swai-space-unit:4px;--black:#201e1a;--white:#fff;--pure-black:#0c0b08;--light-gray:#f7f6f2;--filter-bg:#fbfaf7;--button-active:#eceae4;--border-warm:#d6d1c7;--border-light:#eceae4;--dark-surface-1:#292723;--dark-surface-2:#2c2a25;--dark-surface-3:#302d27;--dark-surface-4:#22201c;--gray-80:#201e1ad1;--gray-48:#201e1a85;--overlay:#d6d1c7a6;--nav-bg:#100f0ce0;--apple-blue:#bc9c5d;--link-blue:#674e11;--link-blue-dark:#e8cea0;--warm-terracotta:#d95646;--warm-coral:#e8765a;--warm-mustard:#e5b84b;--warm-olive:#6c9a46;--warm-rose:#c8789a;--warm-tangerine:#e27438;--jewel-sapphire:#2e56a4;--jewel-teal:#1c8092;--jewel-emerald:#1a9a5e;--jewel-turquoise:#4cb7be;--jewel-amethyst:#754fa2;--jewel-lilac:#c290d4;--error:#ff3b30;--error-ring:#ff3b3033;--badge-new-bg:#fbf5e8;--badge-new-border:#e8cea0;--badge-contact-bg:#fdf2e9;--badge-contact-border:#f2c7a7;--badge-qualified-bg:#eef6eb;--badge-qualified-border:#cce2c3;--badge-proposal-bg:#f3effa;--badge-proposal-border:#d5c8eb;--badge-won-bg:#e8f6f0;--badge-won-border:#b3e6d0;--text-body:var(--black);--text-secondary:var(--gray-80);--text-tertiary:var(--gray-48);--text-on-dark:#fff;--text-on-dark-muted:#ffffffc7;--link:var(--warm-mustard);--link-on-dark:var(--warm-mustard);--link-hover:var(--warm-tangerine);--link-on-dark-hover:var(--link-blue-dark);--surface-page:var(--white);--surface-alt:var(--light-gray);--surface-card:var(--white);--surface-card-dark:var(--dark-surface-1);--surface-field:var(--filter-bg);--border-default:var(--border-warm);--border-subtle:var(--border-light);--border-gold-faint:#bc9c5d33;--accent:var(--apple-blue);--accent-wash:#bc9c5d1a;--accent-row-wash:#bc9c5d08;--focus-ring:#bc9c5d40;--container-max-width:1200px;--text-display:56px;--text-hero:64px;--text-h2:38px;--text-h3:24px;--text-h4:20px;--text-base:16px;--text-sm:14px;--text-xs:12px;--text-nano:10px;--leading-display:1.1;--leading-h2:1.2;--leading-h3:1.25;--leading-h4:1.35;--leading-body:1.6;--leading-tight:1.4;--leading-sm:1.5;--tracking-hero:.5px;--tracking-h2:-.5px;--tracking-h3:-.3px;--tracking-h4:-.2px;--tracking-body:-.2px;--tracking-sm:-.1px;--tracking-none:0px;--tracking-caps:.5px;--weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--space-2:2px;--space-4:4px;--space-6:6px;--space-8:8px;--space-10:10px;--space-14:14px;--space-17:17px;--space-20:20px;--space-24:24px;--space-28:28px;--space-32:32px;--space-48:48px;--space-64:64px;--space-96:96px;--pad-section-y:64px;--pad-section-x:32px;--pad-card:32px 28px;--pad-btn:9px 24px;--pad-input:10px 14px;--pad-cell:18px 24px;--pad-th:14px 24px;--nav-height:50px;--radius-surface:12px;--radius-micro:12px;--radius-default:12px;--radius-search:12px;--radius-feature:12px;--radius-pill:12px;--radius-circle:50%;--shadow-card:#201e1a1f 3px 5px 30px 0px;--shadow-panel:0 4px 24px #201e1a12;--shadow-dark-card:0 4px 20px #0006;--shadow-dark-card-hover:0 6px 28px #bc9c5d59;--blur-nav:saturate(180%) blur(20px);--ring-focus:0 0 0 3px var(--focus-ring);--ring-error:0 0 0 3px var(--error-ring);--ring-selected:0 0 0 2px var(--accent);--transition-fast:.15s;--transition-shadow:.3s;--font-hero:"Oswald",sans-serif;--font-header:"Poppins",sans-serif;--font-body:"Inter",-apple-system,BlinkMacSystemFont,sans-serif;--font-mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,monospace;--icon-size-sm:12px;--icon-size-md:14px;--icon-size-lg:18px;--icon-size-xl:26px}*{box-sizing:border-box;margin:0;padding:0}html{font-size:var(--swai-font-size-base)}body{font-family:var(--swai-font-sans);background:var(--swai-bg);color:var(--swai-text);min-height:100vh}h1{margin-bottom:calc(var(--swai-space-unit) * 4);font-size:1.5rem}h2{margin-bottom:calc(var(--swai-space-unit) * 2);font-size:1.1rem}a{color:var(--swai-purple)}.text-muted{color:var(--swai-text-muted);font-size:.9rem}.brand{font-size:1.4rem;font-weight:700}.brand--large{font-size:3rem}.brand__accent{color:var(--swai-purple)}.button{border:1px solid var(--swai-border);border-radius:var(--swai-radius-md);background:var(--swai-surface);color:var(--swai-text);font:inherit;padding:calc(var(--swai-space-unit) * 2.5) calc(var(--swai-space-unit) * 5);cursor:pointer;font-weight:500;text-decoration:none;display:inline-block}.button--primary{background:var(--swai-purple);border-color:var(--swai-purple);color:#fff}.button--primary:hover:not(:disabled){background:var(--swai-purple-dark)}.button--danger{color:var(--swai-danger);border-color:var(--swai-danger)}.button:disabled{opacity:.6;cursor:not-allowed}.link-button{font:inherit;color:var(--swai-text-muted);cursor:pointer;background:0 0;border:none}.auth-page{justify-content:center;align-items:center;gap:calc(var(--swai-space-unit) * 4);min-height:100vh;padding:calc(var(--swai-space-unit) * 6);text-align:center;flex-direction:column;display:flex}.auth-page__tagline{color:var(--swai-text-muted)}.auth-card{gap:calc(var(--swai-space-unit) * 4);background:var(--swai-surface);border:1px solid var(--swai-border);border-radius:var(--swai-radius-lg);width:min(380px,100%);box-shadow:var(--swai-shadow-card);padding:calc(var(--swai-space-unit) * 8);text-align:left;flex-direction:column;display:flex}.auth-card label{gap:calc(var(--swai-space-unit) * 1.5);flex-direction:column;font-size:.9rem;font-weight:500;display:flex}.auth-card input{font:inherit;padding:calc(var(--swai-space-unit) * 2.5);border:1px solid var(--swai-border);border-radius:var(--swai-radius-sm)}.auth-card input:focus{outline:2px solid var(--swai-purple);outline-offset:1px}.auth-card__error{color:var(--swai-danger);font-size:.9rem}.auth-card__hint{color:var(--swai-text-muted);font-size:.9rem}.layout__header{align-items:center;gap:calc(var(--swai-space-unit) * 6);background:var(--swai-sidebar-bg);border-bottom:1px solid var(--swai-border);padding:calc(var(--swai-space-unit) * 3) calc(var(--swai-space-unit) * 6);flex-wrap:wrap;display:flex}.layout__nav{align-items:center;gap:calc(var(--swai-space-unit) * 4);margin-left:auto;display:flex}.layout__nav a{color:var(--swai-text-muted);font-weight:500;text-decoration:none}.layout__nav a.active{color:var(--swai-purple)}.layout__content{max-width:860px;padding:calc(var(--swai-space-unit) * 8) calc(var(--swai-space-unit) * 6);margin:0 auto}.page-loading{min-height:100vh;color:var(--swai-text-muted);justify-content:center;align-items:center;display:flex}.language-selector{gap:calc(var(--swai-space-unit) * 2);flex-wrap:wrap;display:flex}.language-selector__option{align-items:center;gap:calc(var(--swai-space-unit) * 1.5);font:inherit;padding:calc(var(--swai-space-unit) * 1.5) calc(var(--swai-space-unit) * 3);border:1px solid var(--swai-border);border-radius:var(--swai-radius-md);background:var(--swai-surface);cursor:pointer;font-size:.9rem;display:inline-flex}.language-selector__option--selected{border-color:var(--swai-purple);background:var(--swai-purple-light);font-weight:600}.language-selector__option--locked{opacity:.65;cursor:not-allowed}.language-selector__badge{color:var(--swai-text-muted);font-size:.75rem}.language-selector__badge--expired{color:var(--swai-warning);font-weight:600}.banner{padding:calc(var(--swai-space-unit) * 3) calc(var(--swai-space-unit) * 6)}.banner--warning{border-bottom:1px solid var(--swai-warning);color:#92400e;background:#fef3c7}.banner p{margin-top:calc(var(--swai-space-unit) * 1);font-size:.9rem}.card{background:var(--swai-surface);border:1px solid var(--swai-border);border-radius:var(--swai-radius-lg);box-shadow:var(--swai-shadow-card);padding:calc(var(--swai-space-unit) * 5);margin-bottom:calc(var(--swai-space-unit) * 4)}.card--placeholder{color:var(--swai-text-muted);box-shadow:none;border-style:dashed}.dashboard__studying{margin-bottom:calc(var(--swai-space-unit) * 4)}.subscription-list{margin-bottom:calc(var(--swai-space-unit) * 3);list-style:none}.subscription-list__item{align-items:center;gap:calc(var(--swai-space-unit) * 3);padding:calc(var(--swai-space-unit) * 2) 0;border-bottom:1px solid var(--swai-border);display:flex}.subscription-list__item:last-child{border-bottom:none}.badge{border-radius:999px;padding:2px 10px;font-size:.75rem;font-weight:600}.badge--active{color:#065f46;background:#d1fae5}.badge--expired{color:#92400e;background:#fef3c7}.badge--none{background:var(--swai-border);color:var(--swai-text-muted)}.settings__header{justify-content:space-between;align-items:center;gap:calc(var(--swai-space-unit) * 4);margin-bottom:calc(var(--swai-space-unit) * 4);display:flex}.settings__header h1{margin-bottom:0}.tabs{gap:calc(var(--swai-space-unit) * 2);margin-bottom:calc(var(--swai-space-unit) * 5);border-bottom:1px solid var(--swai-border);display:flex}.tabs__tab{font:inherit;color:var(--swai-text-muted);padding:calc(var(--swai-space-unit) * 2) calc(var(--swai-space-unit) * 4);cursor:pointer;background:0 0;border:none;border-bottom:3px solid #0000;font-weight:500}.tabs__tab--active{color:var(--swai-purple);border-bottom-color:var(--swai-purple)}.settings__grid{gap:calc(var(--swai-space-unit) * 4);margin-top:calc(var(--swai-space-unit) * 4);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));display:grid}.settings__grid label{gap:calc(var(--swai-space-unit) * 1.5);flex-direction:column;font-size:.9rem;font-weight:500;display:flex}.settings__grid input,.settings__grid select{font:inherit;padding:calc(var(--swai-space-unit) * 2);border:1px solid var(--swai-border);border-radius:var(--swai-radius-sm);background:var(--swai-surface)}.settings__avatar-row{align-items:center;gap:calc(var(--swai-space-unit) * 4);display:flex}.settings__avatar{object-fit:cover;border-radius:50%;justify-content:center;align-items:center;width:64px;height:64px;display:inline-flex}.settings__avatar--empty{background:var(--swai-purple-light);color:var(--swai-purple);font-size:1.5rem;font-weight:700}.settings__toggles{gap:calc(var(--swai-space-unit) * 3);flex-direction:column;list-style:none;display:flex}.settings__toggle{align-items:flex-start;gap:calc(var(--swai-space-unit) * 2.5);cursor:pointer;display:flex}.settings__toggle input{accent-color:var(--swai-purple);width:18px;height:18px;margin-top:2px}.settings__saved{color:var(--swai-success);font-size:.9rem}.settings__language-context{margin-bottom:calc(var(--swai-space-unit) * 3)}.settings__assistant-toggle{margin-top:calc(var(--swai-space-unit) * 3);color:var(--swai-purple);display:inline-block}.settings__speed-fine{gap:calc(var(--swai-space-unit) * 2);margin-top:calc(var(--swai-space-unit) * 4);flex-direction:column;font-size:.9rem;font-weight:500;display:flex}.settings__speed-fine input{accent-color:var(--swai-purple)}.tutor-grid{gap:calc(var(--swai-space-unit) * 3);grid-template-columns:repeat(auto-fill,minmax(140px,1fr));display:grid}.tutor-card{align-items:center;gap:calc(var(--swai-space-unit) * 1.5);font:inherit;padding:calc(var(--swai-space-unit) * 4);border:2px solid var(--swai-border);border-radius:var(--swai-radius-lg);background:var(--swai-surface);cursor:pointer;flex-direction:column;display:flex}.tutor-card--selected{border-color:var(--swai-purple);background:var(--swai-purple-light)}.tutor-card__avatar{font-size:2rem}.chips{gap:calc(var(--swai-space-unit) * 2);flex-wrap:wrap;display:flex}.chip{font:inherit;padding:calc(var(--swai-space-unit) * 1.5) calc(var(--swai-space-unit) * 3.5);border:1px solid var(--swai-border);background:var(--swai-surface);cursor:pointer;border-radius:999px;font-weight:600}.chip--selected{background:var(--swai-purple);border-color:var(--swai-purple);color:#fff}.level-assistant{gap:calc(var(--swai-space-unit) * 3);margin-top:calc(var(--swai-space-unit) * 4);padding-top:calc(var(--swai-space-unit) * 4);border-top:1px dashed var(--swai-border);flex-direction:column;display:flex}.level-assistant label{gap:calc(var(--swai-space-unit) * 1.5);flex-direction:column;font-size:.9rem;font-weight:500;display:flex}.level-assistant textarea{font:inherit;padding:calc(var(--swai-space-unit) * 2);border:1px solid var(--swai-border);border-radius:var(--swai-radius-sm);resize:vertical}.level-assistant__result{background:var(--swai-purple-light);border-radius:var(--swai-radius-md);padding:calc(var(--swai-space-unit) * 4)}.mode-grid{gap:calc(var(--swai-space-unit) * 4);margin-bottom:calc(var(--swai-space-unit) * 4);grid-template-columns:repeat(auto-fill,minmax(200px,1fr));display:grid}.mode-card{align-items:flex-start;gap:calc(var(--swai-space-unit) * 2);font:inherit;text-align:left;padding:calc(var(--swai-space-unit) * 5);background:var(--swai-surface);border:1px solid var(--swai-border);border-top:4px solid var(--mode-color,var(--swai-purple));border-radius:var(--swai-radius-lg);box-shadow:var(--swai-shadow-card);cursor:pointer;flex-direction:column;display:flex}.mode-card:hover:not(:disabled){border-color:var(--mode-color,var(--swai-purple))}.mode-card:disabled{opacity:.55;cursor:not-allowed}.mode-card__icon{font-size:1.8rem}.mode-card__description{color:var(--swai-text-muted);font-size:.85rem}.modal-backdrop{padding:calc(var(--swai-space-unit) * 4);z-index:50;background:#0f172a73;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--swai-surface);border-radius:var(--swai-radius-lg);width:min(520px,100%);max-height:85vh;box-shadow:var(--swai-shadow-card);padding:calc(var(--swai-space-unit) * 6);overflow-y:auto}.modal__header{margin-bottom:calc(var(--swai-space-unit) * 4);border-top:4px solid #0000;justify-content:space-between;align-items:center;display:flex}.modal__header h2{margin-bottom:0}.modal__body{gap:calc(var(--swai-space-unit) * 4);flex-direction:column;display:flex}.modal__custom textarea{width:100%;font:inherit;padding:calc(var(--swai-space-unit) * 2.5);border:1px solid var(--swai-border);border-radius:var(--swai-radius-sm);resize:vertical;margin-bottom:calc(var(--swai-space-unit) * 3)}.modal__loader{align-items:center;gap:calc(var(--swai-space-unit) * 3);color:var(--swai-text-muted);padding:calc(var(--swai-space-unit) * 4) 0;display:flex}.modal__spinner{border:3px solid var(--swai-purple-light);border-top-color:var(--swai-purple);border-radius:50%;width:18px;height:18px;animation:.8s linear infinite swai-spin}@keyframes swai-spin{to{transform:rotate(360deg)}}.chips--wrap{max-height:300px;overflow-y:auto}.bubble{gap:calc(var(--swai-space-unit) * 2.5);max-width:72%;display:flex}.bubble--instructor{align-self:flex-start}.bubble--user{align-self:flex-end}.bubble__avatar{font-size:1.6rem;line-height:1}.bubble__body{background:var(--swai-surface);border:1px solid var(--swai-border);border-radius:var(--swai-radius-md);padding:calc(var(--swai-space-unit) * 3) calc(var(--swai-space-unit) * 4)}.bubble--user .bubble__body{background:var(--swai-purple);border-color:var(--swai-purple);color:#fff}.bubble__translation{margin-top:calc(var(--swai-space-unit) * 2);padding-top:calc(var(--swai-space-unit) * 2);border-top:1px dashed var(--swai-border);color:var(--swai-text-muted);font-size:.9rem;font-style:italic}.bubble__feedback{margin-top:calc(var(--swai-space-unit) * 2);border-radius:var(--swai-radius-sm);padding:calc(var(--swai-space-unit) * 2);background:#ffffff26;font-size:.85rem}.bubble__actions{gap:calc(var(--swai-space-unit) * 1);margin-top:calc(var(--swai-space-unit) * 2);display:flex}.bubble__icon{font:inherit;cursor:pointer;opacity:.7;background:0 0;border:none;font-size:.9rem}.bubble__icon:hover:not(:disabled){opacity:1}.bubble__icon:disabled{opacity:.3;cursor:not-allowed}.chat-messages__typing{align-self:flex-start}@keyframes voice-pulse{0%,to{box-shadow:0 0 #7c3aed66}50%{box-shadow:0 0 0 10px #7c3aed00}}.pronunciation-intro{text-align:center;flex-direction:column;align-items:center;gap:1rem;max-width:560px;margin:2rem auto;display:flex}.pronunciation-intro__subtitle{color:var(--swai-text-muted,#6b7280)}.pronunciation-intro__badge{background:var(--swai-purple);color:#fff;border-radius:999px;padding:.2rem .9rem;font-size:1.05rem;font-weight:700;display:inline-block}.pronunciation-history{text-align:left;width:100%;margin-top:1.5rem}.pronunciation-history ul{flex-direction:column;gap:.4rem;margin:.5rem 0 0;padding:0;list-style:none;display:flex}.pronunciation-history li{border:1px solid var(--swai-border,#e5e7eb);background:#fff;border-radius:12px;align-items:center;gap:.75rem;padding:.5rem .85rem;display:flex}.pronunciation-history__score{color:var(--swai-purple);min-width:2.2rem;font-weight:700}.pronunciation-history__phrase{flex:1}.pronunciation-practice{flex-direction:column;align-items:center;gap:1.25rem;max-width:640px;margin:1.5rem auto;display:flex}.pronunciation-practice__header{align-items:center;gap:.75rem;display:flex}.pronunciation-card{border:1px solid var(--swai-border,#e5e7eb);text-align:center;background:#fff;border-radius:16px;flex-direction:column;align-items:center;gap:1rem;width:100%;padding:2rem;display:flex}.pronunciation-card__phrase{font-size:1.35rem;font-weight:600}.pronunciation-fab{background:var(--swai-purple);color:#fff;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:none;border:none;border-radius:50%;width:84px;height:84px;font-size:2rem;transition:transform .15s;box-shadow:0 6px 18px #7c3aed59}.pronunciation-fab--active{background:var(--swai-danger);animation:1.2s ease-in-out infinite voice-pulse;transform:scale(1.12)}.pronunciation-result{flex-direction:column;align-items:center;gap:.75rem;display:flex}.pronunciation-result__score{color:var(--swai-text-muted,#6b7280);font-size:1.1rem}.pronunciation-result__score span{color:var(--swai-purple);font-size:2.6rem;font-weight:800}.pronunciation-result__actions{gap:.75rem;display:flex}.vocabulary{flex-direction:column;gap:1.25rem;max-width:760px;margin:1.5rem auto;display:flex}.vocabulary__header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.vocabulary__header-actions{gap:.5rem;display:flex}.vocabulary__form{border:1px solid var(--swai-border,#e5e7eb);background:#fff;border-radius:12px;grid-template-columns:1fr 1fr;gap:.6rem;padding:1rem;display:grid}.vocabulary__form input:first-child{grid-column:1/-1}.vocabulary__form button{grid-column:1/-1;justify-self:end}.vocabulary__empty{text-align:center;color:var(--swai-text-muted,#6b7280);border:1px dashed var(--swai-border,#e5e7eb);background:#fff;border-radius:12px;padding:2.5rem 1rem}.vocabulary__list{flex-direction:column;gap:.6rem;margin:0;padding:0;list-style:none;display:flex}.vocabulary__card{border:1px solid var(--swai-border,#e5e7eb);background:#fff;border-radius:12px;justify-content:space-between;gap:1rem;padding:.85rem 1rem;display:flex}.vocabulary__card-main strong{font-size:1.05rem}.vocabulary__card-main p{margin:.25rem 0 0}.vocabulary__example{font-style:italic}.vocabulary__card-side{flex-direction:column;align-items:flex-end;gap:.4rem;display:flex}.vocabulary__badge{background:var(--swai-purple-light);color:var(--swai-purple);white-space:nowrap;border-radius:999px;padding:.15rem .6rem;font-size:.72rem;font-weight:600}.vocabulary__badge--manual{color:var(--swai-text-muted,#6b7280);background:#f3f4f6}.flashcards{flex-direction:column;align-items:center;gap:1rem;max-width:560px;margin:2rem auto;display:flex}.flashcards__header{justify-content:space-between;align-items:baseline;width:100%;display:flex}.flashcard{background:var(--swai-purple);color:#fff;cursor:pointer;text-align:center;border:none;border-radius:20px;justify-content:center;align-items:center;width:100%;min-height:220px;padding:2rem;font-size:1.6rem;font-weight:700;transition:transform .2s,background .2s;display:flex;box-shadow:0 8px 24px #7c3aed4d}.flashcard--flipped{color:var(--swai-text,#1f2937);border:2px solid var(--swai-purple);background:#fff;font-size:1.1rem;font-weight:500}.flashcard__back{flex-direction:column;gap:.75rem;display:flex}.flashcards__actions{gap:.75rem;display:flex}.templates{flex-direction:column;gap:1.25rem;max-width:760px;margin:1.5rem auto;display:flex}.templates__header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.templates__header-actions{gap:.5rem;display:flex}.templates__form{border:1px solid var(--swai-border,#e5e7eb);background:#fff;border-radius:12px;flex-direction:column;gap:.6rem;padding:1rem;display:flex}.templates__form-actions{justify-content:flex-end;align-items:center;gap:.75rem;display:flex}.templates__empty{text-align:center;color:var(--swai-text-muted,#6b7280);border:1px dashed var(--swai-border,#e5e7eb);background:#fff;border-radius:12px;padding:2.5rem 1rem}.templates__list{flex-direction:column;gap:.6rem;margin:0;padding:0;list-style:none;display:flex}.templates__card{border:1px solid var(--swai-border,#e5e7eb);background:#fff;border-radius:12px;justify-content:space-between;gap:1rem;padding:.85rem 1rem;display:flex}.templates__card-main{flex:1;min-width:0}.templates__card-main p{margin:.25rem 0 0}.templates__prompt{white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;overflow:hidden}.templates__card-side{flex-direction:column;align-items:flex-end;gap:.4rem;display:flex}.dashboard__panels{grid-template-columns:1fr 1fr;gap:1rem;margin-top:1.5rem;display:grid}@media (width<=860px){.dashboard__panels{grid-template-columns:1fr}}.streak-panel,.messages-panel{border:1px solid var(--swai-border,#e5e7eb);background:#fff;border-radius:16px;padding:1.25rem}.streak-panel__header h2,.messages-panel h2{margin:0 0 .25rem;font-size:1.05rem}.streak-panel__cards{grid-template-columns:repeat(3,1fr);gap:.75rem;margin-top:1rem;display:grid}.streak-card{background:var(--swai-purple-light);text-align:center;border-radius:12px;flex-direction:column;align-items:center;gap:.15rem;padding:.9rem .5rem;display:flex}.streak-card__icon{font-size:1.4rem}.streak-card__value{color:var(--swai-purple);font-size:1.7rem;font-weight:800;line-height:1.1}.streak-card__label{color:var(--swai-text-muted,#6b7280);font-size:.78rem}.messages-panel__list{flex-direction:column;gap:.35rem;margin:.75rem 0 0;padding:0;list-style:none;display:flex}.messages-panel__item{color:inherit;border-radius:10px;align-items:center;gap:.6rem;padding:.5rem .6rem;text-decoration:none;display:flex}.messages-panel__item:hover{background:var(--swai-purple-light)}.messages-panel__title{white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.messages-panel__time{white-space:nowrap;font-size:.8rem}.memory-list{gap:calc(var(--swai-space-unit) * 2);margin-bottom:calc(var(--swai-space-unit) * 3);flex-direction:column;list-style:none;display:flex}.memory-list li{align-items:baseline;gap:calc(var(--swai-space-unit) * 2);border-top:1px solid var(--swai-border);padding-top:calc(var(--swai-space-unit) * 2);display:flex}.memory-list li:first-child{border-top:0;padding-top:0}.bubble__notice{color:var(--swai-text-muted);margin-top:4px;font-size:.8rem;font-style:italic}.admin-layout{grid-template-columns:240px 1fr;min-height:100vh;display:grid}.admin-layout__sidebar{gap:calc(var(--swai-space-unit) * 3);background:var(--swai-sidebar-bg);border-right:1px solid var(--swai-border);height:100vh;padding:calc(var(--swai-space-unit) * 5) calc(var(--swai-space-unit) * 4);flex-direction:column;align-self:start;display:flex;position:sticky;top:0}.admin-layout__label{color:var(--swai-text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:.75rem}.admin-layout__nav{gap:calc(var(--swai-space-unit) * 1);margin-top:calc(var(--swai-space-unit) * 2);flex-direction:column;display:flex}.admin-layout__nav a{color:var(--swai-text-muted);border-radius:var(--swai-radius-sm);padding:calc(var(--swai-space-unit) * 2) calc(var(--swai-space-unit) * 3);font-weight:500;text-decoration:none}.admin-layout__nav a.active{background:var(--swai-purple-light);color:var(--swai-purple)}.admin-layout__footer{align-items:flex-start;gap:calc(var(--swai-space-unit) * 2);border-top:1px solid var(--swai-border);padding-top:calc(var(--swai-space-unit) * 4);flex-direction:column;margin-top:auto;display:flex}.admin-layout__back{font-size:.9rem;text-decoration:none}.admin-layout__content{max-width:1100px;padding:calc(var(--swai-space-unit) * 8) calc(var(--swai-space-unit) * 6)}@media (width<=860px){.admin-layout{grid-template-columns:1fr}.admin-layout__sidebar{border-right:none;border-bottom:1px solid var(--swai-border);flex-flow:wrap;align-items:center;height:auto;position:static}.admin-layout__nav{flex-direction:row;margin-top:0}.admin-layout__footer{border-top:none;flex-direction:row;align-items:center;margin-left:auto;padding-top:0}}.admin-toolbar{align-items:center;gap:calc(var(--swai-space-unit) * 4);margin-bottom:calc(var(--swai-space-unit) * 5);flex-wrap:wrap;display:flex}.admin-toolbar h1{margin-bottom:0}.admin-toolbar__filters{gap:calc(var(--swai-space-unit) * 2);flex-wrap:wrap;display:flex}.admin-toolbar__filters select{font:inherit;padding:calc(var(--swai-space-unit) * 2);border:1px solid var(--swai-border);border-radius:var(--swai-radius-sm);background:var(--swai-surface)}.admin-toolbar__search{font:inherit;min-width:240px;padding:calc(var(--swai-space-unit) * 2);border:1px solid var(--swai-border);border-radius:var(--swai-radius-sm);background:var(--swai-surface)}.admin-table{border-collapse:collapse;width:100%}.admin-table th,.admin-table td{text-align:left;padding:calc(var(--swai-space-unit) * 2.5) calc(var(--swai-space-unit) * 2);border-bottom:1px solid var(--swai-border);vertical-align:top}.admin-table th{color:var(--swai-text-muted);text-transform:uppercase;letter-spacing:.03em;font-size:.8rem}.admin-table__sort{font:inherit;color:inherit;cursor:pointer;text-transform:inherit;letter-spacing:inherit;background:0 0;border:none;padding:0}.admin-table__num{text-align:right;font-variant-numeric:tabular-nums}.admin-table--stale{opacity:.6}.admin-table-wrap{overflow-x:auto}.badge--admin{background:var(--swai-purple-light);color:var(--swai-purple-dark)}.pagination{justify-content:space-between;align-items:center;gap:calc(var(--swai-space-unit) * 3);margin-top:calc(var(--swai-space-unit) * 4);flex-wrap:wrap;display:flex}.pagination__info{color:var(--swai-text-muted);font-size:.9rem}.pagination__controls{align-items:center;gap:calc(var(--swai-space-unit) * 3);display:flex}.pagination__per-page{font:inherit;padding:calc(var(--swai-space-unit) * 2);border:1px solid var(--swai-border);border-radius:var(--swai-radius-sm);background:var(--swai-surface)}.admin-form{gap:calc(var(--swai-space-unit) * 4);flex-direction:column;display:flex}.admin-form--inline{align-items:flex-end;gap:calc(var(--swai-space-unit) * 3);flex-flow:wrap}.admin-form__grid{gap:calc(var(--swai-space-unit) * 4);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));display:grid}.field{gap:calc(var(--swai-space-unit) * 1.5);flex-direction:column;font-size:.9rem;font-weight:500;display:flex}.field input,.field select{font:inherit;padding:calc(var(--swai-space-unit) * 2);border:1px solid var(--swai-border);border-radius:var(--swai-radius-sm);background:var(--swai-surface)}.field input:focus,.field select:focus{outline:2px solid var(--swai-purple);outline-offset:1px}.field__error{color:var(--swai-danger);font-size:.85rem}.form-actions{align-items:center;gap:calc(var(--swai-space-unit) * 3);flex-wrap:wrap;display:flex}.modal__actions{justify-content:flex-end;gap:calc(var(--swai-space-unit) * 3);padding-top:calc(var(--swai-space-unit) * 2);display:flex}.copy-field{gap:calc(var(--swai-space-unit) * 2);display:flex}.copy-field__input{padding:calc(var(--swai-space-unit) * 2);border:1px solid var(--swai-border);border-radius:var(--swai-radius-sm);background:var(--swai-surface);color:var(--swai-text);flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8rem}.copy-field__hint{margin-top:calc(var(--swai-space-unit) * 1.5)}.admin-detail__header{align-items:baseline;gap:calc(var(--swai-space-unit) * 3);margin:calc(var(--swai-space-unit) * 3) 0 calc(var(--swai-space-unit) * 4);flex-wrap:wrap;display:flex}.admin-detail__header h1{margin-bottom:0}.admin-detail__stats{gap:calc(var(--swai-space-unit) * 3);margin-bottom:calc(var(--swai-space-unit) * 5);grid-template-columns:repeat(auto-fit,minmax(140px,1fr));display:grid}.admin-detail__stat{gap:calc(var(--swai-space-unit) * 1);background:var(--swai-purple-light);border-radius:var(--swai-radius-md);padding:calc(var(--swai-space-unit) * 4);flex-direction:column;display:flex}.admin-detail__stat strong{color:var(--swai-purple);font-size:1.4rem;font-weight:700}.card--danger{border-color:var(--swai-danger)}.chain-editor{margin-bottom:calc(var(--swai-space-unit) * 3);list-style:none}.chain-editor__item{justify-content:space-between;align-items:center;gap:calc(var(--swai-space-unit) * 3);padding:calc(var(--swai-space-unit) * 2.5) 0;border-bottom:1px solid var(--swai-border);display:flex}.chain-editor__controls{gap:calc(var(--swai-space-unit) * 2);display:flex}.chain-editor__add{align-items:center;gap:calc(var(--swai-space-unit) * 2);margin-bottom:calc(var(--swai-space-unit) * 5);display:flex}.chain-editor__add select{font:inherit;padding:calc(var(--swai-space-unit) * 2);border:1px solid var(--swai-border);border-radius:var(--swai-radius-sm);background:var(--swai-surface)}.usage-totals{gap:calc(var(--swai-space-unit) * 3);margin:calc(var(--swai-space-unit) * 4) 0;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));display:grid}.usage-totals__item{gap:calc(var(--swai-space-unit) * 1);background:var(--swai-purple-light);border-radius:var(--swai-radius-md);padding:calc(var(--swai-space-unit) * 4);flex-direction:column;display:flex}.usage-totals__item strong{color:var(--swai-purple);font-size:1.4rem;font-weight:700}.prompt-editor{gap:calc(var(--swai-space-unit) * 5);margin-top:calc(var(--swai-space-unit) * 4);grid-template-columns:minmax(220px,280px) 1fr;align-items:start;display:grid}@media (width<=900px){.prompt-editor{grid-template-columns:1fr}}.prompt-editor__versions,.prompt-editor__body{background:var(--swai-surface);border:1px solid var(--swai-border);border-radius:var(--swai-radius-md);padding:calc(var(--swai-space-unit) * 5)}.prompt-editor__versions ul{gap:calc(var(--swai-space-unit) * 2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.prompt-editor__version{align-items:center;gap:calc(var(--swai-space-unit) * 2);padding:calc(var(--swai-space-unit) * 2);border-radius:var(--swai-radius-sm);border:1px solid #0000;flex-wrap:wrap;display:flex}.prompt-editor__version--active{border-color:var(--swai-purple);background:var(--swai-purple-light)}.prompt-editor__version-actions{gap:calc(var(--swai-space-unit) * 2);margin-left:auto;display:flex}.prompt-editor__body textarea{width:100%;font-family:var(--swai-font-sans);border:1px solid var(--swai-border);border-radius:var(--swai-radius-sm);padding:calc(var(--swai-space-unit) * 2);resize:vertical}.prompt-editor__list{border-top:1px solid var(--swai-border);margin-top:calc(var(--swai-space-unit) * 4);padding-top:calc(var(--swai-space-unit) * 3);gap:calc(var(--swai-space-unit) * 2);flex-direction:column;display:flex}.prompt-editor__row{align-items:flex-start;gap:calc(var(--swai-space-unit) * 2);display:flex}.prompt-editor__row--stacked{border:1px solid var(--swai-border);border-radius:var(--swai-radius-sm);padding:calc(var(--swai-space-unit) * 3);flex-direction:column}.prompt-editor__preview{margin-top:calc(var(--swai-space-unit) * 4);border-top:1px solid var(--swai-border);padding-top:calc(var(--swai-space-unit) * 3)}.prompt-editor__preview pre,.prompt-editor__body pre{background:var(--swai-bg);border:1px solid var(--swai-border);border-radius:var(--swai-radius-sm);padding:calc(var(--swai-space-unit) * 3);white-space:pre-wrap;overflow-x:auto}.variable-chips{align-items:center;gap:calc(var(--swai-space-unit) * 2);margin-bottom:calc(var(--swai-space-unit) * 3);flex-wrap:wrap;display:flex}.variable-chips .badge{cursor:pointer;border:1px solid var(--swai-border);background:var(--swai-bg);color:var(--swai-text-muted)}.badge--scope,.badge--draft{background:var(--swai-border);color:var(--swai-text)}.badge--published{background:var(--swai-purple-light);color:var(--swai-purple-dark)}.badge--archived{background:var(--swai-bg);color:var(--swai-text-muted)}.variable-chips .badge--required{border-color:var(--swai-purple);color:var(--swai-purple-dark)}.variable-chips .badge--missing{border-color:var(--swai-danger);color:var(--swai-danger)}.tutor-persona{border-top:1px solid var(--swai-border);margin-top:calc(var(--swai-space-unit) * 4);padding-top:calc(var(--swai-space-unit) * 3)}.tutor-persona__header{align-items:center;gap:calc(var(--swai-space-unit) * 2);margin-bottom:calc(var(--swai-space-unit) * 2);display:flex}.tutor-persona textarea{width:100%;font-family:var(--swai-font-sans);border:1px solid var(--swai-border);border-radius:var(--swai-radius-sm);padding:calc(var(--swai-space-unit) * 2);resize:vertical}.test-session__header{gap:calc(var(--swai-space-unit) * 2);margin-bottom:calc(var(--swai-space-unit) * 3);flex-wrap:wrap;display:flex}.test-session__student{gap:calc(var(--swai-space-unit) * 2);flex-direction:column;display:flex}.test-chat{background:var(--swai-surface);border:1px solid var(--swai-border);border-radius:var(--swai-radius-md);padding:calc(var(--swai-space-unit) * 4);margin-top:calc(var(--swai-space-unit) * 4)}.test-chat__messages{gap:calc(var(--swai-space-unit) * 3);flex-direction:column;max-height:60vh;display:flex;overflow-y:auto}.test-chat__meta{color:var(--swai-text-muted);font-size:.8rem}.test-chat__details summary{color:var(--swai-purple);cursor:pointer}.test-chat__details pre{white-space:pre-wrap;background:var(--swai-purple-light);border-radius:var(--swai-radius-sm);padding:calc(var(--swai-space-unit) * 2);max-height:320px;font-size:.85rem;overflow:auto}.test-chat__form{gap:calc(var(--swai-space-unit) * 2);margin-top:calc(var(--swai-space-unit) * 4);display:flex}.test-chat__form textarea{min-height:64px;font-family:var(--swai-font-sans);border:1px solid var(--swai-border);border-radius:var(--swai-radius-sm);padding:calc(var(--swai-space-unit) * 2);resize:vertical;flex:1}.badge--ended{background:var(--swai-bg);color:var(--swai-text-muted)}.badge--session-active{background:var(--swai-purple-light);color:var(--swai-success)}.feedback-form{gap:calc(var(--swai-space-unit) * 2);margin-top:calc(var(--swai-space-unit) * 2);border-top:1px solid var(--swai-border);padding-top:calc(var(--swai-space-unit) * 2);flex-direction:column;display:flex}.feedback-form textarea,.feedback-dialog textarea{width:100%;font-family:var(--swai-font-sans);border:1px solid var(--swai-border);border-radius:var(--swai-radius-sm);padding:calc(var(--swai-space-unit) * 2);resize:vertical;min-height:56px}.feedback-form__toggle{gap:calc(var(--swai-space-unit) * 1);margin-top:calc(var(--swai-space-unit) * 2);display:flex}.feedback-summary{align-items:center;gap:calc(var(--swai-space-unit) * 2);margin-top:calc(var(--swai-space-unit) * 2);flex-wrap:wrap;font-size:.85rem;display:flex}.feedback-dialog .admin-form{gap:calc(var(--swai-space-unit) * 3)}.badge--feedback-pending{background:var(--swai-purple-light);color:var(--swai-warning)}.badge--feedback-promoted{background:var(--swai-purple-light);color:var(--swai-purple-dark)}.badge--feedback-dismissed{background:var(--swai-bg);color:var(--swai-text-muted)}.badge--feedback{background:var(--swai-purple-light);color:var(--swai-purple-dark);align-self:flex-start}.badge--memory-kind{background:var(--swai-purple-light);color:var(--swai-purple-dark)}.test-session__memory{margin-bottom:calc(var(--swai-space-unit) * 3)}.feedback-form__rating{gap:calc(var(--swai-space-unit) * 1);display:flex}.badge--guardrail-block{background:var(--swai-surface);color:var(--swai-danger);border:1px solid var(--swai-danger)}.badge--guardrail-regenerate{background:var(--swai-surface);color:var(--swai-warning);border:1px solid var(--swai-warning)}.badge--guardrail-audit{background:var(--swai-surface);color:var(--swai-info);border:1px solid var(--swai-info)}.guardrail-verdict{margin-top:calc(var(--swai-space-unit) * 3);padding:calc(var(--swai-space-unit) * 3);border:1px solid var(--swai-border);border-radius:var(--swai-radius-sm);background:var(--swai-surface)}.guardrail-verdict--pass{color:var(--swai-success);border-color:var(--swai-success)}.guardrail-verdict--block{color:var(--swai-danger);border-color:var(--swai-danger)}.guardrail-verdict--regenerate{color:var(--swai-warning);border-color:var(--swai-warning)}.guardrail-verdict--audit{color:var(--swai-info);border-color:var(--swai-info)}.guardrail-form__mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.admin-table__expanded td{background:var(--swai-purple-light)}.admin-table__expanded td pre{white-space:pre-wrap;max-height:240px;overflow:auto}.test-chat__guardrail{margin-top:calc(var(--swai-space-unit) * 1);font-size:.8rem}.test-chat__guardrail--block{color:var(--swai-danger)}.test-chat__guardrail--regenerate{color:var(--swai-warning)}.test-chat__guardrail--audit{color:var(--swai-info)}.drawer-backdrop{background:color-mix(in srgb, var(--swai-text) 35%, transparent);z-index:50;position:fixed;inset:0}.drawer{background:var(--swai-surface);border-left:1px solid var(--swai-border);width:min(560px,100vw);box-shadow:var(--swai-shadow-card);flex-direction:column;display:flex;position:fixed;top:0;bottom:0;right:0}.drawer--lg{width:min(760px,100vw)}.drawer__header{justify-content:space-between;align-items:center;gap:calc(var(--swai-space-unit) * 2);padding:calc(var(--swai-space-unit) * 4) calc(var(--swai-space-unit) * 6);border-bottom:1px solid var(--swai-border);display:flex}.drawer__body{padding:calc(var(--swai-space-unit) * 4) calc(var(--swai-space-unit) * 6);flex:1;overflow-y:auto}.badge--knowledge-pending,.badge--knowledge-extracting,.badge--knowledge-chunking,.badge--knowledge-embedding{background:color-mix(in srgb, var(--swai-info) 18%, transparent);color:var(--swai-info)}.badge--knowledge-ready{background:color-mix(in srgb, var(--swai-success) 18%, transparent);color:var(--swai-success)}.badge--knowledge-failed{background:color-mix(in srgb, var(--swai-danger) 18%, transparent);color:var(--swai-danger)}.knowledge-chunk,.knowledge-hit{border:1px solid var(--swai-border);border-radius:var(--swai-radius-sm);padding:calc(var(--swai-space-unit) * 3);margin-top:calc(var(--swai-space-unit) * 3)}.knowledge-chunk pre,.knowledge-hit pre{white-space:pre-wrap;word-break:break-word;margin:0}.knowledge-chunk__meta{color:var(--swai-text-muted);margin:0 0 calc(var(--swai-space-unit) * 2);font-size:.8rem}.knowledge-hit__score{color:var(--swai-purple);font-weight:600}.knowledge-limit{color:var(--swai-text-muted);font-size:.85rem}.knowledge-limit--warning{color:var(--swai-warning);font-weight:600}.test-chat__knowledge ul{margin:0;padding:0;list-style:none}.test-chat__knowledge li{margin-top:calc(var(--swai-space-unit) * 2)}.test-chat__knowledge pre{white-space:pre-wrap;word-break:break-word}.conv{background:var(--white);height:100dvh;min-height:560px;color:var(--text-body);font-family:var(--font-body);-webkit-tap-highlight-color:transparent;flex-direction:column;display:flex;position:relative;overflow:hidden}:where(.conv) button,:where(.conv) textarea{font:inherit;color:inherit}:where(.conv) button{cursor:pointer}:where(.conv) button:disabled{cursor:default}:where(.conv) a{text-decoration:none}.conv__main{flex-direction:column;flex:1;min-height:0;display:flex}.conv :focus-visible{box-shadow:var(--ring-focus);outline:none}.conv-caps{font-family:var(--font-header);font-size:var(--text-nano);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--text-tertiary)}.conv-header{border-bottom:1px solid var(--border-light);background:var(--white);flex:none;align-items:center;gap:2px;height:56px;padding:0 6px;display:flex}.conv-iconbtn{border-radius:var(--radius-default);width:44px;height:44px;color:var(--text-body);background:0 0;border:none;flex:none;justify-content:center;align-items:center;display:flex}.conv-iconbtn:disabled{opacity:.5}.conv-header__titles{flex-direction:column;flex:1;min-width:0;padding:0 4px;display:flex}.conv-header__eyebrow{font-family:var(--font-header);font-size:var(--text-nano);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--text-tertiary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.conv-header__title{font-family:var(--font-header);font-size:var(--text-base);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-h4);color:var(--text-body);text-overflow:ellipsis;white-space:nowrap;margin:0;line-height:1.3;overflow:hidden}.conv-header__eval{color:var(--accent)}.conv-header__more{color:var(--text-secondary)}.conv-realtime{background:var(--badge-contact-bg);border-bottom:1px solid var(--badge-contact-border);font:var(--weight-medium) var(--text-xs) var(--font-header);color:var(--text-body);flex:none;align-items:center;gap:8px;padding:8px 17px;display:flex}.conv-realtime__dot{border-radius:var(--radius-circle);background:var(--warm-tangerine);flex:none;width:6px;height:6px}.conv-log{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;flex:1;min-height:0;overflow:hidden auto}.conv-log__inner{flex-direction:column;gap:17px;padding:17px 14px 20px;display:flex}.conv-divider{font-family:var(--font-header);font-size:var(--text-nano);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--text-tertiary);align-items:center;gap:10px;display:flex}.conv-divider:before,.conv-divider:after{content:"";background:var(--border-light);flex:1;height:1px}.conv-msg{flex-direction:column;display:flex}.conv-msg--fresh{animation:.32s ease-out both swMsgIn}.conv-msg__tutor{align-items:flex-start;gap:8px;max-width:92%;display:flex}.conv-avatar{border-radius:var(--radius-circle);border:1px solid var(--accent);width:28px;height:28px;font-family:var(--font-header);font-size:var(--text-nano);font-weight:var(--weight-semibold);color:var(--accent);flex:none;justify-content:center;align-items:center;display:flex}.conv-msg__col{flex-direction:column;min-width:0;display:flex}.conv-bubble{flex-direction:column;padding:10px 14px;display:flex}.conv-bubble--tutor{background:var(--light-gray);border:1px solid var(--border-light);border-radius:4px 12px 12px}.conv-bubble__text{font-size:var(--text-base);line-height:var(--leading-body);letter-spacing:var(--tracking-body);color:var(--text-body);text-wrap:pretty;overflow-wrap:anywhere;margin:0}.conv-msg__user{flex-direction:column;align-self:flex-end;align-items:flex-end;max-width:86%;display:flex}.conv-bubble--user{background:var(--badge-new-bg);border:1px solid var(--badge-new-border);border-radius:12px 4px 12px 12px}.conv-bubble__extra{display:grid}.conv-bubble__extra.is-open{animation:.34s ease-out both swExpand}.conv-bubble__extra.is-closing{animation:.23s ease-in both swCollapse}.conv-bubble__extra-inner{min-height:0;overflow:hidden}.conv-bubble__extra-pad{padding-top:10px}.conv-translation{border-top:1px solid var(--border-light);flex-direction:column;gap:2px;padding-top:10px;display:flex}.conv-bubble--user .conv-translation{border-top-color:var(--border-warm)}.conv-extra__text{font-size:var(--text-sm);line-height:var(--leading-sm);letter-spacing:var(--tracking-sm);color:var(--text-secondary);text-wrap:pretty;margin:0}.conv-feedback-wrap{margin:0 -6px -2px}.conv-feedback{background:var(--white);border-radius:10px;align-items:flex-start;gap:10px;padding:10px 12px;display:flex}.conv-feedback__icon{color:var(--accent);flex:none;margin-top:2px;display:flex}.conv-feedback__body{flex-direction:column;gap:2px;display:flex}.conv-bubble__notice{font-size:var(--text-xs);color:var(--text-tertiary);margin:6px 0 0;font-style:italic}.conv-actions{gap:2px;margin-left:-6px;display:flex}.conv-actions--user{margin-left:0;margin-right:-6px}.conv-actionbtn{border-radius:var(--radius-default);height:44px;font-family:var(--font-header);font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--text-secondary);background:0 0;border:none;align-items:center;gap:6px;padding:0 8px;display:flex}.conv-actionbtn[aria-pressed=true],.conv-actionbtn.is-active{color:var(--accent)}.conv-actionbtn:disabled{opacity:.5}.conv .is-spinning{animation:.8s linear infinite swai-spin}.conv-cursor{vertical-align:-2px;background:var(--accent);width:7px;height:15px;margin-left:3px;animation:.9s step-end infinite swBlink;display:inline-block}.conv-word--in{animation:.32s ease-out both swWordIn}.conv-word{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background var(--transition-fast);border-radius:4px;margin:0 -2px;padding:2px}.conv-word.is-sel,.conv-word__gap.is-sel{background:#e2d6be}.conv-word.is-sel{border-radius:0}.conv-word.is-sel-start{border-top-left-radius:4px;border-bottom-left-radius:4px}.conv-word.is-sel-end{border-top-right-radius:4px;border-bottom-right-radius:4px}@media (hover:hover) and (pointer:fine){.conv-word:not(.is-sel):hover{background:var(--accent-wash)}}.conv-typing{color:var(--text-tertiary);align-items:center;gap:8px;font-size:13px;animation:.3s ease-out both swMsgIn;display:flex}.conv-typing__dots{border-radius:var(--radius-circle);border:1px solid var(--border-warm);flex:none;justify-content:center;align-items:center;gap:3px;width:28px;height:28px;display:flex}.conv-typing__dot{border-radius:var(--radius-circle);background:var(--accent);width:4px;height:4px;animation:1.2s ease-in-out infinite swDot}.conv-typing__dot:nth-child(2){animation-delay:.16s}.conv-typing__dot:nth-child(3){animation-delay:.32s}.conv-composer{padding:8px 10px calc(10px + env(safe-area-inset-bottom));border-top:1px solid var(--border-light);background:var(--white);flex:none}.conv-composer__inner{flex-direction:column;gap:8px;display:flex}.conv-error{border-radius:var(--radius-default);font-size:13px;line-height:var(--leading-tight);color:var(--text-body);background:#ff3b300f;border:1px solid #ff3b3059;align-items:center;gap:10px;margin:0;padding:6px 6px 6px 14px;display:flex}p.conv-error{min-height:44px;padding-right:14px}.conv-error--action{flex:none;margin:8px 10px 0}.conv-error__text{flex:1}.conv-error .conv-iconbtn{color:var(--text-secondary)}.conv-textbtn{border-radius:var(--radius-default);height:44px;font-family:var(--font-header);font-size:13px;font-weight:var(--weight-semibold);color:var(--link-blue);background:0 0;border:none;flex:none;align-items:center;gap:6px;padding:0 10px;display:flex}.conv-textbtn--muted{font-weight:var(--weight-medium);color:var(--text-secondary)}.conv-textbtn:disabled{opacity:.5}.conv-suggestion{background:var(--light-gray);border:1px solid var(--border-warm);border-radius:var(--radius-default);flex-direction:column;gap:4px;padding:10px 6px 4px 14px;display:flex}.conv-suggestion__head{align-items:center;gap:7px;display:flex}.conv-suggestion__icon{color:var(--accent);display:flex}.conv-suggestion__label{flex:1}.conv-suggestion__close{border-radius:var(--radius-default);width:36px;height:36px;color:var(--text-tertiary);background:0 0;border:none;justify-content:center;align-items:center;margin:-8px 0;display:flex}.conv-suggestion__text{font-size:15px;line-height:var(--leading-sm);letter-spacing:var(--tracking-body);color:var(--text-body);margin:0;padding-right:8px}.conv-suggestion__actions{gap:4px;margin-left:-8px;display:flex}.conv-suggestion__actions .conv-textbtn{padding:0 8px}.conv-field{align-items:flex-end;gap:6px;display:flex}.conv-field__box{border:1px solid var(--border-warm);border-radius:var(--radius-default);background:var(--white);flex:1;align-items:flex-end;min-width:0;display:flex}.conv-field__box:focus-within{border-color:var(--accent);box-shadow:var(--ring-focus)}.conv-field__input{resize:none;min-width:0;font:16px/1.4 var(--font-body);letter-spacing:var(--tracking-body);color:var(--text-body);background:0 0;border:0;outline:0;flex:1;max-height:112px;padding:11px 0 11px 14px}.conv .conv-field__input:focus-visible{box-shadow:none}.conv-field__input::placeholder{color:var(--text-tertiary)}.conv-field__hint{width:42px;height:44px;color:var(--accent);background:0 0;border:none;flex:none;justify-content:center;align-items:center;display:flex}.conv-field__hint:disabled{opacity:.5}.conv-send,.conv-mic{border-radius:var(--radius-default);background:var(--accent);width:44px;height:44px;color:var(--white);border:none;flex:none;justify-content:center;align-items:center;display:flex}.conv-send{transition:background var(--transition-fast)}.conv-send:disabled{background:var(--border-light);color:var(--text-tertiary)}.conv-send__icon{margin-left:-2px;display:flex;transform:rotate(45deg)}.conv-mic{transition:opacity var(--transition-fast)}.conv-mic:hover{opacity:.88}.conv-voice{flex-direction:column;gap:8px;display:flex}.conv-voice__row{align-items:center;gap:4px;display:flex}.conv-voice__row .conv-textbtn--muted{gap:7px}.conv-voice__spacer{flex:1}.conv-ptt{border:1px solid var(--accent);border-radius:var(--radius-default);background:var(--white);height:64px;color:var(--text-body);font-family:var(--font-header);font-size:var(--text-base);font-weight:var(--weight-semibold);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:none;transition:background var(--transition-fast);justify-content:center;align-items:center;gap:10px;display:flex}.conv-ptt.is-recording{background:var(--accent);color:var(--white)}.conv-listen{border:1px solid var(--border-warm);border-radius:var(--radius-default);background:var(--light-gray);flex-direction:column;justify-content:center;align-items:center;gap:2px;height:64px;display:flex}.conv-listen__main{font-family:var(--font-header);font-size:15px;font-weight:var(--weight-medium);color:var(--text-body);align-items:center;gap:8px;display:flex}.conv-listen__dot{border-radius:var(--radius-circle);background:var(--warm-tangerine);flex:none;width:9px;height:9px}.conv-listen__dot.is-live{animation:1.2s ease-in-out infinite swDot}.conv-listen__sub{font-size:var(--text-xs);color:var(--text-tertiary)}button.conv-listen{width:100%;transition:background var(--transition-fast)}button.conv-listen:hover{background:var(--accent-wash)}button.conv-listen .conv-listen__main svg{color:var(--accent)}.conv-voice__hint{text-align:center;font-size:var(--text-xs);line-height:var(--leading-tight);color:var(--text-tertiary)}.conv-switch{border-radius:var(--radius-default);text-align:left;background:0 0;border:none;align-items:center;display:flex}.conv-switch__text{flex-direction:column;gap:1px;display:flex}.conv-switch__track{background:var(--border-warm);transition:background var(--transition-fast);border-radius:999px;flex:none;position:relative}.conv-switch[aria-checked=true] .conv-switch__track{background:var(--accent)}.conv-switch__knob{border-radius:var(--radius-circle);background:var(--white);transition:left var(--transition-fast);position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #201e1a40}.conv-switch--md{gap:10px;width:100%;min-height:52px;padding:8px 10px}.conv-switch--md .conv-switch__text{flex:1}.conv-switch--md .conv-switch__label{font-family:var(--font-header);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-body)}.conv-switch--md .conv-switch__hint{font-size:var(--text-xs);line-height:var(--leading-tight);color:var(--text-tertiary)}.conv-switch--md .conv-switch__track{width:36px;height:20px}.conv-switch--md .conv-switch__knob{width:16px;height:16px}.conv-switch--md[aria-checked=true] .conv-switch__knob{left:18px}.conv-switch--sm{height:44px;font-family:var(--font-header);font-size:13px;font-weight:var(--weight-medium);color:var(--text-secondary);gap:8px;padding:0 10px}.conv-switch--sm .conv-switch__track{width:32px;height:18px}.conv-switch--sm .conv-switch__knob{width:14px;height:14px}.conv-switch--sm[aria-checked=true] .conv-switch__knob{left:16px}.conv-backdrop{z-index:60;-webkit-backdrop-filter:blur(4px);background:#100f0c8c;align-items:flex-end;display:flex;position:absolute;inset:0}.conv-backdrop[data-dim=light]{-webkit-backdrop-filter:none;z-index:55;background:#100f0c40}.conv-sheet{background:var(--white);width:100%;max-height:88%;padding:8px 10px calc(10px + env(safe-area-inset-bottom));border-radius:12px 12px 0 0;flex-direction:column;gap:2px;display:flex;overflow-y:auto}.conv-sheet:focus-visible{box-shadow:none}.conv-sheet__grip{background:var(--border-warm);border-radius:2px;flex:none;align-self:center;width:36px;height:4px;margin-bottom:8px}.conv-sheet--eval .conv-sheet__grip,.conv-sheet--confirm .conv-sheet__grip{display:none}.conv-menuitem{border-radius:var(--radius-default);height:52px;font-family:var(--font-header);font-size:15px;font-weight:var(--weight-regular);color:var(--text-body);text-align:left;background:0 0;border:none;align-items:center;gap:14px;padding:0 14px;display:flex}.conv-menuitem:hover{background:var(--accent-wash)}.conv-menuitem--danger{color:#c0392b}.conv-menu__sep{background:var(--border-light);height:1px;margin:4px 14px}.conv-sheet--confirm{padding:24px 20px calc(17px + env(safe-area-inset-bottom));gap:10px}.conv-confirm__title{font-family:var(--font-header);font-size:18px;font-weight:var(--weight-medium);letter-spacing:var(--tracking-h4);color:var(--text-body);margin:0}.conv-confirm__body{font-size:15px;line-height:var(--leading-sm);color:var(--text-secondary);margin:0}.conv-confirm__actions{flex-direction:column;gap:8px;padding-top:10px;display:flex}.conv-btn--danger,.conv-btn--outline{border-radius:var(--radius-default);height:48px;font-family:var(--font-header);font-size:15px}.conv-btn--danger{color:var(--white);font-weight:var(--weight-semibold);background:#c0392b;border:none}.conv-btn--danger:disabled{opacity:.6}.conv-btn--outline{border:1px solid var(--border-warm);background:var(--white);color:var(--text-body);font-weight:var(--weight-medium)}.conv-sheet--word{padding:8px 20px calc(17px + env(safe-area-inset-bottom));border-top:1px solid var(--border-warm);align-items:center;gap:4px;box-shadow:0 -4px 24px #201e1a1f}.conv-sheet--word .conv-sheet__grip{margin-bottom:10px}.conv-wordsheet__head{align-self:stretch;align-items:center;gap:6px;display:flex}.conv-wordsheet__arrow{border:1px solid var(--border-warm);border-radius:var(--radius-default);background:var(--white);width:44px;height:44px;color:var(--text-body);flex:none;justify-content:center;align-items:center;display:flex}.conv-wordsheet__arrow:disabled{color:var(--border-warm)}.conv-wordsheet__center{text-align:center;flex-direction:column;flex:1;align-items:center;gap:2px;min-width:0;display:flex}.conv-wordsheet__word{max-width:100%;font-family:var(--font-header);font-size:var(--text-h4);font-weight:var(--weight-medium);letter-spacing:var(--tracking-h4);color:var(--text-body);text-wrap:balance;overflow-wrap:anywhere;line-height:1.3}.conv-wordsheet__translation{letter-spacing:var(--tracking-sm);color:var(--text-secondary);font-size:15px}.conv-wordsheet__hint{font-size:var(--text-xs);color:var(--text-tertiary);padding-top:4px}.conv-wordsheet__sep{background:var(--border-light);align-self:stretch;height:1px;margin:10px 0}.conv-wordsheet__actions{grid-template-columns:repeat(3,minmax(0,1fr));align-self:stretch;gap:8px;display:grid}.conv-wordsheet__action{border:1px solid var(--border-light);border-radius:var(--radius-default);background:var(--white);height:64px;font-family:var(--font-header);font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--text-body);transition:background var(--transition-fast);flex-direction:column;justify-content:center;align-items:center;gap:6px;display:flex}.conv-wordsheet__action.is-active{background:var(--accent-wash)}.conv-wordsheet__action.is-saved{background:var(--accent-wash);color:var(--accent)}.conv-wordsheet__action--hold{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:none}.conv-wordsheet__action.is-recording{background:var(--accent);color:var(--white)}.conv-wordsheet__action:disabled{opacity:.5}.conv-wordsheet__status{min-height:18px;font-size:13px;line-height:var(--leading-tight);text-align:center;color:var(--text-tertiary);margin-top:6px}.conv-sheet--eval{gap:0;padding:0}.conv-eval__head{background:var(--white);border-bottom:1px solid var(--border-light);align-items:center;gap:10px;padding:14px 10px 14px 20px;display:flex;position:sticky;top:0}.conv-eval__titles{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.conv-eval__title{font-family:var(--font-header);font-size:18px;font-weight:var(--weight-medium);letter-spacing:var(--tracking-h4);color:var(--text-body);margin:0}.conv-eval__head .conv-iconbtn{color:var(--text-secondary)}.conv-eval__body{padding:17px 20px calc(24px + env(safe-area-inset-bottom));flex-direction:column;gap:20px;display:flex}.conv-eval__summary{font-size:15px;line-height:var(--leading-body);letter-spacing:var(--tracking-body);color:var(--text-body);text-wrap:pretty;margin:0}.conv-eval__group{flex-direction:column;gap:8px;display:flex}.conv-eval__heading{font-family:var(--font-header);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-body);align-items:center;gap:7px;margin:0;display:flex}.conv-eval__icon--strength{color:var(--warm-olive)}.conv-eval__icon--improve{color:var(--accent)}.conv-eval__item{border-top:1px solid var(--border-light);font-size:var(--text-sm);line-height:var(--leading-sm);color:var(--text-secondary);margin:0;padding:8px 0 0 19px}.conv-backdrop--drawer{align-items:stretch}.conv-aside{background:var(--light-gray);border-right:1px solid var(--border-warm);width:86%;max-width:340px;padding:10px 14px calc(14px + env(safe-area-inset-bottom));flex-direction:column;gap:17px;display:flex;position:absolute;top:0;bottom:0;left:0;overflow-y:auto}.conv-aside:focus-visible{box-shadow:none}.conv-aside__head{align-items:center;gap:8px;min-height:44px;display:flex}.conv-aside__logo{width:auto;height:22px;margin-left:6px;display:block}.conv-aside__head-spacer{flex:1}.conv-aside__close{color:var(--text-secondary)}.conv-btn--primary{border-radius:var(--radius-default);background:var(--accent);width:100%;min-height:44px;color:var(--white);font-family:var(--font-header);font-size:var(--text-sm);font-weight:var(--weight-semibold);transition:opacity var(--transition-fast);border:none;justify-content:center;align-items:center;gap:7px;padding:0 24px;display:flex}.conv-btn--primary:hover{opacity:.88;color:var(--white)}.conv-history{flex-direction:column;gap:2px;display:flex}.conv-aside__label{font-family:var(--font-header);font-size:11px;font-weight:var(--weight-semibold);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--text-tertiary);padding:0 10px 6px}.conv-history__item{border-radius:var(--radius-default);color:var(--text-body);flex-direction:column;gap:2px;padding:10px 12px;display:flex}.conv-history__item:hover{background:var(--accent-wash);color:var(--text-body)}.conv-history__item[aria-current=page]{background:var(--white);box-shadow:inset 0 0 0 1px var(--border-warm)}.conv-history__meta{font-family:var(--font-header);font-size:11px;font-weight:var(--weight-semibold);color:var(--text-tertiary);justify-content:space-between;gap:8px;display:flex}.conv-history__time{font-weight:var(--weight-regular)}.conv-history__context{letter-spacing:var(--tracking-body);text-overflow:ellipsis;white-space:nowrap;font-size:15px;overflow:hidden}.conv-aside__settings{border-top:1px solid var(--border-warm);flex-direction:column;gap:2px;padding-top:14px;display:flex}.conv-aside__disclosure{border-radius:var(--radius-default);min-height:44px;font-family:var(--font-header);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-body);text-align:left;background:0 0;border:none;align-items:center;gap:8px;padding:8px 10px;display:flex}.conv-aside__disclosure-text{flex:1}.conv-aside__chevron{color:var(--text-tertiary);display:flex}.conv-aside__prompt-wrap{flex-direction:column;gap:6px;padding:0 10px 4px;display:flex}.conv-aside__prompt{resize:none;border:1px solid var(--border-warm);border-radius:var(--radius-default);background:var(--white);font:16px/1.5 var(--font-body);color:var(--text-body);outline:0;padding:10px 14px}.conv .conv-aside__prompt:focus,.conv .conv-aside__prompt:focus-visible{border-color:var(--accent);box-shadow:var(--ring-focus)}.conv-aside__hint{font-size:var(--text-xs);color:var(--text-tertiary)}.conv-aside__home{border-top:1px solid var(--border-warm);min-height:44px;font:var(--weight-medium) var(--text-sm) var(--font-header);color:var(--text-secondary);align-items:center;gap:10px;margin-top:auto;padding:0 10px;display:flex}.conv-aside__home:hover{color:var(--text-body)}@media (width>=861px){.conv{grid-template-rows:minmax(0,1fr);grid-template-columns:272px minmax(0,1fr);display:grid}.conv__main{min-height:0}.conv-aside{border-right:1px solid var(--border-warm);gap:20px;width:auto;max-width:none;min-height:0;padding:20px 17px;position:static}.conv-aside__close,.conv-header__menu{display:none}.conv-header__eval--wide{border:1px solid var(--border-warm);width:auto;height:36px;font-family:var(--font-header);font-size:13px;font-weight:var(--weight-semibold);color:var(--text-body);gap:7px;margin-right:4px;padding:0 14px}.conv-header__eval--wide svg{color:var(--accent)}.conv-header__eval--wide:hover{background:var(--accent-wash)}.conv-log__inner{width:100%;max-width:860px;margin:0 auto;padding:24px 32px 28px}.conv-msg__tutor{max-width:78%}.conv-msg__user{max-width:72%}.conv-composer{padding:12px 32px 16px}.conv-composer__inner{width:100%;max-width:860px;margin:0 auto}.conv-backdrop{justify-content:center;align-items:center}.conv-sheet{border-radius:var(--radius-default);width:min(440px,100% - 48px);box-shadow:var(--shadow-panel);padding:16px 16px 20px}.conv-sheet__grip{display:none}.conv-sheet--eval{padding:0}.conv-eval__body{padding-bottom:24px}.conv-sheet--confirm{padding:24px 20px 17px}.conv-sheet--word{border-top:none;padding:16px 20px 17px}}@keyframes swMsgIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes swWordIn{0%{opacity:0;filter:blur(2px)}to{opacity:1;filter:none}}@keyframes swExpand{0%{opacity:0;grid-template-rows:0fr}to{opacity:1;grid-template-rows:1fr}}@keyframes swCollapse{0%{opacity:1;grid-template-rows:1fr}to{opacity:0;grid-template-rows:0fr}}@keyframes swDot{0%,80%,to{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}@keyframes swBlink{50%{opacity:0}}@media (prefers-reduced-motion:reduce){.conv *,.conv :before,.conv :after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
