:root{--bg-deep: #0b1026;--bg-mid: #141a3a;--bg-card: #1d2550;--bg-card-2: #232c5e;--surface: #2a356b;--text-primary: #f5f7ff;--text-secondary: #c3cae6;--text-muted: #8e98c4;--accent: #4ea1ff;--accent-strong: #2f7fe0;--warm: #ffb547;--good: #34d399;--warn: #fbbf24;--danger: #f87171;--purple: #a78bfa;--tap-min: 56px;--tap-stop: 88px;--radius: 20px;--radius-lg: 28px;--radius-pill: 999px;--shadow-soft: 0 10px 30px rgba(0, 0, 0, .35);--shadow-glow: 0 0 0 4px rgba(78, 161, 255, .25);--font-base: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--safe-right: env(safe-area-inset-right, 0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{margin:0;padding:0}html{min-height:100%;-webkit-text-size-adjust:100%;text-size-adjust:100%;background:var(--bg-deep)}body{min-height:100vh;font-family:var(--font-base);color:var(--text-primary);background:radial-gradient(120% 80% at 50% -10%,var(--bg-mid) 0%,var(--bg-deep) 60%);font-size:18px;line-height:1.5;-webkit-user-select:none;user-select:none;overflow-x:hidden;overscroll-behavior-y:none}#root{display:flex;flex-direction:column;min-height:100vh}@supports (min-height: 100dvh){body,#root{min-height:100dvh}}h1,h2,h3,h4{margin:0;font-weight:800;line-height:1.2}p{margin:0;overflow-wrap:anywhere}a{color:var(--accent)}button{font-family:inherit;font-size:inherit;cursor:pointer;touch-action:manipulation}input,select,textarea{font-family:inherit}img,svg,canvas,video{max-width:100%}pre{max-width:100%;overflow:auto}.app-shell{width:100%;max-width:720px;margin:0 auto;min-height:100vh;display:flex;flex-direction:column;padding-right:max(16px,var(--safe-right));padding-left:max(16px,var(--safe-left))}@supports (min-height: 100dvh){.app-shell{min-height:100dvh}}.page{flex:1;position:relative;width:100%;min-width:0;display:flex;flex-direction:column;gap:clamp(14px,2.4vh,20px);padding-top:max(12px,var(--safe-top));padding-bottom:max(24px,calc(var(--safe-bottom) + 16px))}.center-stack{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:18px}.page.center-stack,.app-shell>.center-stack{flex:1}.page-corner-action{position:absolute;top:8px;right:0;z-index:2}.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:var(--tap-min);padding:16px 28px;border:none;border-radius:var(--radius);font-size:20px;font-weight:800;color:#fff;background:var(--accent);box-shadow:var(--shadow-soft);transition:transform .08s ease,box-shadow .15s ease,filter .15s ease;-webkit-user-select:none;user-select:none}.btn:active{transform:scale(.97)}.btn:focus-visible{outline:none;box-shadow:var(--shadow-soft),var(--shadow-glow)}.btn-primary{background:linear-gradient(180deg,#5aaeff 0%,var(--accent-strong) 100%)}.btn-warm{background:linear-gradient(180deg,#ffcb6e 0%,var(--warm) 100%);color:#3a2400}.btn-good{background:linear-gradient(180deg,#5be3ad,#1fb988)}.btn-ghost{background:var(--surface);color:var(--text-primary);box-shadow:none;border:2px solid rgba(255,255,255,.08)}.btn-danger{background:linear-gradient(180deg,#ff8d8d 0%,var(--danger) 100%)}.btn-block{width:100%}.btn-lg{min-height:68px;font-size:22px;border-radius:var(--radius-lg)}.btn-xl{min-height:80px;font-size:24px;border-radius:var(--radius-lg)}.btn:disabled{filter:grayscale(.4) brightness(.7);opacity:.7;cursor:not-allowed}.stop-btn{min-width:var(--tap-stop);min-height:var(--tap-stop);border-radius:var(--radius-pill);background:linear-gradient(180deg,#ff9d9d 0%,var(--danger) 100%);color:#fff;font-size:22px;font-weight:900;letter-spacing:.06em;border:4px solid #fff3f3;box-shadow:0 0 0 6px #f8717140,var(--shadow-soft);display:inline-flex;align-items:center;justify-content:center;gap:8px}.stop-btn--lg{min-width:112px;min-height:112px;padding:0 24px;font-size:26px}.stop-btn .stop-square{width:22px;height:22px;background:#fff;border-radius:4px;display:inline-block}.card{min-width:0;background:var(--bg-card);border-radius:var(--radius-lg);padding:20px;box-shadow:var(--shadow-soft);border:1px solid rgba(255,255,255,.05)}.card-soft{min-width:0;background:#ffffff0a;border-radius:var(--radius);padding:16px}.chip{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:var(--radius-pill);background:var(--surface);font-size:16px;font-weight:700}.chip .dot{width:14px;height:14px;border-radius:50%;background:var(--text-muted);box-shadow:inset 0 0 0 2px #00000040}.chip.ok .dot{background:var(--good)}.chip.warn .dot{background:var(--warn)}.chip.bad .dot{background:var(--danger)}.progress{height:16px;border-radius:var(--radius-pill);background:var(--surface);overflow:hidden;border:1px solid rgba(255,255,255,.08)}.progress>span{display:block;height:100%;background:linear-gradient(90deg,var(--good),var(--accent));transition:width .3s ease}.input,.select{width:100%;min-height:var(--tap-min);padding:14px 18px;border-radius:var(--radius);border:2px solid rgba(255,255,255,.12);background:var(--bg-mid);color:var(--text-primary);font-size:18px}.input:focus,.select:focus{outline:none;border-color:var(--accent);box-shadow:var(--shadow-glow)}.topbar{display:grid;grid-template-columns:52px minmax(0,1fr) 52px;align-items:center;min-height:56px;padding:4px 0;gap:8px}.topbar__title{min-width:0;font-size:clamp(19px,5vw,22px);font-weight:800;text-align:center;overflow-wrap:anywhere}.topbar__slot{min-width:0;display:flex;align-items:center}.topbar__slot--start{justify-content:flex-start}.topbar__slot--end{justify-content:flex-end}.topbar__back{width:48px;min-width:48px;min-height:48px;padding:0;border-radius:16px;font-size:22px}.parent-entry{width:44px;height:44px;border-radius:50%;background:transparent;border:none;display:inline-flex;align-items:center;justify-content:center;color:var(--text-muted)}.parent-entry .glyph{width:18px;height:18px;border-radius:4px;border:2px solid currentColor;opacity:.25}.overlay{position:fixed;inset:0;background:#070a19b3;backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;width:100%;min-height:100vh;padding-top:max(12px,var(--safe-top));padding-right:max(12px,var(--safe-right));padding-bottom:max(12px,var(--safe-bottom));padding-left:max(12px,var(--safe-left));overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;z-index:100}@supports (height: 100dvh){.overlay{min-height:100dvh;height:100dvh}}.dialog{width:100%;max-width:460px;max-height:calc(100vh - var(--safe-top) - var(--safe-bottom) - 24px);background:var(--bg-card);border-radius:var(--radius-lg);padding:24px;box-shadow:var(--shadow-soft);border:1px solid rgba(255,255,255,.08);overflow-y:auto;overscroll-behavior:contain}@supports (height: 100dvh){.dialog{max-height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - 24px)}}.dialog__content{display:flex;align-items:center;gap:16px;min-width:0}.dialog__copy{display:flex;min-width:0;flex:1;flex-direction:column;gap:6px}.dialog__message{font-size:19px;line-height:1.55}.dialog__actions{display:flex;align-items:stretch;gap:12px;margin-top:20px}.dialog__actions .btn{flex:1;min-width:0}.muted{color:var(--text-muted)}.secondary{color:var(--text-secondary)}.text-lg{font-size:22px}.text-xl{font-size:28px}.text-center{text-align:center}.row{display:flex;gap:12px;align-items:center}.row>*{min-width:0}.row--wrap{flex-wrap:wrap}.col{display:flex;flex-direction:column;gap:12px}.spacer{flex:1}.full{width:100%}.collection-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.date-nav,.date-nav__actions{display:flex;align-items:center;gap:8px}.date-nav{justify-content:space-between}.training-page{gap:10px}.training-game{min-height:clamp(240px,46dvh,420px)}.mt-auto{margin-top:auto}@media (prefers-reduced-motion: reduce){*{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}html[data-reduce-motion=true] *{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}@media (max-width: 480px){:root{--tap-min: 54px;--tap-stop: 76px;--radius: 16px;--radius-lg: 22px}body{font-size:17px}.app-shell{padding-right:max(12px,var(--safe-right));padding-left:max(12px,var(--safe-left))}.page{gap:14px;padding-top:max(8px,var(--safe-top));padding-bottom:max(18px,calc(var(--safe-bottom) + 12px))}.center-stack{gap:14px}.card{padding:16px}.card-soft{padding:14px}.btn{font-size:18px;padding:12px 18px}.btn-lg{min-height:62px;font-size:20px}.btn-xl{min-height:70px;font-size:22px}.text-lg{font-size:19px}.text-xl{font-size:25px}.topbar{grid-template-columns:48px minmax(0,1fr) 48px;min-height:52px;gap:4px}.dialog{padding:18px;border-radius:22px}.dialog__content{flex-direction:column;gap:12px;text-align:center}.dialog__copy{align-items:center}.dialog__message{font-size:17px;line-height:1.5}.dialog__actions{flex-direction:column;margin-top:16px}.dialog .bobo-face{width:56px!important;height:56px!important}.collection-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.date-nav{align-items:stretch;flex-direction:column}.date-nav__actions .btn{flex:1;min-height:48px!important;padding:0 10px!important;font-size:15px}.stop-btn--lg{min-width:96px;min-height:96px;padding:0 20px;font-size:23px}}@media (max-width: 340px){.app-shell{padding-right:max(8px,var(--safe-right));padding-left:max(8px,var(--safe-left))}.topbar__title{font-size:18px}.btn-xl{font-size:20px}}@media (orientation: landscape) and (max-height: 480px){.app-shell{max-width:100%}.page{padding-top:max(6px,var(--safe-top));padding-bottom:max(8px,var(--safe-bottom))}.training-game{min-height:180px}.dialog__content{flex-direction:row;text-align:left}.dialog__copy{align-items:flex-start}}.selectable{-webkit-user-select:text;user-select:text}.bobo-spinner{width:56px;height:56px;border-radius:50%;border:6px solid rgba(255,255,255,.15);border-top-color:var(--accent);animation:bobo-spin 1.1s linear infinite}@keyframes bobo-spin{to{transform:rotate(360deg)}}.float-slow{animation:floaty 4s ease-in-out infinite}@keyframes floaty{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
