:root{color:#2d2a24;background:#f6f3ec;font-family:ui-rounded,Hiragino Maru Gothic ProN,Hiragino Sans,Yu Gothic,system-ui,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--bg: #f6f3ec;--surface: #fffdf8;--surface-strong: #ffffff;--ink: #2d2a24;--muted: #746f64;--line: #e2ded4;--accent: #e36f5d;--accent-strong: #c95747;--mint: #75b8a3;--gold: #f7c96b;--blue: #6a9ecf;--shadow: none;--page-bg: #fff2a8}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:var(--page-bg);font-weight:500}button,input,textarea{font:inherit}button{-webkit-tap-highlight-color:transparent}.app-shell{width:min(100%,720px);min-height:100vh;margin:0 auto;padding:calc(env(safe-area-inset-top) + 14px) 16px 32px}h1,h2,h3,h4,p{margin-top:0}h1{margin-bottom:0;font-size:clamp(1.72rem,7.4vw,2.55rem);font-weight:950;line-height:1.08;letter-spacing:.02em}h2{margin-bottom:0;font-size:1.55rem;font-weight:950;line-height:1.18}h3{margin-bottom:0;font-size:1.26rem;font-weight:950;line-height:1.16}.mission-controls,.form-actions{display:flex;align-items:center;gap:8px}.icon-button{display:inline-grid;width:48px;height:48px;place-items:center;border:1px solid var(--line);border-radius:50%;background:var(--surface-strong);color:var(--ink);cursor:pointer}.icon-button:focus-visible,.settings-button:focus-visible,.week-arrow:focus-visible,.primary-button:focus-visible,.secondary-button:focus-visible,.day-cell:focus-visible,.stamp-button:focus-visible,.edit-icon-button:focus-visible,.delete-mission-button:focus-visible,.color-grid button:focus-visible,.custom-color-field input:focus-visible,.repeat-options button:focus-visible,.weekday-picker button:focus-visible,.emoji-grid button:focus-visible,.tabs button:focus-visible{outline:3px solid rgba(106,158,207,.55);outline-offset:2px}.week-panel,.stamp-strip,.mission-panel{border:1px solid var(--line);border-radius:22px;background:var(--surface)}.week-panel{padding:16px 12px 18px}.mission-head,.strip-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.week-header{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;gap:8px;align-items:center;margin-bottom:18px}.week-header h1{font-family:Tsukushi A Round Gothic,Hiragino Maru Gothic ProN,Arial Rounded MT Bold,ui-rounded,system-ui,sans-serif;text-align:center;font-weight:900;-webkit-text-stroke:.018em currentColor;paint-order:stroke fill}.week-header-spacer{width:44px;height:44px}.settings-button{display:inline-grid;width:44px;height:44px;place-items:center;border:0;border-radius:50%;background:transparent;color:var(--ink);cursor:pointer;font-size:1.55rem;line-height:1}.week-arrow{display:inline-grid;place-items:center;border:0;background:transparent;color:var(--ink);cursor:pointer}.week-calendar-row{display:grid;grid-template-columns:28px minmax(0,1fr) 28px;gap:4px;align-items:center}.week-arrow{width:28px;height:72px;color:#8b8172;font-size:2.1rem;font-weight:600}.week-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.day-cell{display:grid;min-height:92px;padding:5px 2px 6px;border:1px solid transparent;border-radius:999px;background:transparent;color:var(--ink);cursor:pointer;justify-items:center;align-content:start}.day-cell.is-today{color:#146ac6}.day-cell.is-selected{color:#fff;background:transparent}.weekday,.day-number{display:block}.weekday{color:var(--muted);font-size:.92rem;font-weight:800}.day-cell.is-selected .weekday{color:#2d6fb6}.day-number{display:grid;width:44px;height:44px;place-items:center;margin:4px 0 3px;border-radius:50%;font-size:1.55rem;font-weight:900}.day-cell.is-selected .day-number{background:#2f8df2;color:#fff}.stamp-strip{margin-top:14px;padding:16px}.strip-head{margin-bottom:10px}.earned-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center}.earned-count{display:inline-grid;min-width:64px;min-height:58px;place-items:center;border:2px solid rgba(227,111,93,.22);border-radius:18px;background:#fff5ef;color:var(--accent-strong);font-size:1.48rem;line-height:1;font-weight:900}.earned-stamps{display:grid;grid-template-columns:repeat(5,minmax(0,58px));min-height:58px;gap:8px;align-items:center}.earned-stamp,.earned-stamp-slot{display:inline-grid;aspect-ratio:1;min-width:0;place-items:center;border-radius:50%}.earned-stamp{border:2px solid rgba(247,201,107,.55);background:#fff6d9}.earned-stamp-slot{border:1px dashed #d6d1c7;background:radial-gradient(circle at 50% 45%,rgba(117,184,163,.1),transparent 62%),#f3f1eb}.earned-stamp .stamp-emoji{font-size:2rem}.empty-card p{margin-bottom:0;color:var(--muted);font-size:1rem;font-weight:800}.mission-panel{margin-top:14px;padding:16px}.mission-head{margin-bottom:12px}.primary-button,.secondary-button,.delete-mission-button{min-height:44px;border:0;border-radius:999px;cursor:pointer;font-weight:900}.primary-button{padding:0 20px;background:var(--accent);color:#fff}.primary-button:disabled{cursor:not-allowed;opacity:.5}.secondary-button{padding:0 18px;background:#efebe2;color:var(--ink)}.mission-list{display:grid;gap:10px}.mission-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;min-height:88px;padding:14px;border:1px solid var(--line);border-radius:20px;background:var(--surface-strong)}.mission-card.is-complete{border-color:#75b8a3a6;background:#f0faf5}.mission-title-row{display:flex;min-width:0;align-items:baseline;gap:6px}.mission-copy h4{margin-bottom:5px;font-size:1.12rem;font-weight:900;line-height:1.25}.edit-icon-button{display:inline-grid;width:28px;height:28px;place-items:center;flex:0 0 auto;border:0;border-radius:8px;background:transparent;color:var(--blue);cursor:pointer;font-size:1rem;font-weight:900;line-height:1}.mission-copy p{margin-bottom:0;color:var(--muted);line-height:1.45}.repeat-badge{display:inline-flex;width:fit-content;min-height:28px;align-items:center;margin-top:10px;padding:0 10px;border-radius:999px;background:#eef8f4;color:#285d50;font-size:.82rem;font-weight:800}.mission-controls{justify-content:flex-end}.stamp-button,.stamp-choice{display:inline-grid;width:64px;height:64px;flex:0 0 64px;place-items:center;border:2px dashed #d4cfc3;border-radius:50%;background:#f4f2ec;cursor:pointer}.stamp-button.is-filled,.stamp-choice{border-style:solid;border-color:var(--gold);background:#fff7dc}.stamp-placeholder{color:#b4ada0;font-size:2rem;font-weight:500}.stamp-emoji{display:inline-block;font-size:1.8rem;line-height:1}.stamp-image{display:block;width:38px;height:38px;object-fit:cover;border-radius:50%}.empty-card{display:grid;gap:12px;justify-items:start;padding:18px;border-radius:18px;background:#f7f5ef}.add-mission-button{width:100%;min-height:56px;margin-top:14px;border-radius:18px;font-size:1.08rem}.modal-backdrop{position:fixed;z-index:20;inset:0;display:grid;place-items:end center;padding:18px;background:#2b272047}.stamp-picker-backdrop{z-index:40}.modal{width:min(100%,520px);max-height:min(86vh,680px);overflow:auto;border:1px solid var(--line);border-radius:26px;background:var(--surface-strong);padding:18px}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.modal form{display:grid;gap:14px}.settings-modal{display:grid;gap:16px}.background-setting{display:grid;gap:14px}.background-setting h3{font-size:1.18rem}.color-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.color-grid button{display:grid;grid-template-columns:34px minmax(0,1fr);gap:10px;align-items:center;min-height:54px;padding:8px 12px;border:1px solid var(--line);border-radius:16px;background:#fffdf8;color:var(--ink);cursor:pointer;font-weight:900;text-align:left}.color-grid button.is-active{border-color:var(--accent);background:#fff5ef}.color-swatch{width:34px;height:34px;border:1px solid rgba(45,42,36,.14);border-radius:50%}.custom-color-field{grid-template-columns:minmax(0,1fr) 58px;align-items:center;min-height:58px;padding:10px 12px;border:1px solid var(--line);border-radius:16px;background:#fffdf8}.custom-color-field input{width:58px;min-height:40px;padding:0;border:0;background:transparent;cursor:pointer}label{display:grid;gap:7px;color:var(--muted);font-size:.9rem;font-weight:900}input,textarea{width:100%;border:1px solid var(--line);border-radius:16px;background:#fffdf8;color:var(--ink);font-size:1.05rem}input{min-height:52px;padding:0 14px}textarea{resize:vertical;padding:12px 14px}.stamp-setting{display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--muted);font-weight:900}.repeat-setting{display:grid;gap:12px;margin:0;padding:14px;border:1px solid var(--line);border-radius:18px;background:#fbf8f0}.repeat-setting legend{padding:0 6px;color:var(--muted);font-size:.9rem;font-weight:900}.repeat-options,.weekday-picker{display:grid;gap:8px}.repeat-options{grid-template-columns:repeat(2,minmax(0,1fr))}.weekday-picker{grid-template-columns:repeat(7,minmax(0,1fr))}.repeat-options button,.weekday-picker button{min-height:44px;border:1px solid var(--line);border-radius:999px;background:#fffdf8;color:var(--ink);cursor:pointer;font-weight:900}.repeat-options button.is-active,.weekday-picker button.is-active{border-color:#e36f5d8c;background:#fff1e9;color:var(--accent-strong)}.form-actions{justify-content:flex-end}.delete-mission-button{width:100%;margin-top:4px;background:#fff0ec;color:#a7443d}.tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:16px;padding:5px;border-radius:999px;background:#f0ede5}.tabs button{min-height:44px;border:0;border-radius:999px;background:transparent;color:var(--muted);cursor:pointer;font-weight:900}.tabs button.is-active{background:#fff;color:var(--ink)}.emoji-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.emoji-grid button{display:grid;aspect-ratio:1;place-items:center;border:1px solid var(--line);border-radius:18px;background:#fffaf0;cursor:pointer;font-size:1.7rem}.image-upload{display:grid;gap:10px}.upload-box{display:grid;min-height:150px;place-items:center;border:2px dashed #d5cec0;border-radius:22px;background:#f9f7f1;cursor:pointer;text-align:center}.upload-box input{position:absolute;width:1px;height:1px;opacity:0}.upload-box span{color:var(--ink);font-size:1.2rem;font-weight:900}.upload-box small{color:var(--muted)}.crop-workspace{display:grid;gap:16px}.crop-preview{position:relative;width:min(100%,260px);aspect-ratio:1;margin:0 auto;border:8px solid #fff7dc;border-radius:50%;background-color:#fffdf8;background-repeat:no-repeat;overflow:hidden}.crop-preview:after{content:"";position:absolute;inset:14%;border:1px dashed rgba(45,42,36,.24);border-radius:50%;pointer-events:none}.crop-controls{display:grid;gap:12px}.crop-controls label{color:var(--ink)}.crop-controls input[type=range]{min-height:36px;padding:0;accent-color:var(--accent)}.file-button{display:inline-flex;align-items:center;justify-content:center;padding:0 18px;color:var(--ink)}.file-button input{position:absolute;width:1px;height:1px;opacity:0}.error-text{margin-bottom:0;color:#a7443d;font-weight:900}.celebration{position:fixed;z-index:60;inset:0;display:grid;place-items:center;padding:24px;background:linear-gradient(180deg,#fffdf8fa,#faf4e8f5);animation:celebration-screen 2.1s ease both;pointer-events:none;overflow:hidden}.celebration-content{position:relative;z-index:2;display:grid;justify-items:center;gap:28px;transform:translateY(-8vh)}.celebration-content strong{color:#ef6f5d;font-size:clamp(3rem,15vw,5.8rem);font-weight:900;line-height:1;animation:celebration-title 2.1s ease both}.celebration-stamp{display:grid;width:min(44vw,210px);aspect-ratio:1;place-items:center;border-radius:50%;background:radial-gradient(circle at 38% 34%,#fffffffa,#fff4bfeb 38%,#f9d3624d);border:1px solid rgba(255,255,255,.75);animation:celebration-stamp-pop 2.1s cubic-bezier(.18,.9,.22,1) both}.celebration-stamp .stamp-emoji{font-size:min(25vw,7.5rem)}.celebration-stamp .stamp-image{width:min(28vw,132px);height:min(28vw,132px)}.confetti-field{position:absolute;inset:0;pointer-events:none}.confetti-piece{position:absolute;width:11px;height:25px;border-radius:999px;background:var(--confetti-color, #ef6f5d);opacity:0;transform:translateY(-28px) rotate(var(--confetti-rotate, 0deg)) scale(.82);animation:confetti-pop 2.1s cubic-bezier(.16,.84,.34,1) both}.piece-1{--confetti-color: #f7c96b;--confetti-rotate: 28deg;left:29%;top:17%;animation-delay:.02s}.piece-2{--confetti-color: #ef7f6d;--confetti-rotate: -34deg;left:72%;top:18%;animation-delay:.08s}.piece-3{--confetti-color: #f0a4a8;--confetti-rotate: -42deg;left:17%;top:28%;animation-delay:.01s}.piece-4{--confetti-color: #ffd26f;--confetti-rotate: 42deg;left:81%;top:32%;animation-delay:.12s}.piece-5{--confetti-color: #88c6c9;--confetti-rotate: 38deg;left:53%;top:14%;animation-delay:.16s}.piece-6{--confetti-color: #f2c7ca;--confetti-rotate: 20deg;left:85%;top:27%;animation-delay:.04s}.piece-7{--confetti-color: #ef7f6d;--confetti-rotate: -38deg;left:12%;top:52%;animation-delay:.11s}.piece-8{--confetti-color: #7bc3cf;--confetti-rotate: 34deg;left:83%;top:49%;animation-delay:.18s}.piece-9{--confetti-color: #f7c96b;--confetti-rotate: 38deg;left:26%;top:78%;animation-delay:.05s}.piece-10{--confetti-color: #f29a9e;--confetti-rotate: -28deg;left:69%;top:76%;animation-delay:.15s}.piece-11{--confetti-color: #7bc3cf;--confetti-rotate: 30deg;left:48%;top:72%;animation-delay:.09s}.piece-12{--confetti-color: #ffd26f;--confetti-rotate: 32deg;left:70%;top:89%;animation-delay:.2s}.piece-13{--confetti-color: #f3c9cc;--confetti-rotate: -36deg;left:31%;top:62%;animation-delay:.13s}.piece-14{--confetti-color: #f6d3bf;--confetti-rotate: 42deg;left:14%;top:42%;animation-delay:.17s}.piece-15{--confetti-color: #f7c96b;--confetti-rotate: -26deg;left:74%;top:41%;animation-delay:.03s}.piece-16{--confetti-color: #ef7f6d;--confetti-rotate: -34deg;left:36%;top:25%;animation-delay:.19s}.piece-17{--confetti-color: #f29a9e;--confetti-rotate: 33deg;left:25%;top:86%;animation-delay:.21s}.piece-18{--confetti-color: #f7c96b;--confetti-rotate: 28deg;left:43%;top:24%;animation-delay:.06s}.piece-19{--confetti-color: #f3c9cc;--confetti-rotate: 12deg;left:17%;top:35%;animation-delay:.1s}.piece-20{--confetti-color: #ef7f6d;--confetti-rotate: -31deg;left:78%;top:64%;animation-delay:.05s}.piece-21{--confetti-color: #f3c9cc;--confetti-rotate: -22deg;left:87%;top:38%;animation-delay:.14s}.piece-22{--confetti-color: #ffd26f;--confetti-rotate: -40deg;left:21%;top:21%;animation-delay:.04s}.piece-23{--confetti-color: #88c6c9;--confetti-rotate: -34deg;left:58%;top:83%;animation-delay:.16s}.piece-24{--confetti-color: #f29a9e;--confetti-rotate: 38deg;left:36%;top:83%;animation-delay:.07s}.piece-25{--confetti-color: #f6d3bf;--confetti-rotate: -28deg;left:16%;top:70%;animation-delay:.12s}.piece-26{--confetti-color: #f7c96b;--confetti-rotate: -35deg;left:80%;top:72%;animation-delay:.19s}.piece-27{--confetti-color: #f0a4a8;--confetti-rotate: 38deg;left:23%;top:51%;animation-delay:.09s}.piece-28{--confetti-color: #ef7f6d;--confetti-rotate: 24deg;left:62%;top:23%;animation-delay:.02s}@keyframes celebration-screen{0%{opacity:0}12%{opacity:1}82%{opacity:1}to{opacity:0}}@keyframes celebration-title{0%{opacity:0;transform:translateY(18px) scale(.86) rotate(-5deg)}18%{opacity:1;transform:translateY(0) scale(1.06) rotate(-2deg)}32%,78%{opacity:1;transform:translateY(0) scale(1) rotate(-2deg)}to{opacity:0;transform:translateY(-12px) scale(.97) rotate(-2deg)}}@keyframes celebration-stamp-pop{0%{opacity:0;transform:translateY(28px) scale(.55) rotate(-8deg)}20%{opacity:1;transform:translateY(0) scale(1.12) rotate(2deg)}34%,78%{opacity:1;transform:translateY(0) scale(1) rotate(0)}to{opacity:0;transform:translateY(-8px) scale(.94) rotate(0)}}@keyframes confetti-pop{0%{opacity:0;transform:translateY(-26px) rotate(var(--confetti-rotate, 0deg)) scale(.45)}18%{opacity:1;transform:translateY(0) rotate(var(--confetti-rotate, 0deg)) scale(1)}72%{opacity:1;transform:translateY(12px) rotate(calc(var(--confetti-rotate, 0deg) + 26deg)) scale(1)}to{opacity:0;transform:translateY(44px) rotate(calc(var(--confetti-rotate, 0deg) + 54deg)) scale(.78)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;scroll-behavior:auto!important}}@media(max-width:520px){.app-shell{padding-inline:12px}.week-panel{padding:14px 10px 16px}.week-header{margin-bottom:16px}.week-calendar-row{grid-template-columns:24px minmax(0,1fr) 24px;gap:2px}.week-panel,.stamp-strip,.mission-panel{border-radius:20px}.week-grid{gap:2px}.day-cell{min-height:88px;padding-inline:0}.day-number{width:40px;height:40px;font-size:1.42rem}.week-arrow{width:24px;font-size:1.8rem}.modal-backdrop{padding:10px}}
