:root{color:#211532;font-synthesis:none;--purple:#7047eb;--purple-dark:#24153f;--white-card:#fffdf7;--green-card:#78ef83;--red-card:#ff746c;--yellow-card:#ffd84d;--ink:#211532;--stamp:#e83e46;--shadow:0 8px 0 #24153f47;background:#7047eb;font-family:Inter,PingFang SC,Microsoft YaHei,system-ui,sans-serif}*{box-sizing:border-box}body{background:var(--purple);min-width:320px;min-height:100dvh;margin:0}button,a{font:inherit}button{color:inherit}:focus-visible{outline-offset:3px;outline:4px solid #fff}#root{min-height:100dvh}.app-shell{width:min(100%,480px);min-height:100dvh;padding:max(20px, env(safe-area-inset-top)) max(20px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(20px, env(safe-area-inset-left));background:var(--purple);grid-template-rows:auto 1fr auto;margin:0 auto;display:grid}.app-header{color:#fff}.app-header h1,.app-header p,.today-heading h2,.today-heading time,.progress-summary p,.route-placeholder h2,.route-placeholder p{margin:0}.app-header h1{letter-spacing:-.06em;font-size:clamp(1.8rem,8vw,2.5rem);font-weight:950}.app-header p{color:#ffffffd1;margin-top:2px;font-weight:700}main{min-width:0;padding:26px 0}.today-page{gap:18px;display:grid}.today-heading{color:#fff}.today-heading time{opacity:.78;margin-bottom:6px;font-size:.9rem;font-weight:800;display:block}.today-heading h2{letter-spacing:-.04em;font-size:clamp(1.65rem,7vw,2.2rem);line-height:1.08}.progress-summary{border:3px solid var(--ink);background:var(--white-card);box-shadow:var(--shadow);border-radius:24px;gap:12px;padding:16px;display:grid}.progress-summary__copy{justify-content:space-between;align-items:center;gap:12px;display:flex}.progress-summary__copy strong{font-size:1.05rem}.progress-summary__copy span{font-size:.85rem;font-weight:800}.progress-track{border:3px solid var(--ink);background:#e5dcff;border-radius:999px;height:15px;overflow:hidden}.progress-track span{border-radius:inherit;background:var(--green-card);height:100%;transition:width .18s;display:block}.work-status{color:#fff;background:var(--purple-dark);text-align:center;border-radius:15px;padding:13px 16px;font-weight:900}.work-status.is-complete{color:var(--ink);background:var(--yellow-card)}.task-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.task-card{border:3px solid var(--ink);background:var(--white-card);min-height:154px;box-shadow:var(--shadow);text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:26px;grid-template-rows:auto 1fr;grid-template-columns:1fr auto;padding:16px;transition:transform .16s,box-shadow .16s,filter .16s;display:grid;position:relative;overflow:hidden}.task-card:hover{transform:translateY(-2px)rotate(-.5deg)}.task-card:active{transform:translateY(5px);box-shadow:0 3px #24153f47}.task-card:focus-visible{outline-color:var(--yellow-card)}.task-card--green{background:var(--green-card)}.task-card--red{background:var(--red-card)}.task-card--yellow{background:var(--yellow-card)}.task-card.is-complete{filter:saturate(.78)}.task-card__icon{font-size:2.1rem;line-height:1}.task-card__copy{grid-column:1/-1;align-self:end;gap:4px;display:grid}.task-card__label{font-size:clamp(1.05rem,4.8vw,1.3rem);font-weight:950;line-height:1.05}.task-card__status{opacity:.76;font-size:.85rem;font-weight:750}.task-card__check{border:3px solid var(--ink);opacity:0;background:#fff;border-radius:50%;place-items:center;width:36px;height:36px;font-size:1.25rem;font-weight:950;transition:opacity .16s,transform .18s cubic-bezier(.2,.9,.3,1.35);display:grid;transform:scale(.5)rotate(-18deg)}.task-card.is-complete .task-card__check{opacity:1;transform:scale(1)rotate(0)}.transient-notice-stack{z-index:30;right:max(16px, env(safe-area-inset-right));bottom:calc(88px + env(safe-area-inset-bottom));left:max(16px, env(safe-area-inset-left));gap:10px;width:min(100% - 32px,440px);margin:0 auto;display:grid;position:fixed}.undo-toast{color:#fff;background:var(--purple-dark);min-height:58px;box-shadow:var(--shadow);border:3px solid #fff;border-radius:18px;justify-content:space-between;align-items:center;padding:7px 8px 7px 18px;font-weight:800;animation:.18s ease-out toast-in;display:flex}.undo-toast button,.storage-warning button,.reload-prompt button{background:var(--yellow-card);cursor:pointer;border:0;border-radius:12px;min-width:64px;min-height:44px;font-weight:950}.reload-prompt{color:#fff;background:var(--purple-dark);min-height:58px;box-shadow:var(--shadow);border:3px solid #fff;border-radius:18px;justify-content:space-between;align-items:center;gap:12px;padding:8px 10px 8px 18px;font-size:.9rem;font-weight:800;display:flex}.reload-prompt__actions{flex:none;gap:6px;display:flex}.reload-prompt__actions button:last-child{background:var(--white-card)}.storage-warning{border:3px solid var(--ink);background:var(--yellow-card);border-radius:18px;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;font-size:.9rem;font-weight:800;display:flex;box-shadow:0 5px #24153f47}.storage-warning a{min-height:44px;color:var(--ink);background:var(--white-card);white-space:nowrap;border-radius:12px;place-items:center;padding:0 10px;font-weight:950;text-decoration:none;display:grid}.page-heading{color:#fff}.page-heading p,.page-heading h2,.history-calendar-card h3,.history-detail p,.history-detail h3,.history-detail ul,.settings-card h3,.settings-card p,.app-version,.confirm-dialog h3,.confirm-dialog p{margin:0}.page-heading p{opacity:.8;margin-bottom:4px;font-size:.85rem;font-weight:800}.page-heading h2{letter-spacing:-.04em;font-size:clamp(1.65rem,7vw,2.2rem)}.history-page,.settings-page{gap:18px;display:grid}.history-calendar-card,.history-detail,.settings-card{border:3px solid var(--ink);background:var(--white-card);box-shadow:var(--shadow);border-radius:24px}.history-calendar-card{min-width:0;padding:14px}.month-calendar__controls{justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.month-calendar__controls h3{font-size:1.1rem}.month-calendar__controls button,.settings-action,.confirm-dialog button{border:3px solid var(--ink);background:var(--yellow-card);cursor:pointer;border-radius:12px;min-height:44px;font-weight:950}.month-calendar__controls button{width:44px;font-size:1.6rem;line-height:1}.month-calendar__scroll{overscroll-behavior-inline:contain;max-width:100%;padding:4px;overflow-x:auto}.month-calendar__scroll:focus-visible{outline-color:var(--purple-dark)}.month-calendar{grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;min-width:344px;display:grid}.month-calendar__weekday{color:#211532ad;text-align:center;font-size:.75rem;font-weight:900}.month-calendar__day{border:2px solid var(--ink);min-height:64px;color:var(--ink);text-align:left;cursor:pointer;background:#fff;border-radius:10px;gap:3px;padding:5px;display:grid}.month-calendar__day:disabled{cursor:not-allowed;opacity:.48}.month-calendar__day--outside{color:#2115327a;background:#eee9fa}.month-calendar__day.is-selected{border-color:var(--purple-dark);outline:3px solid var(--yellow-card);outline-offset:1px}.month-calendar__date{font-size:.78rem;font-weight:950}.month-calendar__bars{grid-template-columns:repeat(4,1fr);gap:2px;display:grid}.month-calendar__bar{opacity:.2;border-radius:99px;height:5px}.month-calendar__bar.is-complete{opacity:1}.month-calendar__bar--white{background:#7d6c9b}.month-calendar__bar--green{background:#29a83d}.month-calendar__bar--red{background:#db3d37}.month-calendar__bar--yellow{background:#d99d00}.month-calendar__count{font-size:.67rem;font-weight:850}.history-detail,.settings-card{padding:18px}.history-detail{grid-template-columns:1fr auto;gap:14px;display:grid}.history-detail p,.settings-card>p{color:#211532b8;font-size:.85rem;font-weight:750}.history-detail h3{margin-top:2px;font-size:1.3rem}.history-detail>strong{background:var(--purple-dark);color:#fff;border-radius:10px;align-self:end;padding:6px 9px;font-size:.82rem}.history-detail ul{grid-column:1/-1;gap:8px;padding:0;list-style:none;display:grid}.history-detail__task{border-left:7px solid var(--purple);background:#f1edfc;border-radius:10px;justify-content:space-between;gap:12px;padding:9px 10px;font-weight:800;display:flex}.history-detail__task--green{border-left-color:#29a83d}.history-detail__task--red{border-left-color:#db3d37}.history-detail__task--yellow{border-left-color:#d99d00}.settings-card{gap:12px;display:grid}.settings-card h3{font-size:1.15rem}.settings-action{width:fit-content;padding:0 14px}.settings-card--danger{background:#fff1ef}.settings-action--danger,.confirm-dialog__actions button:last-child{background:var(--red-card)}.install-help{gap:8px;display:grid}.install-help p{margin:0;font-size:.9rem;font-weight:700;line-height:1.45}.app-version{color:#ffffffc7;text-align:center;font-size:.82rem;font-weight:800}.confirm-backdrop{z-index:55;background:#24153fc7;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.confirm-dialog{border:4px solid var(--ink);background:var(--white-card);border-radius:24px;gap:16px;width:min(100%,380px);padding:26px;display:grid;box-shadow:0 12px #0000004d}.confirm-dialog p{font-weight:700;line-height:1.55}.confirm-dialog__actions{justify-content:flex-end;gap:10px;display:flex}.confirm-dialog button{padding:0 12px}.celebration-backdrop{z-index:50;background:#24153fc7;place-items:center;padding:24px;animation:.18s ease-out backdrop-in;display:grid;position:fixed;inset:0}.celebration-panel{border:4px solid var(--ink);background:var(--white-card);text-align:center;border-radius:34px;width:min(100%,380px);padding:38px 28px 32px;animation:.42s cubic-bezier(.2,.9,.3,1.25) panel-in;position:relative;box-shadow:0 12px #0000004d}.celebration-panel h2{margin:24px 0 8px;font-size:1.65rem}.celebration-panel p{margin:0;font-weight:700;line-height:1.6}.celebration-close{cursor:pointer;background:0 0;border:0;border-radius:50%;place-items:center;width:44px;height:44px;font-size:1.8rem;font-weight:900;display:grid;position:absolute;top:10px;right:10px}.celebration-close:focus-visible{outline-color:var(--purple)}.completion-stamp{border:8px double var(--stamp);width:164px;height:164px;color:var(--stamp);letter-spacing:.12em;border-radius:50%;place-items:center;margin:0 auto;font-size:2rem;font-weight:950;display:grid;transform:rotate(-8deg)}.primary-nav{bottom:max(0px, env(safe-area-inset-bottom));z-index:10;border:3px solid var(--ink);background:var(--white-card);box-shadow:var(--shadow);border-radius:20px;justify-content:space-between;gap:8px;padding:8px;display:flex;position:sticky}.primary-nav a{min-height:44px;color:var(--ink);border-radius:12px;flex:1;place-items:center;font-weight:900;text-decoration:none;display:grid}.primary-nav a.active{color:#fff;background:var(--purple-dark)}.primary-nav a:focus-visible,.month-calendar__controls button:focus-visible,.month-calendar__day:focus-visible,.settings-action:focus-visible,.confirm-dialog button:focus-visible{outline-color:var(--purple-dark)}.primary-nav a.active:focus-visible{outline-color:var(--yellow-card)}.route-placeholder{border:3px solid var(--ink);background:var(--white-card);min-height:260px;box-shadow:var(--shadow);border-radius:26px;padding:24px}.route-placeholder p{margin-top:8px}@keyframes toast-in{0%{opacity:0;transform:translateY(14px)}}@keyframes backdrop-in{0%{opacity:0}}@keyframes panel-in{0%{opacity:0;transform:scale(.76)rotate(7deg)}}@media (width<=359px){.app-shell{padding-right:max(14px, env(safe-area-inset-right));padding-left:max(14px, env(safe-area-inset-left))}.task-grid{gap:10px}.task-card{min-height:142px;padding:13px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.task-card,.task-card:hover,.task-card:active,.task-card__check,.task-card.is-complete .task-card__check,.completion-stamp,.celebration-panel,.undo-toast{transform:none}.celebration-panel,.undo-toast{animation-name:backdrop-in}}
