:root{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;color:#191f28;background:#f2f4f6;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{min-width:320px;background:#f2f4f6}body{min-width:320px;min-height:100vh;margin:0}button,input{font:inherit}button{touch-action:manipulation}#root{width:100%;min-height:100vh;box-sizing:border-box}.app{width:100%;max-width:480px;min-height:100vh;margin:0 auto;padding:calc(22px + env(safe-area-inset-top)) 20px calc(28px + env(safe-area-inset-bottom));box-sizing:border-box;color:#191f28;background:linear-gradient(180deg,#f7f9fc,#fff 240px),#fff}.hero-section{padding:14px 0 18px}.eyebrow{margin:0 0 12px;color:#3182f6;font-size:14px;font-weight:700}.hero-section h1{margin:0;color:#191f28;font-size:30px;font-weight:800;line-height:1.24;letter-spacing:0}.hero-description{max-width:360px;margin:12px 0 0;color:#4e5968;font-size:16px;font-weight:500;line-height:1.55}.mode-tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;border:1px solid #e5e8eb;border-radius:12px;background:#f2f4f6}.mode-tab{min-height:42px;border:0;border-radius:9px;color:#6b7684;background:transparent;font-size:15px;font-weight:700;cursor:pointer}.mode-tab.active{color:#191f28;background:#fff;box-shadow:0 3px 9px #191f2814}.calculator-panel,.goal-panel{padding-top:18px}.form-grid{display:grid;gap:14px}.field{display:flex;flex-direction:column;gap:9px;width:100%}.field span,.range-field span{color:#4e5968;font-size:14px;font-weight:700}.field input[type=date],.field input[type=text]{width:100%;min-height:54px;padding:0 16px;border:1px solid #d1d6db;border-radius:12px;box-sizing:border-box;color:#191f28;background:#fff;font-size:17px;font-weight:700;outline:none}.field input:focus{border-color:#3182f6;box-shadow:0 0 0 3px #3182f629}.range-field{padding:16px;border:1px solid #e5e8eb;border-radius:16px;background:#fff;box-shadow:0 8px 22px #191f280d}.range-field strong{color:#191f28;font-size:28px;font-weight:800;line-height:1}.range-field input[type=range]{width:100%;accent-color:#3182f6}.range-field small{color:#8b95a1;font-size:13px;font-weight:600;line-height:1.45}.empty-result{display:grid;grid-template-columns:76px 1fr;gap:16px;align-items:center;margin-top:18px;padding:18px;border:1px solid #e5e8eb;border-radius:18px;background:#fff}.empty-result h2,.action-band h2,.week-section h2,.goal-panel h2{margin:0;color:#191f28;font-size:19px;font-weight:800;line-height:1.35}.empty-result p,.action-band p,.section-heading p,.time-reminder p,.goal-empty p{margin:6px 0 0;color:#6b7684;font-size:14px;font-weight:600;line-height:1.45}.empty-visual{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;width:76px;height:76px;padding:10px;border-radius:20px;box-sizing:border-box;background:#eef6ff}.empty-visual span{border-radius:8px;background:#3182f6}.empty-visual span:nth-child(2){background:#64c59b}.empty-visual span:nth-child(3){background:#ff8a65}.empty-visual span:nth-child(4){background:#ffd166}.result-hero{margin-top:18px;padding:22px;border-radius:20px;color:#fff;background:#1b64da;box-shadow:0 12px 28px #1b64da47}.result-label{margin:0 0 2px;color:#ffffffc2;font-size:15px;font-weight:700}.result-hero strong{display:block;color:#fff;font-size:48px;font-weight:900;line-height:1.06;word-break:keep-all}.result-hero>p:last-of-type{margin:8px 0 0;color:#ffffffe6;font-size:17px;font-weight:700}.progress-block{margin-top:22px}.progress-copy{display:flex;justify-content:space-between;gap:12px;margin-bottom:8px}.progress-copy span,.progress-copy strong{color:#ffffffdb;font-size:14px;font-weight:800}.progress-track{height:10px;overflow:hidden;border-radius:999px;background:#ffffff3d}.progress-track span{display:block;height:100%;border-radius:inherit;background:#fff}.metric-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}.metric-card{min-height:100px;padding:15px;border:1px solid #e5e8eb;border-radius:16px;box-sizing:border-box;background:#fff}.metric-card span{display:block;color:#8b95a1;font-size:13px;font-weight:800}.metric-card strong{display:block;margin-top:10px;color:#191f28;font-size:18px;font-weight:900;line-height:1.3;word-break:keep-all}.week-section,.action-band,.goal-list,.time-reminder{margin-top:18px}.week-section{padding:18px 0 6px}.section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.section-heading span{flex:0 0 auto;padding:7px 10px;border-radius:999px;color:#1b64da;background:#eaf3ff;font-size:13px;font-weight:900}.week-grid{display:grid;grid-template-columns:repeat(52,minmax(0,1fr));gap:2px;margin-top:14px;padding:12px;border:1px solid #e5e8eb;border-radius:16px;background:#fff}.week-cell{aspect-ratio:1;min-width:0;border-radius:2px;background:#edf0f3}.week-cell.past{background:#4e5968}.week-cell.current{outline:2px solid #ff8a65;outline-offset:1px;background:#3182f6}.action-band{padding:18px;border-radius:18px;background:#f5f8ff}.action-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px}.primary-button,.secondary-button{min-height:52px;border:0;border-radius:13px;padding:0 14px;font-size:16px;font-weight:900;cursor:pointer}.primary-button{color:#fff;background:#3182f6}.secondary-button{color:#1b64da;background:#eaf3ff}.primary-button:active,.secondary-button:active,.mode-tab:active,.category-chip:active,.delete-button:active,.check-button:active{transform:scale(.98)}.primary-button.full{width:100%;margin-top:14px}.time-reminder{padding:18px;border-radius:18px;color:#191f28;background:#eafbf4}.time-reminder.muted{background:#f2f4f6}.time-reminder span{color:#4e5968;font-size:13px;font-weight:900}.time-reminder strong{display:block;margin-top:8px;color:#191f28;font-size:26px;font-weight:900}.goal-panel>.field{margin-top:16px}.category-group{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.category-chip{min-height:38px;padding:0 14px;border:1px solid #d1d6db;border-radius:999px;color:#4e5968;background:#fff;font-size:14px;font-weight:800;cursor:pointer}.category-chip.selected{border-color:#3182f6;color:#1b64da;background:#eaf3ff}.goal-list{display:grid;gap:10px}.goal-empty{padding:18px;border:1px solid #e5e8eb;border-radius:16px;background:#fff}.goal-empty strong{color:#191f28;font-size:16px;font-weight:900}.goal-item{display:grid;grid-template-columns:34px 1fr auto;gap:12px;align-items:center;min-height:74px;padding:14px;border:1px solid #e5e8eb;border-radius:16px;box-sizing:border-box;background:#fff}.goal-item.completed .goal-copy strong{color:#8b95a1;text-decoration:line-through}.check-button{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border:1px solid #d1d6db;border-radius:999px;background:#fff;cursor:pointer}.check-button span{display:block;width:14px;height:14px;border-radius:inherit;background:transparent}.goal-item.completed .check-button{border-color:#3182f6;background:#3182f6}.goal-item.completed .check-button span{background:#fff}.goal-copy{min-width:0}.goal-copy span{display:block;color:#3182f6;font-size:12px;font-weight:900}.goal-copy strong{display:block;margin-top:4px;overflow-wrap:anywhere;color:#191f28;font-size:16px;font-weight:800;line-height:1.35}.delete-button{min-height:34px;border:0;border-radius:10px;padding:0 10px;color:#6b7684;background:#f2f4f6;font-size:13px;font-weight:800;cursor:pointer}.notice{margin:24px 0 0;color:#8b95a1;font-size:12px;font-weight:600;line-height:1.5}.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom));z-index:10;width:min(320px,calc(100vw - 40px));min-height:46px;padding:13px 16px;border-radius:14px;box-sizing:border-box;color:#fff;background:#191f28eb;box-shadow:0 10px 28px #191f282e;font-size:14px;font-weight:800;text-align:center;transform:translate(-50%)}@media (min-width: 481px){#root{background:#fff;box-shadow:0 0 0 1px #191f280d}}@media (max-width: 360px){.app{padding-right:16px;padding-left:16px}.hero-section h1{font-size:27px}.result-hero strong{font-size:42px}.metric-grid,.action-row{grid-template-columns:1fr}.week-grid{grid-template-columns:repeat(39,minmax(0,1fr))}}
