:root{--paper: #eae7df;--paper-raised: #f2f0e9;--ink: #262420;--ink-soft: #6b675e;--line: #d9d5c9;--accent: #3a5b7c;--accent-soft: #dbe3ea;--error: #a1453a;--persona-light: #8b6f47;--persona-working: #55677a;--persona-deep: #6f5f82;--serif: "Newsreader", Georgia, serif;--sans: "Public Sans", system-ui, sans-serif;--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-smooth: .35s cubic-bezier(.16, 1, .3, 1);color-scheme:light}:root[data-theme=dark]{--paper: #1b1a17;--paper-raised: #232220;--ink: #ece9e2;--ink-soft: #a39d8f;--line: #3a3733;--accent: #82abc9;--accent-soft: #24313c;--error: #d9897c;--persona-light: #c9a876;--persona-working: #8fa3b8;--persona-deep: #a893c2;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;transition:background-color var(--transition-smooth),color var(--transition-smooth)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app-shell{max-width:640px;margin:0 auto;padding:3rem 1.5rem 6rem;min-height:100vh;display:flex;flex-direction:column}.masthead{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:3.5rem}.brand-block{display:flex;flex-direction:column}.header-actions{display:flex;align-items:center;gap:.85rem;padding-top:.3rem}.theme-toggle{background:none;border:1px solid var(--line);border-radius:999px;width:2.25rem;height:2.25rem;display:flex;align-items:center;justify-content:center;font-size:.9375rem;color:var(--ink-soft);cursor:pointer;transition:border-color var(--transition-fast),color var(--transition-fast),transform var(--transition-fast)}.theme-toggle:hover{color:var(--ink);border-color:var(--ink-soft);transform:rotate(15deg)}.wordmark{font-family:var(--serif);font-size:1.125rem;font-style:italic;color:var(--ink);letter-spacing:.01em}.session-note{font-size:.8125rem;color:var(--ink-soft)}.auth-action{background:none;border:none;font-family:var(--sans);font-size:.8125rem;color:var(--ink-soft);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px;cursor:pointer;padding:0;transition:color var(--transition-fast)}.auth-action:hover{color:var(--ink)}.account{position:relative;display:flex;align-items:center;align-self:center}.avatar-button{background:none;border:none;padding:0;line-height:0;cursor:pointer;border-radius:50%}.avatar-button:hover .avatar{border-color:var(--ink-soft)}.avatar{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:50%;overflow:hidden;background:var(--accent-soft);color:var(--accent);font-family:var(--serif);font-size:.9375rem;font-weight:500;border:1px solid var(--line);transition:border-color var(--transition-fast),background-color var(--transition-smooth)}.avatar img{width:100%;height:100%;object-fit:cover;display:block}.account-menu{position:absolute;top:calc(100% + .6rem);right:0;z-index:10;display:flex;flex-direction:column;min-width:9.5rem;background:var(--paper-raised);border:1px solid var(--line);border-radius:6px;padding:.35rem;box-shadow:0 6px 20px #00000029;animation:menu-in .16s cubic-bezier(.16,1,.3,1) both}@keyframes menu-in{0%{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.account-menu .auth-action{width:100%;text-align:left;padding:.5rem .6rem;border-radius:4px;text-decoration:none;font-size:.875rem}.account-menu .auth-action:hover{background:var(--accent-soft);color:var(--ink)}h1{font-family:var(--serif);font-weight:500;font-size:2.25rem;line-height:1.2;margin:0 0 .75rem;max-width:20ch}h2{font-family:var(--serif);font-weight:500;font-size:1.375rem;line-height:1.3;margin:0 0 .5rem}p{margin:0 0 1rem;max-width:58ch}.lede{color:var(--ink-soft);font-size:1.0625rem;max-width:42ch}.field{margin:1.75rem 0}textarea,input[type=text]{width:100%;font-family:var(--sans);font-size:1rem;color:var(--ink);background:var(--paper-raised);border:1px solid var(--line);border-radius:4px;padding:.9rem 1rem;resize:vertical;line-height:1.55;transition:border-color var(--transition-fast),background-color var(--transition-smooth),color var(--transition-smooth)}textarea:focus,input[type=text]:focus{border-color:var(--accent)}textarea::placeholder,input::placeholder{color:var(--ink-soft);opacity:.75}.btn{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--sans);font-size:.9375rem;font-weight:500;border-radius:4px;padding:.7rem 1.25rem;cursor:pointer;border:1px solid transparent;transition:background-color .12s ease,border-color .12s ease,transform .12s ease}.btn:disabled{cursor:not-allowed;opacity:.45}.btn:active:not(:disabled){transform:scale(.96)}.btn-primary{position:relative;overflow:hidden;background:var(--accent);color:var(--paper)}.btn-primary:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(120deg,transparent,rgba(255,255,255,.18),transparent);transform:translate(-120%);transition:transform .55s ease}.btn-primary:hover:after{transform:translate(120%)}.btn-primary:not(:disabled):hover{background:#2f4a63}.btn-quiet{background:transparent;color:var(--ink-soft);border-color:var(--line)}.btn-quiet:not(:disabled):hover{color:var(--ink);border-color:var(--ink-soft)}.actions{display:flex;gap:.75rem;align-items:center;margin-top:1.5rem}.chip-row{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem}.chip{font-family:var(--sans);font-size:.875rem;color:var(--ink-soft);background:transparent;border:1px solid var(--line);border-radius:999px;padding:.35rem .85rem;cursor:pointer;transition:border-color var(--transition-fast),color var(--transition-fast),transform var(--transition-fast)}.chip:hover{border-color:var(--ink-soft);color:var(--ink);transform:translateY(-1px)}.persona-list{display:flex;flex-direction:column;border-top:1px solid var(--line);margin-top:1.5rem}.persona-row{display:flex;align-items:flex-start;gap:1rem;width:100%;text-align:left;background:none;border:none;border-bottom:1px solid var(--line);padding:1.15rem .25rem;cursor:pointer;font-family:var(--sans);color:var(--ink);transition:background-color var(--transition-fast),padding-left var(--transition-fast)}.persona-row:last-child{border-bottom:none}.persona-row:hover:not(:disabled){background:var(--paper-raised);padding-left:.65rem}.persona-row:after{content:"→";margin-left:auto;align-self:center;padding-left:.5rem;color:var(--ink-soft);opacity:0;transform:translate(-4px);transition:opacity var(--transition-fast),transform var(--transition-fast)}.persona-row:hover:not(:disabled):after{opacity:1;transform:translate(0)}.persona-mark{flex-shrink:0;width:9px;height:9px;border-radius:50%;margin-top:.55rem;background:var(--dot-color, var(--ink-soft))}.depth-meter{display:flex;align-items:flex-end;gap:3px;flex-shrink:0;height:1rem;margin-top:.3rem}.depth-bar{width:3px;border-radius:2px;background:var(--line);transition:background-color var(--transition-fast)}.depth-bar:nth-child(1){height:40%}.depth-bar:nth-child(2){height:70%}.depth-bar:nth-child(3){height:100%}.depth-bar.filled{background:var(--dot-color, var(--accent))}.role-mark{flex-shrink:0;width:2.25rem;height:2.25rem;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--accent-soft);color:var(--accent);font-family:var(--serif);font-size:.9375rem;border:1px solid var(--line);transition:background-color var(--transition-smooth),border-color var(--transition-smooth)}.persona-copy{flex:1;min-width:0}.persona-name{font-family:var(--serif);font-size:1.0625rem;margin:0 0 .15rem}.persona-desc{font-size:.875rem;color:var(--ink-soft);margin:0}.persona-lock{font-size:.8125rem;color:var(--ink-soft);font-style:italic;white-space:nowrap;align-self:center}.conversation{border-top:1px solid var(--line);margin-top:1.5rem}.turn{display:flex;gap:1.25rem;padding:1.5rem 0;border-bottom:1px solid var(--line)}.turn-label{flex-shrink:0;width:8.5rem;font-size:.8125rem;color:var(--speaker-color, var(--ink-soft));padding-top:.2rem}.turn-body{flex:1;min-width:0}.turn-body p{margin:0 0 .5rem;max-width:none}.turn-body p:last-child{margin-bottom:0}.persona-question{font-family:var(--serif);font-style:italic;font-size:1.0625rem}.turn-user .turn-body{color:var(--ink)}.thinking-indicator{display:flex;align-items:center;gap:.6rem;font-size:.9375rem;color:var(--ink-soft);font-style:italic;padding:1rem 0}.thinking-dots{display:inline-flex;align-items:center;gap:.28rem}.thinking-dots .dot{width:6px;height:6px;border-radius:50%;background:var(--ink-soft);animation:thinking-pulse 1.1s ease-in-out infinite}.thinking-dots .dot:nth-child(2){animation-delay:.15s}.thinking-dots .dot:nth-child(3){animation-delay:.3s}@keyframes thinking-pulse{0%,60%,to{opacity:.25;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}.audio-visualizer{width:100%;height:28px;display:block}.narration-row{display:flex;align-items:center;gap:.75rem;padding:.75rem 0}.narration-row .audio-visualizer{flex:1}.narration-stop{font-size:.8125rem;color:var(--ink-soft);background:none;border:none;cursor:pointer;text-decoration:underline;text-decoration-color:var(--line);white-space:nowrap;padding:0}.narration-stop:hover{color:var(--ink)}.mic-visualizer-row{margin-top:.6rem}.input-row{display:flex;align-items:flex-end;gap:.75rem}.input-row textarea{flex:1}.mic-button{flex-shrink:0;width:2.75rem;height:2.75rem;border-radius:50%;border:1px solid var(--line);background:var(--paper-raised);color:var(--ink-soft);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:border-color var(--transition-fast),color var(--transition-fast),background-color var(--transition-fast)}.mic-button:hover:not(:disabled){color:var(--ink);border-color:var(--ink-soft)}.mic-button.recording{color:var(--error);border-color:var(--error);animation:mic-pulse 1.4s ease-in-out infinite}@keyframes mic-pulse{0%,to{box-shadow:0 0 #a1453a40}50%{box-shadow:0 0 0 6px #a1453a14}}.mic-button:disabled{opacity:.4;cursor:not-allowed}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.1rem .25rem;border-bottom:1px solid var(--line)}.settings-row:last-of-type{border-bottom:none}.settings-label{font-family:var(--serif);font-size:1.0625rem;margin:0 0 .15rem}.settings-desc{font-size:.875rem;color:var(--ink-soft);margin:0}.voice-select{font-family:var(--sans);font-size:.9375rem;color:var(--ink);background:var(--paper-raised);border:1px solid var(--line);border-radius:4px;padding:.55rem .75rem;min-width:10rem;cursor:pointer}.switch{position:relative;display:inline-flex;align-items:center;width:2.75rem;height:1.5rem;flex-shrink:0;cursor:pointer}.switch input{opacity:0;width:0;height:0;position:absolute}.switch-track{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--line);border-radius:999px;transition:background-color var(--transition-fast)}.switch-thumb{position:absolute;top:2px;left:2px;width:1.25rem;height:1.25rem;border-radius:50%;background:var(--paper-raised);box-shadow:0 1px 2px #00000040;transition:transform var(--transition-fast)}.switch input:checked+.switch-track{background:var(--accent)}.switch input:checked+.switch-track .switch-thumb{transform:translate(1.25rem)}.report-section{margin-top:2.25rem}.report-list{list-style:none;margin:0;padding:0}.report-list li{padding:.6rem 0;border-bottom:1px solid var(--line);max-width:56ch}.report-list li:first-child{padding-top:0}.report-list--nailed li{padding-left:1.1rem;position:relative}.report-list--nailed li:before{content:"";position:absolute;left:0;top:1rem;width:6px;height:6px;border-radius:50%;background:var(--accent)}.report-list--gaps li{color:var(--ink)}.flashcard-grid{display:flex;flex-direction:column;gap:.75rem;margin-top:1rem}.flashcard{cursor:pointer;perspective:1200px}.flashcard-inner{position:relative;min-height:5.5rem;transform-style:preserve-3d}.flashcard-face{border:1px solid var(--line);border-radius:6px;padding:1.1rem 1.25rem;backface-visibility:hidden;background:var(--paper-raised);transition:background-color var(--transition-smooth),border-color var(--transition-smooth)}.flashcard-face.back{position:absolute;top:0;right:0;bottom:0;left:0;transform:rotateY(180deg);background:var(--accent-soft);border-color:var(--accent)}.flashcard-eyebrow{font-size:.75rem;color:var(--ink-soft);margin:0 0 .35rem}.flashcard-text{font-family:var(--serif);font-size:1.0625rem;margin:0}.error-note{color:var(--error);font-size:.9375rem;margin-top:.75rem}.footer-nav{margin-top:auto;padding-top:3rem}@media (max-width: 480px){h1{font-size:1.875rem}.turn{flex-direction:column;gap:.35rem}.turn-label{width:auto}}.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem;margin:1.75rem 0}.stat-card{background:var(--paper-raised);border:1px solid var(--line);border-radius:6px;padding:1.1rem 1rem;text-align:center;transition:background-color var(--transition-smooth),border-color var(--transition-smooth)}.stat-number{font-family:var(--serif);font-size:2rem;margin:0;color:var(--accent)}.stat-label{font-size:.8125rem;color:var(--ink-soft);margin:.15rem 0 0}.chart-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:1rem}.chart-card{background:var(--paper-raised);border:1px solid var(--line);border-radius:6px;padding:1.1rem 1.25rem .5rem;transition:background-color var(--transition-smooth),border-color var(--transition-smooth)}.chart-card h2{font-size:1rem;margin-bottom:.5rem}.chart-card--wide{grid-column:1 / -1;margin-top:1rem}.history-list{border-top:1px solid var(--line);margin-top:1rem}.history-row{border-bottom:1px solid var(--line)}.history-row-header{display:flex;align-items:center;gap:.85rem;width:100%;text-align:left;background:none;border:none;padding:1rem .25rem;cursor:pointer;font-family:var(--sans);color:var(--ink);transition:background-color var(--transition-fast)}.history-row-header:hover{background:var(--paper-raised)}.history-dot{flex-shrink:0;width:9px;height:9px;border-radius:50%;background:var(--dot-color, var(--ink-soft))}.history-topic{font-family:var(--serif);font-size:1.0625rem;flex:1}.history-meta{font-size:.8125rem;color:var(--ink-soft);white-space:nowrap}.history-chevron{font-size:1.125rem;color:var(--ink-soft);width:1.25rem;text-align:center}.history-row-body{padding:0 .25rem 1.5rem}@media (max-width: 640px){.stat-grid,.chart-row{grid-template-columns:1fr}}.book-mascot{--frame: 64px;width:var(--frame);height:var(--frame);margin-bottom:.75rem;background-image:url(/assets/book-sprite-Cjo76RpY.png);background-repeat:no-repeat;background-size:calc(var(--frame) * 30) var(--frame);background-position:0 0;image-rendering:pixelated;image-rendering:-moz-crisp-edges;image-rendering:crisp-edges;animation:book-flip 5s steps(1,end) infinite,book-bob 2.6s ease-in-out infinite}@keyframes book-flip{0%{background-position:0 0;animation-timing-function:steps(1,end)}20%{background-position:0 0;animation-timing-function:steps(29,end)}50%{background-position:calc(var(--frame) * -29) 0;animation-timing-function:steps(1,end)}70%{background-position:calc(var(--frame) * -29) 0;animation-timing-function:steps(29,end)}to{background-position:0 0}}@keyframes book-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@media (max-width: 480px){.book-mascot{--frame: 48px;margin-bottom:.5rem}}@media (prefers-reduced-motion: reduce){.book-mascot{animation:none;background-position:calc(var(--frame) * -29) 0}}
