:root{--coral:#ff6b35;--coral-light:#fff0ea;--gold:#ffb800;--gold-light:#ffb80026;--blue:#0064ff;--bg:#fffbf5;--card:#fff;--text:#191f28;--sub:#8b95a1;--border:#e8ebf0;--green:#00c853;--red:#ff3b30;--radius-lg:20px;--radius-md:12px;--radius-sm:8px;--shadow:0 2px 12px #00000014;--shadow-lg:0 8px 32px #0000001f;--page-px:20px}*,:before,:after{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;padding:0;font-family:Pretendard Variable,Pretendard,-apple-system,BlinkMacSystemFont,sans-serif;font-size:16px}button{cursor:pointer;background:0 0;border:none;font-family:inherit}button:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.app-shell{background:var(--bg);max-width:430px;min-height:100svh;margin:0 auto;position:relative}.page{padding:max(env(safe-area-inset-top,0px), 16px) 0 calc(56px + env(safe-area-inset-bottom,0px) + 16px);min-height:100svh}.home-header{padding:16px var(--page-px) 8px}.date-label{color:var(--sub);margin:0 0 4px;font-size:13px}.home-title{color:var(--text);margin:0;font-size:22px;font-weight:700}.section-card{background:var(--card);border-radius:var(--radius-lg);margin:12px var(--page-px) 0;box-shadow:var(--shadow);padding:16px}.section-label{color:var(--text);margin:0 0 12px;font-size:15px;font-weight:600}.section-sub{color:var(--sub);font-size:12px;font-weight:400}.mood-grid{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}.mood-btn{background:var(--bg);border:1.5px solid var(--border);border-radius:var(--radius-md);color:var(--sub);align-items:center;gap:8px;padding:12px;font-size:14px;font-weight:500;transition:all .15s;display:flex}.mood-btn.active{background:var(--coral-light);border-color:var(--coral);color:var(--coral)}.mood-icon{align-items:center;display:flex}.budget-display{text-align:center;margin-bottom:10px}.budget-amount{color:var(--gold);font-size:22px;font-weight:700}.budget-slider{width:100%;accent-color:var(--gold);cursor:pointer}.budget-range-labels{color:var(--sub);justify-content:space-between;margin-top:4px;font-size:11px;display:flex}.category-grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.category-btn{background:var(--bg);border:1.5px solid var(--border);border-radius:var(--radius-md);color:var(--sub);justify-content:center;align-items:center;padding:14px 8px;font-size:14px;font-weight:500;transition:all .15s;display:flex}.category-btn.active{background:var(--coral-light);border-color:var(--coral);color:var(--coral)}.home-cta{padding:16px var(--page-px) 0}.btn-cta{background:var(--blue);color:#fff;border-radius:var(--radius-md);justify-content:center;align-items:center;gap:8px;width:100%;padding:16px;font-size:16px;font-weight:600;transition:opacity .15s,transform .1s;display:flex}.btn-cta:active{transform:scale(.98)}.btn-cta.disabled{background:var(--border);color:var(--sub);cursor:not-allowed}.result-page{background:var(--bg);min-height:100svh;padding-top:0;padding-bottom:24px}.result-header{padding:max(env(safe-area-inset-top,0px), 16px) var(--page-px) 12px;background:var(--card);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;display:flex}.result-header-title{font-size:16px;font-weight:600}.btn-back{background:var(--bg);width:36px;height:36px;color:var(--text);border-radius:50%;justify-content:center;align-items:center;display:flex}.btn-reshuffle{color:var(--blue);border-radius:var(--radius-sm);align-items:center;gap:4px;padding:6px 10px;font-size:13px;font-weight:500;display:flex}.main-card{background:var(--card);border-radius:var(--radius-lg);margin:16px var(--page-px) 0;box-shadow:var(--shadow-lg);overflow:hidden}.main-card-top{background:var(--coral-light);justify-content:center;align-items:center;padding:24px;display:flex}.main-card-body{padding:16px 20px 20px}.menu-name{color:var(--coral);margin:0 0 6px;font-size:22px;font-weight:700}.menu-price{color:var(--gold);margin:0 0 10px;font-size:16px;font-weight:600}.menu-reason{color:var(--sub);margin:0 0 12px;font-size:14px;line-height:1.6}.menu-tags{flex-wrap:wrap;gap:6px;display:flex}.tag{background:var(--coral-light);color:var(--coral);border-radius:20px;padding:4px 10px;font-size:12px;font-weight:500}.alt-menus{padding:12px var(--page-px) 0}.alt-label{color:var(--sub);margin:0 0 8px;font-size:13px}.alt-grid{gap:8px;display:flex}.alt-card{background:var(--card);border:1.5px solid var(--border);border-radius:var(--radius-md);text-align:left;box-shadow:var(--shadow);flex:1;padding:12px;transition:border-color .15s}.alt-card.selected{border-color:var(--coral)}.alt-name{color:var(--text);margin-bottom:4px;font-size:13px;font-weight:600;display:block}.alt-price{color:var(--gold);font-size:12px}.result-actions{padding:16px var(--page-px) 0}.btn-save{background:var(--blue);color:#fff;border-radius:var(--radius-md);justify-content:center;align-items:center;gap:8px;width:100%;padding:15px;font-size:16px;font-weight:600;transition:opacity .15s;display:flex}.save-done{background:var(--green);color:#fff;border-radius:var(--radius-md);justify-content:center;align-items:center;gap:8px;padding:15px;font-size:16px;font-weight:600;display:flex}.challenge-preview{margin:12px var(--page-px) 0;background:var(--card);border-radius:var(--radius-md);width:calc(100% - 40px);box-shadow:var(--shadow);cursor:pointer;align-items:center;gap:12px;padding:14px 16px;display:flex}.challenge-preview-text{color:var(--sub);text-align:left;flex-direction:column;flex:1;gap:2px;font-size:12px;display:flex}.challenge-preview-amount{color:var(--text);font-size:13px;font-weight:600}.challenge-preview-bar{background:var(--border);border-radius:3px;flex:2;height:6px;overflow:hidden}.challenge-preview-fill{background:var(--gold);border-radius:3px;height:100%;transition:width .6s}.challenge-preview-pct{color:var(--gold);text-align:right;min-width:36px;font-size:13px;font-weight:600}.history-page,.challenge-page{background:var(--bg)}.page-header-simple{padding:max(env(safe-area-inset-top,0px), 20px) var(--page-px) 4px;align-items:center;gap:8px;display:flex}.page-title{color:var(--text);margin:0;font-size:20px;font-weight:700}.week-summary-card{background:var(--card);border-radius:var(--radius-lg);margin:12px var(--page-px) 0;box-shadow:var(--shadow);padding:16px}.week-summary-row{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.week-summary-label{color:var(--sub);font-size:13px}.week-summary-total{color:var(--text);font-size:20px;font-weight:700}.week-budget-label,.week-remain-label{color:var(--sub);font-size:12px}.week-progress-track{background:var(--border);border-radius:5px;height:10px;margin-bottom:8px;overflow:hidden}.week-progress-fill{border-radius:5px;height:100%;transition:width .8s cubic-bezier(.16,1,.3,1)}.week-dots{padding:16px var(--page-px) 0;justify-content:space-around;display:flex}.week-dot-item{flex-direction:column;align-items:center;gap:4px;display:flex}.week-dot{background:var(--border);border-radius:50%;width:10px;height:10px}.week-dot.filled{background:var(--coral)}.week-dot-label{color:var(--sub);font-size:11px}.history-list{margin:12px var(--page-px) 0;background:var(--card);border-radius:var(--radius-lg);box-shadow:var(--shadow);overflow:hidden}.history-item{border-left:3px solid var(--coral);border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:14px 16px;display:flex}.history-item:last-child{border-bottom:none}.history-day{color:var(--coral);min-width:20px;font-size:13px;font-weight:600}.history-info{flex:1}.history-menu{color:var(--text);font-size:14px;font-weight:600;display:block}.history-category{color:var(--sub);font-size:12px}.history-price{color:var(--gold);font-size:14px;font-weight:600}.empty-state{text-align:center;color:var(--sub);padding:32px 16px;font-size:14px;line-height:1.8}.category-stats{background:var(--card);border-radius:var(--radius-lg);margin:12px var(--page-px) 0;box-shadow:var(--shadow);padding:16px}.stats-title{margin:0 0 12px;font-size:15px;font-weight:600}.stats-row{align-items:center;gap:8px;margin-bottom:8px;display:flex}.stats-cat{color:var(--text);min-width:32px;font-size:13px}.stats-bar-track{background:var(--border);border-radius:4px;flex:1;height:8px;overflow:hidden}.stats-bar-fill{background:var(--coral);border-radius:4px;height:100%;transition:width .6s}.stats-pct{color:var(--sub);text-align:right;min-width:32px;font-size:12px}.challenge-card{background:var(--card);border-radius:var(--radius-lg);margin:12px var(--page-px) 0;box-shadow:var(--shadow);padding:16px}.challenge-section-title{margin:0 0 12px;font-size:15px;font-weight:600}.budget-control{justify-content:center;align-items:center;gap:20px;margin-bottom:8px;display:flex}.budget-adj-btn{background:var(--bg);border:1.5px solid var(--border);border-radius:var(--radius-sm);color:var(--sub);padding:8px 16px;font-size:14px;font-weight:600;transition:all .15s}.budget-adj-btn:active{background:var(--coral-light);color:var(--coral);border-color:var(--coral)}.challenge-budget-amount{color:var(--gold);font-size:24px;font-weight:700}.remain-days{color:var(--sub);text-align:center;margin:0;font-size:13px}.challenge-amounts{margin-bottom:8px}.challenge-spent{color:var(--text);font-size:22px;font-weight:700}.challenge-target{color:var(--sub);font-size:16px}.challenge-track{background:var(--border);border-radius:6px;height:12px;margin-bottom:10px;overflow:hidden}.challenge-fill{border-radius:6px;height:100%;transition:width .8s cubic-bezier(.16,1,.3,1)}.challenge-meta{justify-content:space-between;font-size:12px;display:flex}.meta-item{color:var(--sub)}.meta-item.on-track{color:var(--green)}.meta-item.over-track{color:var(--red)}.badge-grid{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.badge-item{border-radius:var(--radius-sm);background:var(--bg);text-align:center;flex-direction:column;align-items:center;gap:4px;padding:12px 4px;display:flex}.badge-item.unlocked{background:var(--coral-light)}.badge-icon{justify-content:center;align-items:center;width:40px;height:40px;font-size:24px;display:flex}.badge-item.locked .badge-icon{color:var(--border)}.badge-item.unlocked .badge-icon{color:var(--coral)}.badge-label{color:var(--text);font-size:11px;font-weight:600}.badge-desc{color:var(--sub);font-size:10px;line-height:1.3}.bottom-nav{width:100%;max-width:430px;height:calc(56px + env(safe-area-inset-bottom,0px));padding-bottom:env(safe-area-inset-bottom,0px);background:var(--card);border-top:1px solid var(--border);z-index:100;align-items:center;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.bottom-nav-item{color:var(--sub);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;padding:6px 0;transition:color .15s;display:flex}.bottom-nav-item.active{color:var(--coral)}.bottom-nav-label{font-size:10px;font-weight:500}.policy-page{background:var(--bg)}.policy-header{padding:max(env(safe-area-inset-top,0px), 16px) var(--page-px) 12px;background:var(--card);border-bottom:1px solid var(--border);z-index:10;align-items:center;gap:12px;display:flex;position:sticky;top:0}.policy-title{margin:0;font-size:18px;font-weight:600}.policy-content{padding:20px var(--page-px)}.policy-content h3{margin:20px 0 8px;font-size:15px;font-weight:700}.policy-content h4{margin:0 0 6px;font-size:14px;font-weight:600}.policy-content p{color:var(--sub);margin:0 0 8px;font-size:14px;line-height:1.7}.policy-content ul{color:var(--sub);padding-left:20px;font-size:14px;line-height:1.7}.policy-date{color:var(--sub);margin-bottom:16px;font-size:13px}.faq-item{background:var(--card);border-radius:var(--radius-md);box-shadow:var(--shadow);margin-bottom:10px;padding:14px 16px}.support-email{color:var(--blue)!important;font-size:16px!important}.support-note{color:var(--sub);font-size:12px}
