@import "https://fonts.googleapis.com/css2?family=Sora:wght@400;600;700;800&family=IBM+Plex+Sans:wght@400;500;600&display=swap";:root{--bg-base:#f5f3ef;--bg-soft:#fffdf8;--panel:#ffffffd1;--text:#182026;--muted:#5c6773;--line:#18202624;--brand:#0d8a9e;--brand-strong:#0a6c7b;--accent:#f49f0a;--danger:#cf3e4f;--radius-xl:20px;--radius-lg:14px;--shadow:0 12px 30px #1327361f;color:var(--text);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:IBM Plex Sans,Segoe UI,sans-serif;font-weight:400;line-height:1.5}*{box-sizing:border-box}body{min-height:100vh;color:var(--text);background:radial-gradient(1100px 500px at -8% -12%, #0d8a9e33, transparent 58%), radial-gradient(900px 500px at 100% 0%, #f49f0a38, transparent 52%), linear-gradient(170deg, var(--bg-soft), var(--bg-base));margin:0}#root{min-height:100vh}h1,h2,h3{letter-spacing:-.02em;font-family:Sora,IBM Plex Sans,sans-serif}h1{margin:0;font-size:clamp(1.8rem,3vw,2.6rem)}h2{margin-top:0;font-size:clamp(1.2rem,2.3vw,1.7rem)}p{color:var(--muted)}button,input,select{font:inherit}input,select{border:1px solid var(--line);color:var(--text);background:#fff;border-radius:10px;padding:.6rem .72rem;transition:border-color .18s,box-shadow .18s}input:focus,select:focus{border-color:#0d8a9ecc;outline:none;box-shadow:0 0 0 3px #0d8a9e24}button{cursor:pointer;color:#fff;background:linear-gradient(135deg, var(--brand), #19a5b5);border:1px solid #0000;border-radius:11px;padding:.58rem .95rem;font-weight:600;transition:transform .15s,box-shadow .2s,filter .2s;box-shadow:0 8px 20px #0b7e8f42}button:hover{filter:brightness(1.04);transform:translateY(-1px);box-shadow:0 12px 24px #0b7e8f4d}button:active{transform:translateY(0)}button:disabled{opacity:.65;cursor:not-allowed;transform:none}.app-shell{border-radius:var(--radius-xl);border:1px solid var(--line);background:var(--panel);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);width:min(1020px,100% - 1.3rem);box-shadow:var(--shadow);margin:1rem auto 2rem;padding:clamp(1rem,3vw,1.8rem);animation:.45s fadeUp}.app-header{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.95rem;display:flex}.app-title{margin-bottom:0}.account-compact{border:1px solid var(--line);background:#ffffffb3;border-radius:12px;flex-direction:column;align-items:center;gap:.35rem;min-width:0;padding:.55rem .7rem;display:flex}.account-panel{flex-direction:column;align-items:center;gap:.35rem;width:100%;display:flex}.account-toggle{border:1px solid var(--line);width:100%;color:var(--text);box-shadow:none;background:#ffffffeb;border-radius:999px;padding:.38rem .55rem;font-size:.82rem;line-height:1.2}.account-toggle:hover{filter:none;box-shadow:none;transform:none}.account-label{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-size:.72rem;font-weight:700}.account-username{width:100%;min-width:11rem;padding:.45rem .58rem;font-size:.88rem}.account-username-display,.account-email{text-overflow:ellipsis;white-space:nowrap;max-width:220px;color:var(--text);font-size:.82rem;font-weight:600;overflow:hidden}.logout-btn{background:linear-gradient(135deg, var(--danger), #e46674);box-shadow:0 8px 22px #cf3e4f45}.logout-btn-compact{padding:.42rem .7rem;font-size:.8rem;line-height:1.1}@media (width<=640px){.app-header{flex-direction:column;align-items:stretch}.account-compact{align-self:flex-end;align-items:flex-end}}.status-note{border:1px solid var(--line);color:var(--text);background:#ffffffb3;border-radius:10px;margin:0 0 .8rem;padding:.62rem .75rem}.status-note.error{color:#8d2430;background:#ffeff1cc;border-color:#cf3e4f59}.nav-tabs{gap:.5rem;margin-bottom:1.1rem;padding-bottom:.35rem;display:flex;overflow-x:auto}.nav-tabs button{color:var(--muted);border:1px solid var(--line);box-shadow:none;background:#fff;flex:none}.nav-tabs button.active{color:#fff;background:linear-gradient(135deg, var(--brand), var(--brand-strong));border-color:#0000;box-shadow:0 8px 20px #0b7e8f3d}.panel{border:1px solid var(--line);border-radius:var(--radius-lg);background:#fffc;margin-bottom:1rem;padding:.95rem}.form-row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.split-actions{flex-wrap:wrap;gap:.45rem;display:flex}.feature-list,.simple-list{margin:0;padding-left:1rem}.simple-list li{margin-bottom:.45rem}.library-tree{margin:0;padding:0;list-style:none}.library-node{list-style:none}.library-node-header{align-items:flex-start;gap:.55rem;margin-bottom:.45rem;display:flex}.library-toggle,.library-toggle-spacer{flex:none;width:1.5rem;height:1.5rem;margin-top:.05rem}.library-toggle{border:1px solid var(--line);color:var(--text);box-shadow:none;background:#ffffffe6;border-radius:999px;padding:0;line-height:1}.library-toggle:hover{filter:none;box-shadow:none;transform:none}.library-node-content{flex:1;min-width:0}.library-node-line{flex-wrap:wrap;align-items:center;gap:.55rem;display:flex}.library-name{color:var(--text);font-weight:600}.library-name-child{padding-left:.25rem}.library-path{color:var(--muted);font-size:.82rem}.library-node-actions{flex-wrap:wrap;gap:.45rem;margin-left:auto;display:flex}.library-children{border-left:1px solid #1820261f;margin:.15rem 0 .55rem;padding:0 0 0 1.25rem;list-style:none}.library-edit-row{width:100%}.library-edit-row input{min-width:12rem}.library-row+.library-row{margin-top:.55rem}.ocr-grid{grid-template-columns:auto 1fr 1fr auto;align-items:center;gap:.5rem;margin-bottom:.42rem;display:grid}.vocab-card{margin-bottom:.75rem}.statistics-shell{position:relative;overflow:hidden}.statistics-shell:before{content:"";pointer-events:none;background:radial-gradient(circle,#0d8a9e2e,#0000 72%);border-radius:50%;width:240px;height:240px;position:absolute;inset:-20% auto auto -10%}.statistics-header{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.15rem;display:flex}.statistics-header p{max-width:52ch;margin-bottom:0}.statistics-badge{text-align:right;background:linear-gradient(160deg,#ffffffe6,#eaf8fadb);border:1px solid #0d8a9e2e;border-radius:16px;min-width:150px;padding:.8rem .95rem;box-shadow:0 10px 22px #13273614}.statistics-badge-label{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin-bottom:.2rem;font-size:.72rem;display:block}.statistics-badge strong{font-size:1.05rem}.statistics-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;margin-bottom:1rem;display:grid}.statistics-card,.statistics-panel{border:1px solid var(--line);background:#ffffffd6;border-radius:18px;box-shadow:0 10px 24px #13273614}.statistics-card{flex-direction:column;gap:.3rem;min-height:118px;padding:.95rem 1rem;display:flex}.statistics-card-accent{background:linear-gradient(160deg,#0d8a9e1f,#ffffffe0)}.statistics-card-label{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-size:.75rem}.statistics-card-value{font-size:clamp(1.8rem,3vw,2.4rem);line-height:1}.statistics-card-meta{color:var(--muted);font-size:.86rem}.statistics-feature-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;margin-bottom:1rem;display:grid}.statistics-panel{padding:1rem}.statistics-panel-full{margin-bottom:0}.statistics-panel-head{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.9rem;display:flex}.statistics-panel-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.45rem;display:flex}.statistics-panel-head h3{margin:0}.statistics-panel-chip{color:var(--brand-strong);background:#0d8a9e1a;border-radius:999px;padding:.35rem .65rem;font-size:.8rem;font-weight:600}.statistics-reset-btn{color:var(--text);border:1px solid var(--line);box-shadow:none;background:#fff;padding:.4rem .72rem;font-size:.82rem}.statistics-reset-btn:hover{filter:none;box-shadow:none;border-color:#18202647;transform:none}.streak-ring{aspect-ratio:1;background:radial-gradient(circle at center, #fffffff2 56%, transparent 57%), conic-gradient(var(--accent) 0% 78%, #f49f0a24 78% 100%);border-radius:50%;place-items:center;width:148px;margin:0 auto .9rem;display:grid;box-shadow:inset 0 0 0 1px #f49f0a2e,0 12px 28px #13273614}.streak-ring-value{font-size:2.2rem;font-weight:800;line-height:1}.streak-ring-label{color:var(--muted);margin-top:-.15rem;font-size:.78rem}.statistics-bar-group{gap:.45rem;display:grid}.statistics-bar-row{justify-content:space-between;gap:.5rem;font-size:.92rem;display:flex}.statistics-bar-track,.distribution-track{background:#18202614;border-radius:999px;height:10px;overflow:hidden}.statistics-bar-fill,.distribution-fill{border-radius:inherit;background:linear-gradient(90deg, var(--brand), var(--accent));height:100%}.status-stack{gap:.7rem;display:grid}.status-row{background:#ffffffb8;border-radius:14px;grid-template-columns:auto 1fr auto;align-items:center;gap:.7rem;padding:.72rem .8rem;display:grid}.status-row strong{line-height:1.05;display:block}.status-row p{margin:.1rem 0 0;font-size:.82rem}.status-dot{border-radius:50%;width:12px;height:12px}.status-dot-good{background:#2da66d;box-shadow:0 0 0 4px #2da66d24}.status-dot-wip{background:#f49f0a;box-shadow:0 0 0 4px #f49f0a24}.status-dot-new{background:#cf3e4f;box-shadow:0 0 0 4px #cf3e4f24}.distribution-list{gap:.8rem;display:grid}.distribution-row{grid-template-columns:140px 1fr 52px;align-items:center;gap:.8rem;display:grid}.distribution-label{gap:.1rem;display:grid}.distribution-label span,.distribution-share{color:var(--muted);font-size:.84rem}.distribution-share{text-align:right}.distribution-track{height:12px}.distribution-fill{background:linear-gradient(90deg,#0d8a9e,#19a5b5 60%,#f49f0a)}.login-shell{border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);width:min(520px,100% - 1.3rem);box-shadow:var(--shadow);text-align:center;background:#ffffffde;border-radius:24px;margin:1.2rem auto;padding:clamp(1rem,3.6vw,2rem)}.login-actions{flex-direction:column;gap:.7rem;display:flex}.login-form{text-align:left;gap:.7rem;display:grid}.login-form input{width:100%}.login-form .split-actions{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.flashcard{cursor:pointer;box-shadow:var(--shadow);text-align:center;background:linear-gradient(160deg,#fffffff2,#eaf8fad9);border:1px solid #0d8a9e47;border-radius:18px;min-height:170px;padding:clamp(1.6rem,4vw,2.8rem)}.learn-shell{position:relative;overflow:hidden}.learn-status-row{flex-wrap:wrap;gap:.45rem;margin-bottom:.55rem;display:flex}.learn-chip{border:1px solid var(--line);background:#ffffffdb;border-radius:999px;align-items:center;padding:.26rem .55rem;font-size:.82rem;font-weight:600;display:inline-flex}.learn-motivation{color:#7a4d03;background:linear-gradient(120deg,#fff8e2f2,#ffecc5e0);border:1px solid #f49f0a57;border-radius:12px;margin-bottom:.65rem;padding:.62rem .72rem;font-weight:600;animation:1.6s ease-in-out infinite pulseMotivation}.learn-celebration-overlay{pointer-events:none;z-index:3;position:absolute;inset:0}.learn-celebration-message{color:#fff;letter-spacing:.03em;background:#132736cc;border:1px solid #ffffffad;border-radius:999px;padding:.35rem .78rem;font-weight:700;animation:.45s popCelebration;position:absolute;top:10px;left:50%;transform:translate(-50%)}.learn-burst-particle{left:var(--burst-origin-x);top:var(--burst-origin-y);background:hsl(var(--burst-hue), 95%, 60%);width:9px;height:9px;box-shadow:0 0 0 4px hsla(var(--burst-hue), 95%, 62%, .14);transform:translate(-50%, -50%) rotate(var(--burst-angle)) translateY(0);opacity:0;animation:burstScatter .95s ease-out var(--burst-delay) forwards;border-radius:2px;position:absolute}.learn-celebration-record .learn-burst-particle{width:11px;height:11px;animation-duration:1.25s}.learn-confetti{top:-10%;left:var(--confetti-x);background:hsl(var(--confetti-hue), 92%, 62%);width:9px;height:18px;transform:rotate(var(--confetti-rotate));opacity:0;animation:confettiRain var(--confetti-duration) ease-in var(--confetti-delay) forwards;border-radius:2px;position:absolute}.learn-poop-drop{left:var(--poop-x);font-size:var(--poop-size);filter:drop-shadow(0 5px 6px #00000029);opacity:0;animation:poopRain var(--poop-duration) linear var(--poop-delay) forwards;line-height:1;position:absolute;top:-12%}.learn-celebration-miss .learn-celebration-message{background:#3a220ddb;border-color:#ffd6ad80}@keyframes burstScatter{0%{opacity:0;transform:translate(-50%, -50%) rotate(var(--burst-angle)) translateY(0) scale(.55)}16%{opacity:1}to{opacity:0;transform:translate(-50%, -50%) rotate(var(--burst-angle)) translateY(calc(var(--burst-distance) * -1)) scale(1)}}@keyframes confettiRain{0%{opacity:0;transform:translateY(-14px) rotate(var(--confetti-rotate))}18%{opacity:1}to{opacity:0;transform:translateY(260px) rotate(calc(var(--confetti-rotate) + 320deg))}}@keyframes poopRain{0%{opacity:0;transform:translateY(-6px)rotate(0)}12%{opacity:1}to{opacity:0;transform:translateY(285px)rotate(24deg)}}@keyframes popCelebration{0%{opacity:0;transform:translate(-50%)translateY(-8px)scale(.92)}to{opacity:1;transform:translate(-50%)translateY(0)scale(1)}}@keyframes pulseMotivation{0%,to{box-shadow:0 0 #f49f0a2e}50%{box-shadow:0 0 0 10px #f49f0a00}}.flashcard h2{margin-bottom:.5rem}.muted{color:var(--muted)}hr{background:linear-gradient(to right, transparent, var(--line), transparent);border:0;height:1px;margin:1rem 0}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (width<=760px){.app-shell{border-radius:16px;width:calc(100% - .8rem);margin:.4rem auto 1rem;padding:.82rem}.login-shell{border-radius:16px;width:calc(100% - .8rem)}.login-form .split-actions{grid-template-columns:1fr}input,select,button{width:100%}.nav-tabs button{width:auto}.split-actions button{width:100%}.statistics-header,.statistics-feature-grid{grid-template-columns:1fr;display:grid}.statistics-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.statistics-badge{text-align:left;justify-self:flex-start}.distribution-row,.ocr-grid{grid-template-columns:1fr}.form-row{align-items:stretch}.statistics-panel-head{flex-direction:column;align-items:flex-start}}
