*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--color-bg);color:var(--color-ink);font-family:var(--font-body);font-size:18px;line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .3s ease,color .3s ease}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1;opacity:var(--texture-grain, 0);background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.6'/%3E%3C/svg%3E")}h1,h2,h3,h4{font-family:var(--font-display);font-weight:600;letter-spacing:-.01em;color:var(--color-ink);margin:0}h1{font-size:clamp(2rem,4vw,3rem);line-height:1.1}h2{font-size:clamp(1.5rem,3vw,2rem);line-height:1.2}h3{font-size:1.25rem}p{margin:0 0 .75em}button{font-family:var(--font-ui);cursor:pointer;border:none;background:none;color:inherit}input,select,textarea{font-family:var(--font-ui);font-size:1rem;color:var(--color-ink);background:var(--color-surface);border:1.5px solid var(--color-border);border-radius:8px;padding:.6em .85em;transition:border-color .15s ease,box-shadow .15s ease}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--color-primary) 18%,transparent)}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}.app-shell{min-height:100%;display:flex;flex-direction:column;position:relative;z-index:2}.container{width:100%;max-width:1100px;margin:0 auto;padding:0 1.25rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5em;font-family:var(--font-ui);font-weight:500;font-size:.95rem;padding:.7em 1.4em;border-radius:var(--radius-button);background:var(--color-primary);color:var(--color-primary-ink);transition:transform .1s ease,box-shadow .15s ease,background-color .15s ease;box-shadow:0 2px 6px var(--color-shadow)}.btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px var(--color-shadow)}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn.secondary{background:var(--color-surface);color:var(--color-ink);border:1.5px solid var(--color-border);box-shadow:none}.btn.secondary:hover{background:var(--color-surface-alt)}.btn.ghost{background:transparent;color:var(--color-ink-soft);box-shadow:none}.btn.ghost:hover{color:var(--color-ink);background:var(--color-surface-alt)}.btn.danger{background:#b42a2a;color:#fff}.navbar{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;background:var(--color-surface);border-bottom:1px solid var(--color-border);gap:1rem}.navbar-brand{font-family:var(--font-display);font-size:1.35rem;font-weight:600;color:var(--color-ink);letter-spacing:-.01em}.navbar-brand .brand-accent{color:var(--color-primary)}.navbar-nav{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.surface{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-card);box-shadow:0 4px 20px var(--color-shadow)}.stack>*+*{margin-top:var(--stack-space, 1rem)}.row{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap}.muted{color:var(--color-ink-soft)}.center{text-align:center}.mt-2{margin-top:2rem}.mt-1{margin-top:1rem}.mb-2{margin-bottom:2rem}.mb-1{margin-bottom:1rem}.select-wrap{position:relative;display:inline-block}select.select-styled{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:2.5em;cursor:pointer}.select-wrap:after{content:"▾";position:absolute;right:.9em;top:50%;transform:translateY(-50%);color:var(--color-ink-soft);pointer-events:none;font-size:.8em}.badge{display:inline-block;font-family:var(--font-ui);font-size:.75rem;font-weight:500;padding:.25em .7em;border-radius:999px;background:color-mix(in srgb,var(--color-primary) 12%,transparent);color:var(--color-primary);letter-spacing:.02em;text-transform:uppercase}.nav-toggle{display:none}@media (max-width: 760px){.nav-toggle{display:inline-flex}.navbar-nav.mobile-hidden{display:none}.navbar{flex-wrap:wrap}.navbar-nav{width:100%;flex-direction:column;align-items:stretch}.navbar-nav .select-wrap,.navbar-nav select{width:100%}}.spinner{width:28px;height:28px;border-radius:50%;border:3px solid var(--color-border);border-top-color:var(--color-primary);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.alert{padding:.9em 1.1em;border-radius:10px;border:1px solid var(--color-border);background:var(--color-surface-alt);margin-bottom:1rem}.alert.error{border-color:#c44;background:color-mix(in srgb,#c44 12%,var(--color-surface));color:#902020}.alert.success{border-color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 10%,var(--color-surface))}.admin-gear-btn{padding:.5em;opacity:.5;transition:opacity .15s ease,transform .3s ease}.admin-gear-btn:hover{opacity:1}.admin-gear-btn:hover svg{transform:rotate(45deg);transition:transform .3s ease}.study-page{padding:1.5rem 0 3rem;flex:1}.study-toolbar{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;justify-content:space-between;margin-bottom:1.25rem;padding:0 .25rem}.study-toolbar .filters{display:flex;gap:.5rem;flex-wrap:wrap}.study-toolbar label{font-family:var(--font-ui);font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;color:var(--color-ink-soft);display:block;margin-bottom:.25rem}.progress-info{font-family:var(--font-ui);font-size:.85rem;color:var(--color-ink-soft);letter-spacing:.02em}.progress-info strong{color:var(--color-ink);font-weight:600}.card-scene{perspective:1800px;width:100%;max-width:820px;margin:0 auto;position:relative}.flash-card{position:relative;width:100%;min-height:480px;cursor:pointer;transform-style:preserve-3d;-webkit-user-select:none;user-select:none}.flash-card-face{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;backface-visibility:hidden;-webkit-backface-visibility:hidden;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-card);box-shadow:0 10px 40px var(--color-shadow);overflow:hidden}.flash-card-face:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--color-primary) 0%,var(--color-accent) 50%,var(--color-primary) 100%);opacity:.8}.flash-card-inner{flex:1;padding:2.5rem 2rem 2rem;display:flex;flex-direction:column;justify-content:center}.card-question{text-align:center;display:flex;flex-direction:column;justify-content:center;gap:1.5rem;min-height:100%}.card-question .prompt-label{font-family:var(--font-ui);font-size:.8rem;text-transform:uppercase;letter-spacing:.15em;color:var(--color-ink-soft)}.card-question .question-text{font-family:var(--font-display);font-size:clamp(1.4rem,3vw,2.1rem);line-height:1.25;font-weight:500;color:var(--color-ink);max-width:40ch;margin:0 auto;font-style:normal}.card-question .book-label{font-family:var(--font-ui);font-size:.85rem;color:var(--color-primary);text-transform:uppercase;letter-spacing:.12em;font-weight:600}.tap-hint{margin-top:2rem;font-family:var(--font-ui);font-size:.75rem;color:var(--color-ink-soft);letter-spacing:.08em;text-transform:uppercase;opacity:.7}.card-answer{display:grid;grid-template-columns:minmax(0,1fr);gap:1.25rem;overflow-y:auto;max-height:100%}@media (min-width: 700px){.card-answer{grid-template-columns:220px minmax(0,1fr)}}.answer-image{width:100%;max-width:260px;margin:0 auto;border-radius:calc(var(--radius-card) - 6px);object-fit:contain;background:var(--color-bg-alt);border:1px solid var(--color-border);display:block;height:auto}.answer-image.placeholder{display:flex;align-items:center;justify-content:center;color:var(--color-ink-soft);font-family:var(--font-ui);font-size:.8rem}.answer-text{font-family:var(--font-body);font-size:1.05rem;line-height:1.6;color:var(--color-ink)}.answer-text .reference{font-family:var(--font-display);font-size:1.3rem;font-weight:600;color:var(--color-primary);margin-bottom:.75rem;display:block}.answer-text p{margin:0 0 .85em}.answer-text p:last-child{margin-bottom:0}.answer-text p.verse{font-style:italic;color:var(--color-ink-soft);border-left:3px solid var(--color-accent);padding-left:.9em;margin-top:1em}.card-controls{display:flex;justify-content:center;align-items:center;gap:.75rem;margin-top:1.75rem;flex-wrap:wrap}.nav-btn{display:inline-flex;align-items:center;justify-content:center;gap:.5em;font-family:var(--font-ui);font-weight:500;font-size:1rem;padding:.85em 1.6em;border-radius:var(--radius-button);background:var(--color-primary);color:var(--color-primary-ink);box-shadow:0 2px 8px var(--color-shadow);transition:transform .1s ease,box-shadow .15s ease}.nav-btn:hover{transform:translateY(-1px);box-shadow:0 4px 16px var(--color-shadow)}.nav-btn:active{transform:translateY(0)}.icon-btn{width:44px;height:44px;border-radius:999px;background:var(--color-surface);border:1.5px solid var(--color-border);display:inline-flex;align-items:center;justify-content:center;color:var(--color-ink-soft);transition:all .15s ease}.icon-btn:hover{color:var(--color-primary);border-color:var(--color-primary)}.icon-btn.active{color:var(--color-primary);border-color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 10%,var(--color-surface))}.keyboard-hint{text-align:center;margin-top:1.5rem;font-family:var(--font-ui);font-size:.75rem;color:var(--color-ink-soft);letter-spacing:.04em}.keyboard-hint kbd{font-family:var(--font-ui);background:var(--color-surface);border:1px solid var(--color-border);border-bottom-width:2px;border-radius:4px;padding:1px 6px;font-size:.7rem;color:var(--color-ink);margin:0 2px}.empty-state{text-align:center;padding:3rem 1.5rem;color:var(--color-ink-soft)}.empty-state h2{color:var(--color-ink);margin-bottom:.5rem}.flash-card-face.back{transform:rotateY(180deg)}.card-scene[data-animation=flip] .flash-card{transition:transform .7s cubic-bezier(.3,.05,.3,1)}.card-scene[data-animation=flip] .flash-card.flipped{transform:rotateY(180deg)}.card-scene[data-animation=fade] .flash-card-face{transition:opacity .35s ease;transform:none!important;backface-visibility:visible;-webkit-backface-visibility:visible}.card-scene[data-animation=fade] .flash-card-face.front{opacity:1}.card-scene[data-animation=fade] .flash-card-face.back,.card-scene[data-animation=fade] .flash-card.flipped .flash-card-face.front{opacity:0;pointer-events:none}.card-scene[data-animation=fade] .flash-card.flipped .flash-card-face.back{opacity:1;pointer-events:auto}.card-scene[data-animation=slide] .flash-card-face{transition:transform .45s cubic-bezier(.25,.8,.3,1),opacity .3s ease;backface-visibility:visible;-webkit-backface-visibility:visible;transform:none}.card-scene[data-animation=slide] .flash-card-face.front{transform:translateY(0);opacity:1}.card-scene[data-animation=slide] .flash-card-face.back{transform:translateY(100%);opacity:0;pointer-events:none}.card-scene[data-animation=slide] .flash-card.flipped .flash-card-face.front{transform:translateY(-30px);opacity:0;pointer-events:none}.card-scene[data-animation=slide] .flash-card.flipped .flash-card-face.back{transform:translateY(0);opacity:1;pointer-events:auto}.card-scene[data-animation=zoom] .flash-card-face{transition:transform .4s cubic-bezier(.3,1.3,.5,1),opacity .3s ease;backface-visibility:visible;-webkit-backface-visibility:visible;transform-origin:center center}.card-scene[data-animation=zoom] .flash-card-face.front{transform:scale(1);opacity:1}.card-scene[data-animation=zoom] .flash-card-face.back{transform:scale(.85);opacity:0;pointer-events:none}.card-scene[data-animation=zoom] .flash-card.flipped .flash-card-face.front{transform:scale(1.15);opacity:0;pointer-events:none}.card-scene[data-animation=zoom] .flash-card.flipped .flash-card-face.back{transform:scale(1);opacity:1;pointer-events:auto}.card-scene[data-animation=none] .flash-card-face{transition:none;transform:none;backface-visibility:visible;-webkit-backface-visibility:visible}.card-scene[data-animation=none] .flash-card-face.back,.card-scene[data-animation=none] .flash-card.flipped .flash-card-face.front{display:none}.card-scene[data-animation=none] .flash-card.flipped .flash-card-face.back{display:flex}.admin-page{flex:1;padding:2rem 0 4rem}.admin-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;padding-bottom:1rem;border-bottom:1px solid var(--color-border);flex-wrap:wrap;gap:1rem}.admin-header h1{font-size:1.75rem}.admin-header .muted{font-family:var(--font-ui);font-size:.9rem}.admin-tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--color-border);margin-bottom:1.75rem;overflow-x:auto}.admin-tab{font-family:var(--font-ui);font-weight:500;font-size:.95rem;padding:.75em 1.1em;color:var(--color-ink-soft);border-bottom:2px solid transparent;white-space:nowrap;transition:color .15s,border-color .15s}.admin-tab:hover{color:var(--color-ink)}.admin-tab.active{color:var(--color-primary);border-color:var(--color-primary)}.cards-toolbar{display:flex;gap:.75rem;flex-wrap:wrap;align-items:center;justify-content:space-between;margin-bottom:1rem}.cards-toolbar .filters{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.search-input{min-width:260px;max-width:100%}.cards-list{display:flex;flex-direction:column;gap:.5rem}.card-row{display:grid;grid-template-columns:60px minmax(0,1fr) auto;gap:1rem;align-items:center;padding:.75rem 1rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;transition:background-color .1s,border-color .1s}.card-row:hover{background:var(--color-surface-alt);border-color:var(--color-primary)}.card-row-thumb{width:60px;height:60px;border-radius:8px;background:var(--color-bg-alt);object-fit:contain;border:1px solid var(--color-border)}.card-row-thumb.placeholder{display:flex;align-items:center;justify-content:center;color:var(--color-ink-soft);font-size:1.2rem}.card-row-meta{min-width:0}.card-row-meta .question{font-family:var(--font-display);font-size:1.05rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-row-meta .meta{font-family:var(--font-ui);font-size:.8rem;color:var(--color-ink-soft);display:flex;gap:.5rem;flex-wrap:wrap;margin-top:3px}.card-row-actions{display:flex;gap:.4rem}.form-grid{display:grid;gap:1rem}.form-group label{display:block;font-family:var(--font-ui);font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;color:var(--color-ink-soft);margin-bottom:.35rem;font-weight:500}.form-group textarea{width:100%;min-height:120px;resize:vertical;font-family:var(--font-body)}.form-group input,.form-group select{width:100%}.image-upload-box{display:flex;gap:1rem;align-items:center;padding:.85rem;border:2px dashed var(--color-border);border-radius:10px;background:var(--color-surface-alt)}.image-upload-preview{width:90px;height:90px;border-radius:8px;object-fit:contain;background:var(--color-bg-alt);border:1px solid var(--color-border)}.image-upload-preview.placeholder{display:flex;align-items:center;justify-content:center;color:var(--color-ink-soft);font-size:.8rem}.form-actions{display:flex;gap:.75rem;justify-content:flex-end;padding-top:1rem;border-top:1px solid var(--color-border);margin-top:1rem}.theme-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem;margin-bottom:1.5rem}.theme-card{padding:1rem;background:var(--color-surface);border:2px solid var(--color-border);border-radius:12px;cursor:pointer;text-align:left;transition:border-color .15s,transform .1s;display:block;width:100%;font-family:inherit;color:inherit}.theme-card:hover{transform:translateY(-2px);border-color:var(--color-primary)}.theme-card.selected{border-color:var(--color-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--color-primary) 30%,transparent)}.theme-card h4{font-family:var(--font-display);font-size:1.1rem;margin-bottom:.25rem}.theme-card p{font-size:.85rem;color:var(--color-ink-soft);margin:0}.theme-swatches{display:flex;gap:4px;margin-top:.75rem}.theme-swatch{width:22px;height:22px;border-radius:6px;border:1px solid rgba(0,0,0,.1)}.animation-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.75rem}.animation-card{padding:.85rem 1rem;background:var(--color-surface);border:2px solid var(--color-border);border-radius:10px;cursor:pointer;text-align:left;width:100%;font-family:inherit;color:inherit;transition:border-color .15s}.animation-card:hover{border-color:var(--color-primary)}.animation-card.selected{border-color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 8%,var(--color-surface))}.animation-card h4{font-family:var(--font-display);font-size:1rem;margin-bottom:.2rem}.animation-card p{font-size:.8rem;color:var(--color-ink-soft);margin:0}.color-row{display:grid;grid-template-columns:1fr 80px 100px 40px;gap:.5rem;align-items:center;padding:.5rem 0}.color-row label{font-family:var(--font-ui);font-size:.85rem;color:var(--color-ink)}.color-row input[type=color]{padding:0;width:100%;height:36px;border-radius:6px;cursor:pointer}.color-row input[type=text]{font-family:var(--font-ui);font-size:.8rem;padding:.4em .5em}.login-card{max-width:420px;margin:4rem auto;padding:2.5rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-card);box-shadow:0 8px 40px var(--color-shadow)}.login-card h1{text-align:center;margin-bottom:.5rem}.login-card .subtitle{text-align:center;color:var(--color-ink-soft);margin-bottom:2rem;font-family:var(--font-ui);font-size:.9rem}
