:root{--ink:#171717;--muted:#858585;--line:#ececec;--bg:#fafafa;--white:#fff;color-scheme:light}*{box-sizing:border-box}html{min-width:320px;scroll-behavior:smooth}body{margin:0;min-height:100vh;background:var(--bg);color:var(--ink);font:15px/1.65 Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif}button,input,select{font:inherit}button,select{-webkit-tap-highlight-color:transparent}button{border:1px solid #e7e7e7;border-radius:11px;padding:8px 13px;background:#fff;color:#454545;cursor:pointer;transition:border-color .18s ease,background .18s ease,transform .18s ease,box-shadow .18s ease}button:hover:not(:disabled){border-color:#cfcfcf}button:active:not(:disabled){transform:translateY(1px)}.flashcard:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #cfcfcf;outline-offset:3px}button:disabled{opacity:.35;cursor:not-allowed}[hidden]{display:none!important}.wrap{max-width:900px;margin:0 auto;padding:34px 22px 44px}.site-header{gap:14px;margin-bottom:37px}.brand-mark,.site-header{display:flex;align-items:center}.brand-mark{width:42px;height:42px;border-radius:13px;flex:0 0 auto;justify-content:center;gap:3px;background:#fff;border:1px solid var(--line)}.brand-mark span{width:3px;border-radius:9px;background:#777}.brand-mark span:first-child{height:12px;opacity:.55}.brand-mark span:nth-child(2){height:20px}.brand-mark span:nth-child(3){height:15px;opacity:.75}.brand-kicker,.section-kicker{color:#929292;font-size:10px;font-weight:700;letter-spacing:1.8px}.brand-copy h1{font-size:24px;letter-spacing:-.5px;margin:1px 0 0;line-height:1.35;font-weight:650}p.top{color:var(--muted);margin:3px 0 0;font-size:13px}.logout-button{margin-left:auto;color:#777;font-size:12px}.home-intro{display:flex;align-items:flex-end;justify-content:space-between;gap:25px;margin-bottom:23px}.home-intro h2,.study-heading h2{font-size:23px;letter-spacing:-.4px;margin:3px 0 0;line-height:1.4}.section-desc{color:var(--muted);margin:4px 0 0;font-size:13px}.home-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.create-primary,.login-submit{background:#222;color:#fff;border-color:#222;border-radius:12px;padding:10px 16px;font-weight:600}.create-primary:hover:not(:disabled),.login-submit:hover:not(:disabled){background:#444;border-color:#444}.quiet-button{color:#777;background:#fff}.home-summary{display:flex;align-items:center;gap:20px;margin:0 0 23px}.summary-numbers{display:flex;align-items:baseline;gap:6px;white-space:nowrap;color:#999;font-size:12px}.summary-numbers strong{color:#222;font-size:23px;font-weight:650}.summary-numbers i{width:1px;height:22px;background:#e7e7e7;margin:0 12px}.overall-track{width:min(275px,32vw);height:5px;border-radius:99px;background:#eee;overflow:hidden}.overall-track span{display:block;height:100%;background:#888;transition:width .25s ease}.deck-grid,.group-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:15px;gap:15px}.deck-card-wrap,.group-card{position:relative;min-width:0}.group-card{min-height:218px;border:1px solid #eaeaea;border-radius:19px;background:#fff;box-shadow:0 6px 24px #00000005;overflow:hidden}.group-card-main{width:100%;height:100%;min-height:218px;padding:21px 23px 18px;text-align:left;border:0;border-radius:inherit;display:flex;flex-direction:column;align-items:stretch}.group-card-main:hover{border:0;background:#fff}.deck-top,.group-card-top{display:flex;justify-content:space-between;align-items:center}.deck-icon,.folder-icon{color:#777;display:inline-flex}.deck-icon svg,.folder-icon svg{width:29px;height:29px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.deck-kind,.group-kind{color:#aaa;font-size:9px;font-weight:700;letter-spacing:1.5px}.group-card h3{margin:17px 0 4px;font-size:20px}.group-subtitle{color:#999;font-size:12px;margin:0;min-height:37px}.deck-meta,.group-meta{display:flex;justify-content:space-between;gap:8px;color:#777;font-size:11px;margin-top:auto;padding-top:15px}.deck-progress,.group-progress{height:4px;border-radius:99px;background:#eee;overflow:hidden;margin-top:8px}.deck-progress span,.group-progress span{display:block;height:100%;background:#888;border-radius:inherit}.deck-cta,.group-cta{display:flex;justify-content:space-between;margin-top:10px;color:#555;font-size:12px;font-weight:650}.deck-cta span:last-child,.group-cta span:last-child{font-size:18px}.small-delete{position:absolute;right:13px;top:12px;z-index:2;border:0;background:#fff;color:#999;font-size:11px;padding:4px 7px;opacity:0}.deck-card-wrap:hover .small-delete,.group-card:hover .small-delete{opacity:1}.home-note{display:flex;gap:10px;align-items:flex-start;margin-top:24px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:#fff}.note-dot{flex:0 0 auto;width:6px;height:6px;border-radius:50%;background:#999;margin-top:8px}.home-note p{margin:0;color:#777;font-size:12px}.group-heading{display:flex;align-items:flex-end;gap:17px;margin-bottom:20px}.back-button{flex:0 0 auto;margin:0 0 4px;padding:7px 10px;color:#666;background:#fff}.group-heading-copy{min-width:0;flex:1 1}.group-heading h2{margin:3px 0 0;font-size:28px;line-height:1.35}.group-heading>.create-primary{margin-bottom:3px;white-space:nowrap}.group-summary{color:#888;font-size:12px;margin:0 0 17px}.deck-card{position:relative;display:flex;flex-direction:column;align-items:stretch;width:100%;min-height:218px;padding:20px 21px 17px;text-align:left;border:1px solid #ededed;border-radius:17px;background:#fff;box-shadow:0 5px 22px #00000005;color:var(--ink)}.deck-card:hover{border-color:#d8d8d8;box-shadow:0 9px 28px #00000009;transform:translateY(-2px)}.deck-icon{width:35px;height:35px}.deck-card h3{font-size:18px;margin:16px 0 3px}.deck-subtitle{min-height:40px;color:var(--muted);font-size:12px;margin:0}.deck-delete{top:9px;right:9px}.study-heading{display:flex;align-items:flex-start;gap:15px;margin-bottom:19px}.study-title-wrap{min-width:0}.study-heading h2{font-size:22px}.stats,.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.toolbar{margin-bottom:15px}.toolbar select{border:1px solid #e7e7e7;border-radius:10px;padding:8px 11px;background:white;color:#505050;cursor:pointer}.stats{justify-content:flex-end;margin:13px 0 0}.tag{font-size:11px;color:#777;border:1px solid #e9e9e9;border-radius:99px;padding:3px 10px;background:#fff}.progress{height:5px;border-radius:100px;background:#eee;overflow:hidden;margin:9px 0 17px}.progress>div{height:100%;background:#888;transition:width .25s ease}.study-screen{display:flex;flex-direction:column;align-items:center}.flashcard{position:relative;perspective:1300px;width:min(355px,calc(100vw - 32px));min-height:190px;margin:0 auto;cursor:pointer;outline:none;will-change:transform,opacity;transform-origin:center center}.inside{width:100%;height:190px;position:relative;transition:transform .54s cubic-bezier(.2,.8,.2,1);transform-style:preserve-3d}.flashcard.flipped .inside{transform:rotateY(180deg)}.face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;border:1px solid #f0f0f0;box-shadow:0 9px 28px #0000000b;border-radius:31px;padding:25px 21px 30px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;overflow:hidden}.back,.face{background:#fff}.back{transform:rotateY(180deg)}.front h3{font-size:clamp(18px,5vw,21px);line-height:1.48;font-weight:500;margin:0}.back .answer,.front h3{max-width:100%;white-space:pre-line;overflow-wrap:anywhere}.back .answer{font-size:clamp(16px,4.5vw,18px);line-height:1.55;font-weight:550}.back .hint{color:#888;font-size:11px;line-height:1.45;margin-top:9px;max-width:100%}.face .tip{position:absolute;bottom:12px;color:#999;font-size:11px;line-height:1.3}.actions{width:min(355px,calc(100vw - 32px));display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:19px}.card-count{color:#666;font-size:14px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;min-width:48px}.action-tools{display:flex;align-items:center;gap:9px}.round-action{width:40px;border:1px solid #e8e8e8;border-radius:50%;place-items:center;color:#111;font-size:26px;line-height:1}.icon-action,.round-action{height:40px;flex:0 0 auto;padding:0;display:grid;background:transparent}.icon-action{width:36px;border:0;border-radius:9px;color:#666;place-items:center;font-size:22px}.icon-action svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.more-wrap{position:relative}.more-menu{position:absolute;z-index:5;right:0;top:calc(100% + 7px);width:145px;padding:6px;border:1px solid #ededed;border-radius:12px;background:#fff;box-shadow:0 8px 24px #00000012}.more-menu button{width:100%;text-align:left;border:0;border-radius:8px;padding:8px 9px;font-size:12px;background:#fff}.hint-row{color:#999;font-size:11px;margin:14px 0 0}.empty,.hint-row{text-align:center}.empty{padding:58px 20px;background:white;border:1px solid var(--line);border-radius:18px;box-shadow:0 7px 25px #00000006}.empty-symbol{display:grid;place-items:center;width:45px;height:45px;border-radius:50%;margin:0 auto 12px;color:#555;background:#f2f2f2;font-size:23px}.empty h3{margin:0;font-size:18px}.empty p{max-width:420px;margin:8px auto 17px;color:var(--muted);font-size:13px}.empty-actions{display:flex;gap:9px;justify-content:center;flex-wrap:wrap}.primary{background:#222;color:#fff;border-color:#222}.footer{display:flex;justify-content:space-between;gap:12px;border-top:1px solid var(--line);margin-top:37px;padding-top:17px;font-size:10px;letter-spacing:.4px;color:#999}.inline-notice{text-align:center;color:#777;font-size:12px}.loading-state{color:#777;padding-top:15vh;text-align:center}.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 50% 0,#fff 0,#fafafa 65%)}.login-card{width:min(420px,100%);padding:38px;border:1px solid #ededed;border-radius:23px;background:#fff;box-shadow:0 18px 60px #00000008}.login-mark{display:flex;gap:3px;align-items:center;justify-content:center;width:44px;height:44px;margin-bottom:24px;border:1px solid #eee;border-radius:14px}.login-mark span{width:3px;border-radius:5px;background:#777}.login-mark span:first-child{height:12px;opacity:.5}.login-mark span:nth-child(2){height:22px}.login-mark span:nth-child(3){height:16px;opacity:.7}.login-card h1{margin:5px 0 4px;font-size:27px}.login-desc,.login-footnote{color:#888;font-size:13px}.login-card form{margin-top:25px}.login-label{display:block;margin-bottom:7px;font-size:12px;color:#555}.login-card input{width:100%;border:1px solid #e6e6e6;border-radius:11px;padding:12px 13px;outline:none}.login-submit{width:100%;margin-top:13px;padding:12px}.login-error{color:#b34d4d;font-size:12px;margin:8px 0 0}.login-footnote{margin:19px 0 0;font-size:11px;line-height:1.6}.group-empty{margin-top:8px;padding:50px 20px}@media (max-width:620px){.wrap{padding:23px 13px 32px}.site-header{margin-bottom:27px;gap:11px}.brand-copy h1{font-size:21px}.home-intro{align-items:flex-start;flex-direction:column;gap:13px}.home-actions{justify-content:flex-start}.home-summary{align-items:flex-start;flex-direction:column;gap:9px}.overall-track{width:100%}.deck-grid,.group-grid{grid-template-columns:1fr;gap:11px}.deck-card,.group-card-main{min-height:205px;padding:18px}.group-heading{display:grid;grid-template-columns:auto 1fr;align-items:center;grid-gap:10px;gap:10px}.group-heading .back-button,.group-heading>.create-primary{grid-column:1/-1;justify-self:start}.study-heading{gap:9px}.back-button{padding:7px 9px}.back-button span{display:none}.actions,.flashcard{width:min(355px,calc(100vw - 28px))}.actions{gap:5px}.action-tools{gap:6px}.round-action{width:39px;height:39px}.toolbar{gap:7px}.toolbar button,.toolbar select{font-size:12px;padding:7px 9px}.footer{flex-direction:column;gap:4px}.login-card{padding:29px 23px}}.flashcard.card-exit{z-index:20;pointer-events:none;animation:cardFlyOut .15s cubic-bezier(.32,.02,.72,.32) both}.flashcard.card-enter{z-index:10;animation:cardFlyIn .15s cubic-bezier(.18,.72,.28,1) both}@keyframes cardFlyOut{0%{opacity:1;transform:translateZ(0) rotate(0) scale(1)}to{opacity:0;transform:translate3d(-100px,-65px,0) rotate(-5deg) scale(.92)}}@keyframes cardFlyIn{0%{opacity:0;transform:translate3d(100px,-65px,0) rotate(5deg) scale(.92)}to{opacity:1;transform:translateZ(0) rotate(0) scale(1)}}@media (prefers-reduced-motion:reduce){.flashcard.card-enter,.flashcard.card-exit{animation-duration:1ms}}