
    :root{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:#293449;background:#fff8ee}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer}.app{max-width:540px;margin:auto;min-height:100dvh;padding:0 20px 32px}.hero{padding:31px 4px 20px}.eyebrow{font-size:12px;letter-spacing:.17em;font-weight:800;color:#fa8c61}.hero h1{font-size:32px;letter-spacing:-.03em;margin:8px 0 7px}.hero p{margin:0;color:#7e8694;font-size:14px;line-height:1.6}.tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;padding:5px;background:#f1e9dd;border-radius:17px;margin-bottom:22px}.tab{border:0;background:transparent;color:#8b8d90;border-radius:13px;padding:12px 2px;font-weight:700;font-size:clamp(13px,3.2vw,15px)}.tab[aria-selected="true"]{background:#fff;box-shadow:0 3px 10px #65543d14;color:#293449}.panel[hidden]{display:none}.section-head{display:flex;justify-content:space-between;align-items:end;margin:0 2px 16px}.section-head h2{font-size:21px;margin:0}.section-head p{font-size:12px;color:#979da5;margin:4px 0 0}.progress{color:#ea855d;font-weight:800;font-size:13px}.card{background:#fff;border:1px solid #f4ede3;border-radius:20px;box-shadow:0 7px 24px #594b3510;margin:0 0 12px;overflow:hidden}.task{display:flex;align-items:center;gap:14px;padding:17px 18px;cursor:pointer}.icon{flex:none;width:46px;height:46px;border-radius:15px;display:grid;place-items:center;font-size:23px}.peach{background:#fff0e7}.blue{background:#e9f3ff}.green{background:#e8f6e8}.purple{background:#f1edff}.task-copy{flex:1;min-width:0}.task-title{display:block;font-size:17px;font-weight:750}.task-sub{display:block;margin-top:4px;color:#8d96a0;font-size:12px;line-height:1.45}.check{appearance:none;width:25px;height:25px;border:2px solid #d6dce2;border-radius:9px;display:grid;place-items:center;flex:none;margin:0}.check:checked{border-color:#79bd8c;background:#79bd8c}.check:checked:after{content:"✓";color:#fff;font-weight:800;font-size:17px}.task:has(.check:checked) .task-title{text-decoration:line-through;color:#a0a8af}.hint{margin:17px 5px;color:#9a9ea4;font-size:12px;text-align:center}.date-pill{background:#fff0df;color:#cf8450;padding:6px 10px;border-radius:99px;font-size:12px;font-weight:700}.subject{padding:18px}.subject-head{display:flex;gap:12px;align-items:center;margin-bottom:14px}.subject-head h3{font-size:18px;margin:0}.subject-head small{display:block;color:#98a0a9;font-size:12px;margin-top:3px}.subject .icon{width:42px;height:42px}.subject .task{padding:11px 0;border-top:1px solid #f1f2f3;align-items:flex-start}.subject .task-title{font-size:14px;line-height:1.55}.subject .check{width:23px;height:23px;border-radius:8px;margin-top:1px}.details{background:#f8fafb;border-radius:14px;padding:14px 15px;margin-top:8px;color:#626e7b;font-size:13px;line-height:1.75}.details strong{color:#344154}.details ul,.details ol{padding-left:19px;margin:6px 0}.details li+li{margin-top:6px}.details p{margin:7px 0}.note{background:#fff7e9;color:#93652d;padding:12px;border-radius:12px;margin-top:12px;font-size:13px;line-height:1.6}.memo{padding:18px}.memo h3{font-size:17px;margin:0 0 12px}.memo-item{padding:11px 0;border-top:1px solid #f2f0ec;color:#626e7b;font-size:13px;line-height:1.55}.memo-item:first-of-type{border:0}.footer{text-align:center;color:#adb0ae;font-size:12px;padding:16px 0}.focus:focus-visible,.tab:focus-visible,.check:focus-visible{outline:3px solid #f4a47c;outline-offset:3px}@media(max-width:380px){.app{padding-left:15px;padding-right:15px}.hero h1{font-size:29px}}
  

.assignment-date{display:inline-block;margin:0 0 12px 3px}

/* 首页小游戏入口：整张卡片可点击，图标不依赖系统 emoji。 */
.game-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.game-tile{display:grid;grid-template-columns:32px minmax(0,1fr);align-items:center;gap:10px 8px;min-width:0;padding:12px;border:1px solid #d4e3f5;border-radius:18px;background:linear-gradient(155deg,#f0f7ff,#e1edfc);color:#3866a2;text-decoration:none;box-shadow:0 6px 18px #594b350b;-webkit-tap-highlight-color:transparent;touch-action:manipulation;transition:transform .15s ease}
.game-tile.peach{background:linear-gradient(155deg,#fff5ed,#ffeadb);border-color:#f2dbc9;color:#a6532d}
.game-tile.green{background:linear-gradient(155deg,#f0faee,#e2f2dc);border-color:#d0e5c8;color:#487744}
.game-icon{display:grid;place-items:center;width:32px;height:32px;border-radius:10px;font-size:24px;background:#ffffffc9;box-shadow:0 4px 12px #29344908}
.game-icon svg{width:26px;height:26px}
.game-name{font-size:14px;white-space:nowrap;font-weight:800;line-height:1.4;color:#293449}
.game-description{display:none}
.game-action{grid-column:1/-1;display:flex;align-items:center;justify-content:center;gap:12px;width:100%;min-height:36px;border-radius:10px;background:#ffffffb3;font-size:13px;font-weight:700}
.game-action span{font-size:18px}
.game-tile:active{transform:scale(.97)}
.game-tile:focus-visible{outline:3px solid #f4a47c;outline-offset:3px}
@media(max-width:380px){.game-grid{gap:10px}.game-tile{grid-template-columns:24px minmax(0,1fr);gap:8px 6px;padding:10px}.game-icon{width:24px;height:24px;font-size:20px}.game-icon svg{width:22px;height:22px}.game-name{font-size:12px}}
@media(max-height:700px){
  .app:has(#tab-games[aria-selected="true"]) .hero{padding-top:14px;padding-bottom:10px}
  .app:has(#tab-games[aria-selected="true"]) .eyebrow{display:none}
  .app:has(#tab-games[aria-selected="true"]) .hero h1{font-size:26px}
  .app:has(#tab-games[aria-selected="true"]) .auth-bar{margin-bottom:10px}
  .app:has(#tab-games[aria-selected="true"]) .tabs{margin-bottom:12px}
  #games .section-head{margin-bottom:10px}
}
@media(prefers-reduced-motion:reduce){.game-tile{transition:none}}

.month-nav{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:700}.month-nav button,#close-dialog{border:0;border-radius:10px;background:#fff0df;color:#93652d;width:34px;height:34px;font-size:24px}.calendar{padding:16px 10px}.weekdays,.calendar-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.weekdays{text-align:center;color:#979da5;font-size:12px;padding:5px 0 13px}.calendar-day{border:0;border-radius:50%;background:transparent;color:#293449;width:100%;aspect-ratio:1;font-weight:700}.calendar-day:hover{box-shadow:inset 0 0 0 2px #f4a47c}.calendar-day.complete{background:#53d344;color:white}.calendar-day.overdue{background:#ff4148;color:white}.calendar-day[aria-current="date"]{outline:2px solid #b6bdc5;outline-offset:2px}.calendar-day:focus-visible,.month-nav button:focus-visible,#close-dialog:focus-visible{outline:3px solid #f4a47c;outline-offset:2px}#daily-dialog{width:calc(100% - 32px);max-width:500px;max-height:85dvh;overflow:auto;border:1px solid #f4ede3;border-radius:22px;padding:22px 16px;background:#fff8ee;color:#293449}#daily-dialog::backdrop{background:#29344966}#daily-dialog .section-head{align-items:center}#daily-dialog h2{font-size:20px;margin-bottom:6px}#daily-error{color:#b34e35;font-size:14px}

#celebration,#win{border:0;padding:0;background:transparent;overflow:visible;color:#293449;width:min(340px,calc(100% - 48px));text-align:center}#celebration::backdrop,#win::backdrop{background:#25254199;backdrop-filter:blur(5px)}.reward-card{position:relative;border:2px solid #ffe7a6;border-radius:28px;padding:28px 20px;background:radial-gradient(circle at 50% 0,#fff0b7,#fff 70%);box-shadow:0 0 80px #ffcf6566;animation:reward-pop .65s cubic-bezier(.2,1.5,.4,1) both}.reward-star{display:block;font-size:64px;animation:reward-star 1.2s ease-in-out infinite alternate}.reward-card h2{font-size:21px;margin:15px 0 8px}.reward-points{font-size:24px;color:#ce791b;font-weight:800}.reward-points strong{display:inline-block;font-size:58px;line-height:1.2;background:linear-gradient(135deg,#ffae1f,#ff5c72);background-clip:text;-webkit-background-clip:text;color:transparent;animation:reward-pop .7s .15s both}.reward-card p{font-size:13px;color:#8a7c6b}.reward-card button{position:absolute;top:10px;right:10px;border:0;border-radius:50%;width:36px;height:36px;background:#fff4df;color:#93652d;font-size:26px;line-height:1}.reward-card button:focus-visible{outline:3px solid #f4a47c;outline-offset:2px}.reward-particles{position:absolute;inset:0;pointer-events:none}.reward-particles i{position:absolute;left:50%;top:45%;width:9px;height:15px;border-radius:3px;animation:reward-burst 2s var(--delay) ease-out both}@keyframes reward-pop{from{opacity:0;transform:scale(.4) translateY(35px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes reward-star{from{transform:rotate(-12deg) scale(.95)}to{transform:rotate(12deg) scale(1.1)}}@keyframes reward-burst{0%{opacity:0;transform:translate(0,0) scale(0)}15%{opacity:1}100%{opacity:0;transform:translate(var(--x),var(--y)) rotate(var(--spin)) scale(.5)}}@media(prefers-reduced-motion:reduce){.reward-card,.reward-star,.reward-points strong{animation:none}.reward-particles{display:none}}

.check:disabled{cursor:not-allowed;border-color:#cbd0d6;background:#e6e8eb;opacity:.7}
.check:disabled:checked{background:#a5adb7;border-color:#a5adb7}
.task:has(.check:disabled){cursor:default}
.auth-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 4px 18px;font-size:13px;color:#737d89}
.auth-bar form{margin:0}.auth-bar a{color:#93652d}
.auth-bar button,.login-form button{border:0;border-radius:10px;background:#fff0df;color:#93652d;padding:9px 14px;font-weight:700}
.login-form{padding:22px}.login-form label{display:block;margin-bottom:18px;font-size:14px;font-weight:700}
.login-form input{display:block;width:100%;margin-top:8px;border:1px solid #cbd0d6;border-radius:10px;padding:12px;background:#fff}
.login-form button{width:100%;padding:12px}.login-error{color:#b34e35;font-size:14px}
.check:disabled{pointer-events:none}
.task[role="button"]{cursor:pointer}.task[role="button"]:focus-visible{outline:3px solid #f4a47c;outline-offset:-3px}
#login-dialog{width:calc(100% - 32px);max-width:400px;border:1px solid #f4ede3;border-radius:22px;padding:22px;background:#fff8ee;color:#293449}
#login-dialog::backdrop{background:#29344966}#login-dialog .section-head{align-items:center}
#login-dialog>p{font-size:14px;color:#737d89}#login-dialog .login-form{padding:0}
#close-login{border:0;border-radius:10px;background:#fff0df;color:#93652d;width:34px;height:34px;font-size:24px}
