: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}*{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}.chat-layout{grid-template-columns:280px 1fr;height:100vh;display:grid}.chat-sidebar{background:var(--swai-chat-sidebar-bg);color:var(--swai-chat-sidebar-text);padding:calc(var(--swai-space-unit) * 5);gap:calc(var(--swai-space-unit) * 5);flex-direction:column;display:flex;overflow-y:auto}.chat-sidebar h3{text-transform:uppercase;letter-spacing:.04em;opacity:.7;margin-bottom:calc(var(--swai-space-unit) * 2);font-size:.8rem}.chat-sidebar__section{gap:calc(var(--swai-space-unit) * 2);padding-bottom:calc(var(--swai-space-unit) * 4);border-bottom:1px solid #ffffff14;flex-direction:column;display:flex}.chat-sidebar__mode-toggle{flex-direction:row}.chat-sidebar__action{font:inherit;text-align:left;color:var(--swai-chat-sidebar-text);cursor:pointer;padding:calc(var(--swai-space-unit) * 1.5) 0;background:0 0;border:none;font-size:.9rem;text-decoration:none}.chat-sidebar__action:hover{color:#fff}.chat-sidebar__action--danger{color:#fca5a5}.chat-sidebar__previous{gap:calc(var(--swai-space-unit) * 1);flex-direction:column;list-style:none;display:flex}.chat-sidebar__link{color:var(--swai-chat-sidebar-text);opacity:.8;font-size:.85rem;text-decoration:none}.chat-sidebar__link--current{color:#fff;opacity:1;font-weight:600}.chat-sidebar textarea{font:inherit;color:var(--swai-chat-sidebar-text);border-radius:var(--swai-radius-sm);padding:calc(var(--swai-space-unit) * 2);resize:vertical;background:#ffffff0f;border:1px solid #ffffff26;font-size:.85rem}.chat-sidebar__toggle{align-items:center;gap:calc(var(--swai-space-unit) * 2);cursor:pointer;font-size:.9rem;display:flex}.chat-sidebar__toggle input{accent-color:var(--swai-purple)}.chat-main{flex-direction:column;height:100vh;display:flex}.chat-main__header{align-items:center;gap:calc(var(--swai-space-unit) * 2);padding:calc(var(--swai-space-unit) * 3) calc(var(--swai-space-unit) * 6);border-bottom:1px solid var(--swai-border);background:var(--swai-surface);display:flex}.chat-messages{padding:calc(var(--swai-space-unit) * 6);gap:calc(var(--swai-space-unit) * 4);flex-direction:column;flex:1;display:flex;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}.bubble__cursor{color:var(--swai-purple);animation:.9s step-start infinite swai-blink}@keyframes swai-blink{50%{opacity:0}}.chat-messages__typing{align-self:flex-start}.chat-input-area{border-top:1px solid var(--swai-border);background:var(--swai-surface);padding:calc(var(--swai-space-unit) * 4) calc(var(--swai-space-unit) * 6);gap:calc(var(--swai-space-unit) * 3);flex-direction:column;display:flex}.suggestion-panel{background:var(--swai-purple-light);border-radius:var(--swai-radius-md);padding:calc(var(--swai-space-unit) * 3) calc(var(--swai-space-unit) * 4)}.suggestion-panel__actions{gap:calc(var(--swai-space-unit) * 4);margin-top:calc(var(--swai-space-unit) * 2);display:flex}.suggestion-panel .link-button{color:var(--swai-purple)}.chat-input{gap:calc(var(--swai-space-unit) * 2.5);display:flex}.chat-input input{font:inherit;padding:calc(var(--swai-space-unit) * 2.5) calc(var(--swai-space-unit) * 4);border:1px solid var(--swai-border);border-radius:var(--swai-radius-md);flex:1}.chat-input input:focus{outline:2px solid var(--swai-purple);outline-offset:1px}.chat-input--voice{align-items:center}.voice-controls{flex-wrap:wrap;flex:1;align-items:center;gap:1rem;display:flex}.voice-controls__push{flex:1;align-items:center;gap:.75rem;display:flex}.voice-record{border:1px solid var(--swai-purple);background:var(--swai-purple-light);color:var(--swai-purple);cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:none;border-radius:999px;padding:.65rem 1.5rem;font-size:1rem;font-weight:600;transition:background .15s,transform .15s}.voice-record--active{background:var(--swai-purple);color:#fff;animation:1.2s ease-in-out infinite voice-pulse;transform:scale(1.05)}@keyframes voice-pulse{0%,to{box-shadow:0 0 #7c3aed66}50%{box-shadow:0 0 0 10px #7c3aed00}}.voice-controls__hint{color:var(--swai-text-muted,#6b7280);font-size:.85rem}.voice-controls__status{flex:1;align-items:center;gap:.5rem;margin:0;font-size:.95rem;display:flex}.voice-controls__dot{background:var(--swai-text-muted,#9ca3af);border-radius:50%;width:10px;height:10px}.voice-controls__dot--live{background:var(--swai-danger);animation:1.2s ease-in-out infinite voice-pulse}.voice-controls__handsfree{cursor:pointer;white-space:nowrap;align-items:center;gap:.4rem;font-size:.85rem;display:flex}.voice-controls__handsfree input{accent-color:var(--swai-purple)}.bubble__icon--recording{margin-top:.25rem}.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}
