:root{--bg:#f5f7ef;--ink:#172019;--muted:#687067;--line:#d9ded4;--card:#fffef9;--lime:#b7f257;--lime-strong:#7fcf22;--deep:#102017;--soft:#eaf4dd;--warn:#7a5632;--shadow:0 18px 50px rgba(36,48,37,.08)}
*{box-sizing:border-box}
html{background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Hiragino Sans","Yu Gothic UI",Meiryo,sans-serif;-webkit-text-size-adjust:100%}
body{margin:0;min-width:320px;background:var(--bg)}
button,a{font:inherit}
button{touch-action:manipulation}
.app{width:min(100%,780px);margin:0 auto;padding:env(safe-area-inset-top) 18px calc(42px + env(safe-area-inset-bottom));min-height:100dvh}
.topbar{display:flex;align-items:center;justify-content:space-between;min-height:58px;margin-bottom:10px}
.home-link{display:inline-flex;align-items:center;gap:7px;color:var(--ink);text-decoration:none;font-size:14px;font-weight:800;min-height:44px}
.home-link span:first-child{font-size:20px;line-height:1}
.ghost-btn{min-height:44px;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--muted);padding:0 14px;font-weight:700}
.screen{display:none}.screen.active{display:block}
.eyebrow{margin:0 0 8px;color:#57703e;font-size:12px;letter-spacing:.16em;font-weight:900}
h1{margin:0;font-size:clamp(38px,9vw,68px);line-height:1.04;letter-spacing:-.045em;font-weight:950}
h1 span{background:var(--lime);padding:0 .08em;box-decoration-break:clone;-webkit-box-decoration-break:clone}
.lead{margin:18px 0 22px;font-size:18px;line-height:1.7;font-weight:650;color:#344036}
.mini-curve{position:relative;background:var(--deep);border-radius:28px;padding:16px 16px 6px;margin:20px 0 30px;overflow:hidden;box-shadow:var(--shadow)}
.mini-curve svg{width:100%;display:block}.mini-curve path{stroke:var(--lime);stroke-width:8;stroke-linecap:round}.mini-curve circle{fill:var(--card);stroke:var(--lime);stroke-width:5}.mini-curve line{stroke:rgba(255,255,255,.36);stroke-width:2;stroke-dasharray:7 8}
.mini-you,.mini-break{position:absolute;color:#fff;font-size:12px;font-weight:900;letter-spacing:.08em}.mini-you{left:53%;bottom:18px}.mini-break{right:17%;top:18px;color:var(--lime)}
.question{margin:0 0 13px;font-size:22px;letter-spacing:-.02em}
.goal-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.goal-card{min-height:132px;border:1px solid var(--line);border-radius:22px;background:var(--card);padding:18px;text-align:left;color:var(--ink);display:flex;flex-direction:column;justify-content:flex-end;box-shadow:0 8px 24px rgba(36,48,37,.035);transition:transform .14s ease,border-color .14s ease,background .14s ease}
.goal-card:active{transform:scale(.98);background:var(--soft)}
.goal-card.wide{grid-column:1/-1;min-height:112px}
.goal-mark{align-self:flex-start;margin-bottom:auto;padding:6px 9px;border-radius:9px;background:var(--deep);color:var(--lime);font-size:12px;line-height:1;font-weight:950;letter-spacing:.08em}
.goal-card strong{font-size:25px;line-height:1.15}.goal-card small{margin-top:6px;color:var(--muted);font-size:14px;font-weight:650}
.model-note{margin:16px 2px 0;color:var(--muted);font-size:12px;line-height:1.65}
.goal-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin:2px 0 14px}.goal-heading h1{font-size:42px}.streak-pill{flex:0 0 auto;display:grid;grid-template-columns:auto auto auto;align-items:baseline;gap:3px;padding:9px 13px;border-radius:15px;background:var(--deep);color:#fff}.streak-pill span{grid-column:1/-1;color:#cbd4ca;font-size:12px;font-weight:800;letter-spacing:.1em}.streak-pill strong{font-size:24px}.streak-pill small{font-size:12px;color:#dfe5dc}
.hero-progress{background:var(--card);border:1px solid var(--line);border-radius:28px;overflow:hidden;box-shadow:var(--shadow)}
.remaining{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:20px 22px 4px}.remaining>span{color:var(--muted);font-size:13px;font-weight:800}.remaining strong{display:flex;align-items:baseline;gap:5px}.remaining b{font-size:54px;line-height:.9;letter-spacing:-.055em}.remaining small{font-size:15px;color:var(--muted)}
.curve-wrap{position:relative;padding:2px 8px 0}.curve{width:100%;display:block;overflow:visible}.curve-area{fill:url(#curveFill);color:var(--lime-strong)}.curve-line{fill:none;stroke:var(--lime-strong);stroke-width:8;stroke-linecap:round;vector-effect:non-scaling-stroke}.break-line{stroke:#aeb6ac;stroke-width:2;stroke-dasharray:7 8}.break-label{fill:#788177;font-size:13px;font-weight:900;letter-spacing:.06em}.position-halo{fill:rgba(183,242,87,.3)}.position-dot{fill:var(--deep);stroke:var(--lime);stroke-width:5}.you-label{fill:var(--deep);font-size:14px;font-weight:950;letter-spacing:.06em}.phase-chip{position:absolute;left:18px;bottom:15px;border-radius:999px;background:var(--deep);color:#fff;padding:7px 11px;font-size:12px;font-weight:800;box-shadow:0 5px 20px rgba(0,0,0,.1)}
.curve-message{margin:0;padding:0 22px 21px;font-size:14px;line-height:1.65;color:#3f4b41;font-weight:650}
.two-layer{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0}.layer-card{border-radius:20px;background:var(--deep);color:#fff;padding:15px}.layer-card.momentum{background:#e7eddf;color:var(--ink)}.layer-card>span{font-size:12px;font-weight:900;letter-spacing:.08em}.layer-card strong{display:flex;align-items:baseline;gap:4px;margin-top:6px}.layer-card b{font-size:30px}.layer-card small{font-size:12px;opacity:.7}.layer-card p{margin:7px 0 0;font-size:12px;line-height:1.5;opacity:.72}
.absence-note{margin:12px 0;border:1px solid #e5d3bd;border-radius:17px;background:#fff5e9;color:var(--warn);padding:12px 14px;font-size:13px;line-height:1.6;font-weight:700}
.today-panel,.history-panel{margin-top:12px;background:var(--card);border:1px solid var(--line);border-radius:24px;padding:18px;box-shadow:0 10px 30px rgba(36,48,37,.04)}
.section-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:10px;margin-bottom:13px}.section-heading>div>span{display:block;font-size:12px;letter-spacing:.12em;font-weight:900;color:#708060}.section-heading h2{margin:2px 0 0;font-size:25px;letter-spacing:-.03em}.section-heading p{margin:0;color:var(--muted);font-size:12px}.section-heading.compact{align-items:center}.section-heading.compact strong{font-size:13px;color:var(--muted)}
.action-list{display:grid;gap:9px}.action-btn{width:100%;min-height:66px;border:1px solid var(--line);border-radius:17px;background:#fbfcf7;color:var(--ink);padding:12px 13px;display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;text-align:left}.action-btn:active{background:var(--soft);border-color:#b4cd96}.action-copy strong{display:block;font-size:16px;line-height:1.3}.action-copy small{display:block;margin-top:4px;color:var(--muted);font-size:12px;line-height:1.45}.action-points{display:flex;align-items:baseline;gap:2px;border-radius:12px;background:var(--deep);color:var(--lime);padding:9px 10px;min-width:56px;justify-content:center;font-weight:950}.action-points small{font-size:12px;color:#dbe4d7}.no-action{width:100%;min-height:48px;margin-top:8px;border:0;background:transparent;color:#7a8179;font-weight:700;text-decoration:underline;text-underline-offset:3px}.done-note{margin:12px 0 0;border-radius:14px;background:var(--soft);padding:12px 13px;color:#35502c;font-size:13px;line-height:1.55;font-weight:750}
.history-list{display:grid;gap:8px}.history-item{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:10px 0;border-top:1px solid #edf0e9}.history-item:first-child{border-top:0}.history-date{width:42px;height:42px;border-radius:12px;background:#edf2e7;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:900;color:#566253}.history-main strong{display:block;font-size:14px}.history-main small{display:block;margin-top:3px;color:var(--muted);font-size:12px}.history-delta{font-size:14px;font-weight:950;color:#4f7f22}.history-delta.minus{color:#9b6640}.empty-history{margin:3px 0;color:var(--muted);font-size:13px;line-height:1.6}
.bottom-actions{display:grid;grid-template-columns:1fr auto;gap:9px;margin:14px 0 0}.share-btn,.reset-btn{min-height:50px;border-radius:16px;font-weight:850}.share-btn{border:0;background:var(--deep);color:#fff;padding:0 17px}.reset-btn{border:1px solid var(--line);background:transparent;color:var(--muted);padding:0 13px;font-size:12px}.share-status{min-height:18px;margin:8px 2px 0;color:var(--muted);font-size:12px}
.celebration{position:absolute;inset:0;display:grid;place-items:center;background:rgba(15,27,18,.76);padding:22px;z-index:20}.celebration[hidden]{display:none}.celebration-card{width:min(100%,430px);border-radius:28px;background:var(--card);padding:28px;text-align:center;box-shadow:0 28px 80px rgba(0,0,0,.28)}.celebration-card>strong{display:block;font-size:32px;letter-spacing:-.04em}.celebration-card p:not(.eyebrow){font-size:15px;line-height:1.7;color:var(--muted)}.celebration-card button{min-height:48px;width:100%;border:0;border-radius:15px;background:var(--deep);color:#fff;font-weight:900}
.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));transform:translate(-50%,18px);background:var(--deep);color:#fff;border-radius:999px;padding:10px 15px;font-size:12px;font-weight:800;opacity:0;pointer-events:none;transition:.18s ease;z-index:30;white-space:nowrap;max-width:calc(100vw - 32px);overflow:hidden;text-overflow:ellipsis}.toast.show{opacity:1;transform:translate(-50%,0)}
@media (max-width:430px){.app{padding-left:14px;padding-right:14px}.remaining{padding-left:17px;padding-right:17px}.remaining b{font-size:48px}.break-label{font-size:12px}.curve-message{padding-left:17px;padding-right:17px}.today-panel,.history-panel{padding:15px}.bottom-actions{grid-template-columns:1fr}.reset-btn{min-height:46px}.goal-card{min-height:126px;padding:15px}.goal-card strong{font-size:22px}}
@media (prefers-reduced-motion:no-preference){.position-dot,.position-halo{transition:cx .55s cubic-bezier(.2,.75,.2,1),cy .55s cubic-bezier(.2,.75,.2,1)}.remaining b,.layer-card b{transition:transform .18s ease}.action-btn:hover{border-color:#b8c8a7}.goal-card:hover{border-color:#b8c8a7}}
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
