:root{--bg: #141824;--card: #1c2230;--line: rgba(255, 255, 255, .09);--text: #f2f5f9;--muted: #939db0;--accent: #4bc4d6;--on-accent: #08222a;--late: #ff6b6b;--today: #ffa94d;--soon: #ffd43b;--later: #4bc4d6;--done: #51cf66;--tap: 48px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,system-ui,sans-serif;font-size:17px;line-height:1.45;-webkit-font-smoothing:antialiased}button,input{font:inherit;color:inherit}.boot{display:grid;place-items:center;height:100%;color:var(--muted)}.boot-msg{padding:32px;text-align:center;gap:10px;line-height:1.6}.muted{color:var(--muted)}.pad{padding:20px}.err{color:var(--late);margin:10px 20px}.login-wrap{display:grid;place-items:center;min-height:100%;padding:22px;position:relative;overflow:hidden}.aurora{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none}.blob{position:absolute;display:block;border-radius:50%;filter:blur(64px);opacity:.5;will-change:transform}.blob.b1{width:62vmin;height:62vmin;top:-14vmin;left:-12vmin;animation:drift1 26s ease-in-out infinite}.blob.b2{width:52vmin;height:52vmin;bottom:-16vmin;right:-12vmin;opacity:.38;animation:drift2 32s ease-in-out infinite}.blob.b3{width:40vmin;height:40vmin;top:42%;left:52%;background:#7a5cff;opacity:.3;animation:drift3 38s ease-in-out infinite}@keyframes drift1{0%,to{transform:translateZ(0) scale(1)}50%{transform:translate3d(9vmin,7vmin,0) scale(1.13)}}@keyframes drift2{0%,to{transform:translateZ(0) scale(1.08)}50%{transform:translate3d(-11vmin,-6vmin,0) scale(1)}}@keyframes drift3{0%,to{transform:translate3d(-50%,-50%,0) scale(1)}50%{transform:translate3d(-62%,-38%,0) scale(1.2)}}.login-motif{z-index:0}.login-card{position:relative;z-index:1;width:100%;max-width:390px;background:color-mix(in srgb,var(--card) 72%,transparent);backdrop-filter:blur(22px) saturate(1.5);-webkit-backdrop-filter:blur(22px) saturate(1.5);border:1px solid rgba(255,255,255,.13);border-radius:26px;padding:32px 26px 26px;display:flex;flex-direction:column;gap:14px;box-shadow:0 26px 70px #00000080;animation:rise .5s cubic-bezier(.2,.8,.25,1) both}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.wordmark{display:flex;align-items:baseline;gap:9px;margin-bottom:2px}.wordmark-my{font-size:1.45rem;font-weight:300;letter-spacing:.01em;color:var(--muted)}.wordmark-study{font-size:2.5rem;font-weight:800;letter-spacing:-.035em;line-height:1;background:linear-gradient(103deg,var(--text) 12%,var(--accent) 96%);-webkit-background-clip:text;background-clip:text;color:transparent}.login-card .sub{margin:-6px 0 8px;color:var(--muted);font-size:.95rem}.login-card label{display:flex;flex-direction:column;gap:6px;font-size:.92rem;color:var(--muted)}.login-card input,.sheet input{min-height:var(--tap);padding:12px 14px;border-radius:13px;border:1px solid var(--line);background:#ffffff0d;color:var(--text);font-size:17px}.login-card input:focus,.sheet input:focus{outline:2px solid var(--accent);outline-offset:1px;box-shadow:0 0 0 5px color-mix(in srgb,var(--accent) 17%,transparent)}.login-card input::placeholder{color:color-mix(in srgb,var(--muted) 62%,transparent)}.go{position:relative;overflow:hidden;transition:transform .12s ease}.go:active{transform:scale(.975)}.go:disabled{opacity:.7}.login-card button[type=submit],.sheet-buttons button[type=submit]{min-height:var(--tap);border:0;border-radius:13px;cursor:pointer;background:var(--accent);color:var(--on-accent);font-weight:700;font-size:1.05rem}.login-error{color:var(--late);margin:0;font-size:.95rem}.login-foot{color:var(--muted);font-size:.85rem;margin:4px 0 0;text-align:center}.app{max-width:640px;margin:0 auto;padding:18px 16px 120px}.top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:20px}.top h1{margin:0;font-size:1.5rem;letter-spacing:-.02em}.top .sub{margin:2px 0 0;color:var(--muted);font-size:.95rem}.ghost{background:none;border:1px solid var(--line);border-radius:11px;padding:9px 13px;color:var(--muted);cursor:pointer;min-height:40px}.ghost:hover{color:var(--text)}.group{margin-bottom:22px}.group-title{font-size:.8rem;text-transform:uppercase;letter-spacing:.09em;margin:0 0 8px 2px}.group-title.u-late{color:var(--late)}.group-title.u-today{color:var(--today)}.group-title.u-soon{color:var(--soon)}.group-title.u-later,.group-title.u-none{color:var(--muted)}.row{display:flex;align-items:center;gap:13px;background:var(--card);border:1px solid var(--line);border-radius:15px;padding:13px 13px 13px 15px;margin-bottom:8px;border-left:4px solid var(--line)}.row.u-late{border-left-color:var(--late)}.row.u-today{border-left-color:var(--today)}.row.u-soon{border-left-color:var(--soon)}.row.u-later{border-left-color:var(--later)}.row.busy{opacity:.5}.row.done{opacity:.55}.tick{flex:0 0 auto;width:30px;height:30px;border-radius:50%;border:2px solid var(--muted);background:none;cursor:pointer;position:relative}.tick:after{content:"";position:absolute;top:-9px;right:-9px;bottom:-9px;left:-9px}.tick.on{background:var(--done);border-color:var(--done)}.tick.on:before{content:"✓";position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:#08220f;font-weight:800;font-size:.95rem}.row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.row-main strong{font-weight:600;overflow-wrap:anywhere}.row.done .row-main strong{text-decoration:line-through}.row-sub{color:var(--muted);font-size:.85rem}.row-x{flex:0 0 auto;width:38px;height:38px;border:0;border-radius:10px;background:none;color:var(--muted);font-size:1.5rem;line-height:1;cursor:pointer}.row-x:hover{color:var(--late);background:#ff6b6b1a}.done-toggle{background:none;border:0;color:var(--muted);cursor:pointer;padding:10px 2px;min-height:44px;text-decoration:underline;text-underline-offset:3px}.empty{text-align:center;padding:46px 20px}.empty .big{font-size:1.25rem;margin:0 0 6px}.fab{position:fixed;left:50%;transform:translate(-50%);bottom:calc(22px + env(safe-area-inset-bottom,0px));min-height:56px;padding:0 34px;border:0;border-radius:30px;background:var(--accent);color:var(--on-accent);font-size:1.1rem;font-weight:700;cursor:pointer;box-shadow:0 8px 26px #00000073}.sheet-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:flex-end;justify-content:center;z-index:20}.sheet{width:100%;max-width:640px;background:var(--card);border-radius:22px 22px 0 0;padding:22px 18px calc(22px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:12px;max-height:92vh;overflow-y:auto}.sheet h2{margin:0 0 4px;font-size:1.25rem}.sheet label{display:flex;flex-direction:column;gap:6px;font-size:.88rem;color:var(--muted)}.lbl{font-size:.88rem;color:var(--muted);margin-top:4px}.quick{display:flex;gap:8px;flex-wrap:wrap}.chip{min-height:44px;padding:0 16px;border-radius:22px;border:1px solid var(--line);background:#ffffff0a;cursor:pointer}.chip.on{background:var(--accent);color:var(--on-accent);border-color:var(--accent);font-weight:700}.date{min-height:var(--tap);padding:12px 14px;border-radius:13px;border:1px solid var(--line);background:#ffffff0d;color:var(--text)}.sheet-buttons{display:flex;gap:10px;margin-top:6px}.sheet-buttons button{flex:1;min-height:var(--tap);border-radius:13px;cursor:pointer}.sheet-buttons .ghost{border:1px solid var(--line);background:none}.sheet-buttons button[type=submit]:disabled{opacity:.45;cursor:default}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}.motif-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;background-repeat:repeat}.app{position:relative;z-index:1}.top-buttons{display:flex;gap:8px;flex-shrink:0}.looks-head{display:flex;justify-content:space-between;align-items:center}.looks-head h2{margin:0}.tabs{display:flex;gap:8px;margin:4px 0 6px}.tab{flex:1;min-height:44px;border-radius:12px;cursor:pointer;border:1px solid var(--line);background:#ffffff0a;color:var(--muted)}.tab.on{background:var(--accent);color:var(--on-accent);border-color:var(--accent);font-weight:700}.swatches{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:9px}.swatch{display:flex;align-items:center;gap:9px;cursor:pointer;min-height:var(--tap);padding:10px 12px;border-radius:14px;border:1px solid var(--line);background:#ffffff0a;color:var(--text);font-size:.92rem}.swatch.on{border-color:var(--accent);background:#ffffff17;font-weight:700}.swatch-dot{width:20px;height:20px;border-radius:50%;flex:0 0 auto;border:2px solid transparent}.own-colour{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:var(--tap);margin-top:12px;padding:8px 14px;border:1px solid var(--line);border-radius:14px;color:var(--muted);font-size:.92rem}.own-colour input[type=color]{width:56px;height:38px;padding:0;border:0;border-radius:10px;background:none;cursor:pointer}.linky{background:none;border:0;color:var(--accent);cursor:pointer;padding:10px 2px;min-height:44px;text-decoration:underline;text-underline-offset:3px}.done-btn{min-height:var(--tap);margin-top:14px;border:0;border-radius:13px;cursor:pointer;background:var(--accent);color:var(--on-accent);font-weight:700;font-size:1.05rem}.row.going{animation:bb-done .34s ease-out both}@keyframes bb-done{0%{transform:scale(1)}38%{transform:scale(1.03)}to{transform:scale(.985);opacity:.45}}.tick.on{animation:bb-pop .28s ease-out}@keyframes bb-pop{0%{transform:scale(.7)}55%{transform:scale(1.22)}to{transform:scale(1)}}.confetti{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;pointer-events:none}@media (prefers-reduced-motion: reduce){.blob,.login-card{animation:none!important}.blob.b3{transform:translate3d(-50%,-50%,0)}}@supports not ((backdrop-filter: blur(2px)) or (-webkit-backdrop-filter: blur(2px))){.login-card{background:var(--card)}.blob{opacity:.32}}@supports not ((background-clip: text) or (-webkit-background-clip: text)){.wordmark-study{background:none;color:var(--text)}}.nownext{display:flex;gap:8px;margin-bottom:16px}.nn-item{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;padding:11px 13px;border-radius:14px;border:1px solid var(--line);background:var(--card)}.nn-item.nn-now{border-color:color-mix(in srgb,var(--accent) 55%,transparent);background:color-mix(in srgb,var(--accent) 13%,var(--card))}.nn-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}.nn-item strong{font-size:1.05rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nn-room{font-size:.8rem;color:var(--muted)}.viewtabs{display:flex;gap:6px;margin-bottom:16px;padding:4px;background:#ffffff0a;border-radius:14px}.viewtab{flex:1;min-height:42px;border:0;border-radius:11px;cursor:pointer;background:none;color:var(--muted);font-size:.95rem}.viewtab.on{background:var(--accent);color:var(--on-accent);font-weight:700}.daybar{display:flex;gap:6px;margin-bottom:14px;overflow-x:auto;padding-bottom:2px}.daybtn{flex:1 0 auto;min-width:52px;min-height:44px;border-radius:12px;cursor:pointer;border:1px solid var(--line);background:#ffffff08;color:var(--muted)}.daybtn.on{background:var(--accent);color:var(--on-accent);border-color:var(--accent);font-weight:700}.daybtn.today:not(.on){border-color:color-mix(in srgb,var(--accent) 55%,transparent);color:var(--text)}.weekbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;padding:9px 13px;border-radius:12px;border:1px solid var(--line);font-size:.9rem;color:var(--muted)}.lessons{display:grid;gap:7px}.lesson{display:flex;align-items:center;gap:13px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 12px 12px 14px}.lesson-time{flex:0 0 62px;display:flex;flex-direction:column;gap:0;font-variant-numeric:tabular-nums;font-size:.9rem}.add-inline{width:100%;min-height:var(--tap);margin-top:12px;cursor:pointer;border:1px dashed var(--line);border-radius:14px;background:none;color:var(--muted)}.add-inline:hover{color:var(--text);border-color:var(--accent)}.add-lesson{display:flex;flex-direction:column;gap:10px;margin-top:12px;padding:14px;border:1px solid var(--line);border-radius:16px;background:var(--card)}.add-lesson input{min-height:var(--tap);padding:12px 14px;border-radius:13px;font-size:17px;border:1px solid var(--line);background:#ffffff0d;color:var(--text)}.time-row{display:flex;gap:10px}.time-row label{flex:1;display:flex;flex-direction:column;gap:5px;font-size:.85rem;color:var(--muted)}.cycle-note{margin-top:16px;text-align:center}.study-modes{display:grid;gap:9px;margin-top:8px}.study-mode{display:flex;flex-direction:column;gap:3px;text-align:left;cursor:pointer;padding:15px 16px;border-radius:16px;border:1px solid var(--line);background:var(--card);color:var(--text);min-height:64px}.study-mode:disabled{opacity:.4;cursor:default}.study-mode strong{font-size:1.05rem}.fc-wrap{display:flex;flex-direction:column;align-items:center;gap:12px}.fc-bar{width:100%;height:5px;border-radius:3px;background:#ffffff14;overflow:hidden}.fc-bar span{display:block;height:100%;background:var(--accent);transition:width .3s ease}.fc-count{margin:0;align-self:flex-end}.fc-card{width:100%;min-height:230px;border:0;background:none;cursor:pointer;perspective:1200px;padding:0}.fc-inner{position:relative;display:block;width:100%;min-height:230px;transform-style:preserve-3d;transition:transform .45s cubic-bezier(.3,.8,.3,1)}.fc-card.flipped .fc-inner{transform:rotateY(180deg)}.fc-face{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:26px;border-radius:20px;border:1px solid var(--line);background:var(--card);backface-visibility:hidden;-webkit-backface-visibility:hidden;font-size:1.25rem;line-height:1.4;text-align:center}.fc-front{font-weight:700}.fc-back{transform:rotateY(180deg);font-size:1.05rem;border-color:color-mix(in srgb,var(--accent) 45%,transparent)}@media (prefers-reduced-motion: reduce){.fc-inner{transition:none}}.fc-actions{width:100%;display:flex;flex-direction:column;gap:10px}.fc-flip{width:100%}.fc-judge{display:flex;gap:10px}.fc-judge button{flex:1;min-height:52px;border:0;border-radius:14px;font-size:1.02rem;font-weight:700;cursor:pointer}.fc-no{background:#ffffff14;color:var(--text)}.fc-yes{background:var(--done);color:#08220f}.mem-wrap{display:flex;flex-direction:column;gap:12px;align-items:center}.mem-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;width:100%}.mem-tile{aspect-ratio:3 / 4;border-radius:14px;cursor:pointer;padding:8px;border:1px solid var(--line);background:var(--card);color:var(--text);display:flex;align-items:center;justify-content:center;text-align:center;font-size:.78rem;line-height:1.25;overflow:hidden}.mem-tile span{display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden}.mem-tile.up{border-color:color-mix(in srgb,var(--accent) 55%,transparent);background:color-mix(in srgb,var(--accent) 12%,var(--card))}.mem-tile.matched{opacity:.45;border-color:var(--done)}@media (max-width: 380px){.mem-tile{font-size:.72rem}}.vq{display:flex;flex-direction:column;gap:13px}.vq-question{display:flex;flex-direction:column;gap:9px;align-items:flex-start;padding:16px;border-radius:16px;border:1px solid var(--line);background:var(--card)}.vq-question strong{font-size:1.12rem;line-height:1.4}.vq-listen{width:100%;min-height:58px;border-radius:16px;cursor:pointer;border:1px solid var(--line);background:#ffffff0d;color:var(--text);font-size:1.02rem}.vq-listen.on{background:var(--accent);color:var(--on-accent);border-color:var(--accent);font-weight:700;animation:vq-pulse 1.4s ease-in-out infinite}@keyframes vq-pulse{0%,to{opacity:1}50%{opacity:.72}}@media (prefers-reduced-motion: reduce){.vq-listen.on{animation:none}}.vq-heard{width:100%;padding:13px 14px;border-radius:14px;font-size:17px;font-family:inherit;border:1px solid var(--line);background:#ffffff0d;color:var(--text);resize:vertical}.vq-result{padding:15px 16px;border-radius:16px;border:1px solid var(--line);background:var(--card)}.vq-result.good{border-color:color-mix(in srgb,var(--done) 60%,transparent)}.vq-result.notyet{border-color:color-mix(in srgb,var(--today) 60%,transparent)}.vq-result p{margin:7px 0 0;line-height:1.5}.viewtab{font-size:.88rem;padding:0 4px;white-space:nowrap}@media (max-width: 400px){.viewtab{font-size:.8rem}}.found{display:flex;flex-direction:column;gap:11px;padding:16px;border-radius:18px;border:1px solid var(--line);background:var(--card)}.keep-row{display:flex;gap:11px;align-items:flex-start;cursor:pointer;padding:12px 13px;border-radius:13px;border:1px solid var(--line);background:#ffffff08}.keep-row input{width:20px;height:20px;margin-top:2px;accent-color:var(--accent);flex:0 0 auto}.keep-row span{display:flex;flex-direction:column;gap:3px}.focus{display:flex;flex-direction:column;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:15px;padding:14px 15px;border-left:4px solid var(--line)}.focus.working{border-left-color:var(--accent)}.focus-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.focus-teach{flex:1;min-width:150px;min-height:46px;font-size:.95rem}.lesson-view{display:flex;flex-direction:column;gap:12px}.explain p{margin:0 0 12px;line-height:1.65}.example{border:1px solid var(--line);border-radius:14px;background:var(--card);overflow:hidden}.example-head{width:100%;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 15px;background:none;border:0;color:var(--text);cursor:pointer;text-align:left;min-height:var(--tap)}.example-body{padding:0 15px 14px;border-top:1px solid var(--line)}.example-body p{margin:10px 0 0;line-height:1.5;font-variant-numeric:tabular-nums}.example-answer{font-weight:700;color:var(--accent)}.login-switch{align-self:center;margin-top:2px}.who-sees{display:flex;flex-direction:column;gap:3px;padding:12px 14px;border-radius:13px;border:1px solid var(--line)}.who-sees.shared{border-color:color-mix(in srgb,var(--today) 55%,transparent);background:color-mix(in srgb,var(--today) 10%,transparent)}.who-sees.private{border-color:color-mix(in srgb,var(--done) 45%,transparent);background:color-mix(in srgb,var(--done) 8%,transparent)}
