:root{--color-bg: #f4f8f6;--color-surface: #ffffff;--color-surface-subtle: #edf8f5;--color-surface-warm: #fff8ed;--color-ink: #17322d;--color-muted: #5e736d;--color-primary: #2aa99a;--color-primary-strong: #187d71;--color-primary-soft: #e6f6f2;--color-coral: #ed776b;--color-coral-strong: #b94d43;--color-coral-soft: #fff0ed;--color-warning: #8b641a;--color-warning-border: #e8c875;--color-border: #cfe3dd;--color-border-strong: #a8c9c0;--color-focus: #125de6;--color-overlay: rgb(23 50 45 / 58%);--font-display: "Nunito", "Apple SD Gothic Neo", "Noto Sans KR", sans-serif;--font-body: "Noto Sans KR", "Apple SD Gothic Neo", sans-serif;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--radius-sm: 10px;--radius-md: 14px;--radius-lg: 18px;--radius-pill: 999px;--shadow-sm: 0 4px 14px rgb(23 50 45 / 7%);--shadow-md: 0 12px 30px rgb(23 50 45 / 10%);--touch-min: 44px;--transition-fast: .15s ease;--transition-standard: .22s ease}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{overflow-x:hidden;background:var(--color-bg);color:var(--color-ink);font-family:var(--font-body);line-height:1.55}button,input{font:inherit}button{min-width:var(--touch-min);min-height:var(--touch-min);border:2px solid transparent;border-radius:var(--radius-sm);cursor:pointer;transition:background-color var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast),box-shadow var(--transition-fast),transform var(--transition-fast)}button:hover:not(:disabled){transform:translateY(-1px)}button:active:not(:disabled){transform:translateY(1px)}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid var(--color-focus);outline-offset:3px}button:disabled{cursor:not-allowed;opacity:.52}h1,h2,h3{margin-top:0;font-family:var(--font-display);line-height:1.2}p{margin-top:0}.app-shell{width:min(100% - 2rem,1100px);margin:0 auto;padding:var(--space-6) 0 var(--space-8)}.app-header{margin-bottom:var(--space-4)}.app-header h1{margin:.2rem 0 .5rem;font-size:clamp(2rem,5vw,2.75rem);letter-spacing:-.04em}.app-header .eyebrow{margin:0;color:var(--color-coral);font-weight:800;letter-spacing:.04em}.safety{max-width:45rem;margin-bottom:0}.card{padding:var(--space-5);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);box-shadow:var(--shadow-sm)}.mission-shell{padding:clamp(var(--space-4),3vw,var(--space-8))}.muted{color:var(--color-muted)}.hint,.feedback{color:var(--color-primary-strong);font-weight:650}.feedback{margin:var(--space-3) 0}.feedback-correct{font-weight:800}.finish-hint{margin:var(--space-4) 0 0;color:var(--color-coral-strong);font-weight:800}.actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);margin-top:var(--space-4)}.actions>button{flex:0 1 auto}.btn-primary{padding:.7rem 1.05rem;border-color:var(--color-primary);background:var(--color-primary);color:#fff;font-weight:800}.btn-primary:hover:not(:disabled){border-color:var(--color-primary-strong);background:var(--color-primary-strong)}.btn-secondary{padding:.7rem 1.05rem;border-color:var(--color-border-strong);background:var(--color-surface);color:var(--color-ink);font-weight:750}.btn-secondary:hover:not(:disabled){border-color:var(--color-primary);background:var(--color-primary-soft)}.btn-ghost{padding:.5rem .75rem;border-color:transparent;background:transparent;color:var(--color-muted);font-size:.9rem;font-weight:700}.btn-ghost:hover:not(:disabled){background:var(--color-primary-soft);color:var(--color-primary-strong)}.btn-lg{padding:.85rem 1.35rem;font-size:1.05rem}.grid-2{display:grid;gap:var(--space-4)}.food-head{display:flex;align-items:flex-start;gap:var(--space-3)}.food-head h3{margin-bottom:var(--space-1)}.food-head p{margin-bottom:0}.food-icon{display:grid;width:3.25rem;height:3.25rem;flex:0 0 auto;place-items:center;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-subtle);font-size:2rem}.food-card{display:flex;flex-direction:column;gap:var(--space-3);height:100%}.food-card.selected{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-soft)}.tap-cue{margin:0;color:var(--color-coral-strong);font-size:.92rem;font-weight:800}.badge-row{display:flex;flex-wrap:wrap;gap:var(--space-2)}.badge{display:inline-flex;min-height:var(--touch-min);align-items:center;justify-content:flex-start;gap:var(--space-1);padding:.45rem .75rem;border-radius:var(--radius-pill);font-size:.9rem;font-weight:800;text-align:left}.badge-serving{border-color:var(--color-primary);background:var(--color-primary-soft);color:var(--color-primary-strong)}.badge-package{border-color:var(--color-coral);background:var(--color-coral-soft);color:var(--color-coral-strong)}.badge.confirmed{box-shadow:inset 0 0 0 2px currentColor}.nutrition-table{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed;font-variant-numeric:tabular-nums}.nutrition-table th,.nutrition-table td{padding:.65rem .7rem;border:1px solid var(--color-border);text-align:left;vertical-align:middle}.nutrition-table th{background:var(--color-surface-subtle);font-size:.9rem}.nutrition-table th:first-child{border-radius:var(--radius-sm) 0 0 0}.nutrition-table th:last-child{border-radius:0 var(--radius-sm) 0 0}.nutrition-table td{font-weight:800}.field-find{width:100%;min-height:var(--touch-min);padding:.35rem .55rem;border:2px dashed var(--color-primary);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-ink);font-weight:800;text-align:left}.field-find.confirmed{border-style:solid;background:var(--color-primary-soft);color:var(--color-primary-strong)}.mission-grid,.food-grid{display:grid;gap:var(--space-4);margin:var(--space-5) 0}.mission-card{display:flex;min-height:8rem;flex-direction:column;align-items:flex-start;gap:var(--space-2);padding:var(--space-4);border-color:var(--color-border);background:var(--color-surface);text-align:left}.mission-card:hover:not(:disabled){border-color:var(--color-primary);background:var(--color-primary-soft)}.mission-card strong{font-family:var(--font-display);font-size:1.05rem}.mission-card em{color:var(--color-primary-strong);font-style:normal;font-weight:800}.mission-card .locked{color:var(--color-muted);font-size:.84rem;font-weight:600}.stepper{display:flex;width:fit-content;align-items:center;gap:var(--space-3);margin-top:var(--space-2)}.stepper-value{min-width:4.5rem;color:var(--color-ink);font-size:1.05rem;font-weight:850;text-align:center;font-variant-numeric:tabular-nums}fieldset{margin:var(--space-5) 0;padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md)}legend{padding:0 var(--space-2);font-weight:850}label{display:block;margin:var(--space-2) 0}input[type=text],input:not([type]){min-height:var(--touch-min);margin-left:var(--space-2);padding:.5rem .75rem;border:2px solid var(--color-border);border-radius:var(--radius-sm)}.condition-checklist{margin:var(--space-4) 0;padding:0;list-style:none}.condition-checklist li{display:flex;align-items:flex-start;gap:var(--space-2);margin:var(--space-2) 0;font-weight:700}.condition-checklist .sticker{min-width:1.4rem}.check-pass{color:var(--color-primary-strong)}.check-fail{color:var(--color-muted)}.chips{display:flex;flex-wrap:wrap;gap:var(--space-2)}.chip{min-height:var(--touch-min);padding:.45rem .85rem;border-color:var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface);color:var(--color-ink);font-weight:800}.chip:hover:not(:disabled),.chip.selected{border-color:var(--color-primary);background:var(--color-primary-soft)}.chip-row{margin:var(--space-4) 0}.chip-row>p{margin-bottom:var(--space-2);font-weight:750}.calc-hint,.target-board{margin:var(--space-3) 0;padding:var(--space-3) var(--space-4);border:1px solid var(--color-warning-border);border-radius:var(--radius-md);background:var(--color-surface-warm);color:var(--color-warning);font-weight:750}.target-board-title{margin-bottom:var(--space-2);font-weight:850}.target-board ul{margin:0;padding-left:1.1rem}.target-serving{margin:var(--space-2) 0;color:var(--color-warning);font-weight:750}.target-serving.match{color:var(--color-primary-strong)}.target-dir{color:var(--color-coral-strong)}.radio-touch{display:flex;min-height:var(--touch-min);align-items:center;gap:var(--space-3);margin:var(--space-2) 0;padding:.45rem .7rem;border:2px solid transparent;border-radius:var(--radius-sm);cursor:pointer}.radio-touch:has(input:checked){border-color:var(--color-primary);background:var(--color-primary-soft)}.radio-touch input{width:1.25rem;height:1.25rem;flex:0 0 auto}.result-box{padding:var(--space-4);border-radius:var(--radius-md);background:var(--color-surface-subtle);white-space:pre-wrap}.modal-backdrop{position:fixed;z-index:10;top:0;right:0;bottom:0;left:0;display:grid;overflow-y:auto;place-items:center;padding:var(--space-4);background:var(--color-overlay)}.modal{width:min(100%,34rem);max-height:min(90vh,42rem);overflow-y:auto}.start-screen{max-width:52rem;margin:0 auto;padding:clamp(var(--space-5),5vw,var(--space-8));text-align:center}.start-hero{display:flex;min-height:9rem;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);margin-bottom:var(--space-5);padding:var(--space-5);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface-subtle)}.tray-emoji{font-size:2.75rem;line-height:1}.tray-foods{display:flex;gap:var(--space-4);font-size:1.8rem}.start-title{margin-bottom:var(--space-2);font-size:clamp(1.35rem,3vw,1.8rem)}.start-lead{max-width:39rem;margin:0 auto var(--space-5);color:var(--color-muted)}.start-screen>.actions{justify-content:center}.start-progress{margin-bottom:var(--space-4);color:var(--color-primary-strong);font-weight:850}.tip-details,.teacher-details{max-width:39rem;margin:0 auto var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);text-align:left}.tip-details{padding:0 var(--space-4)}.tip-details p{margin:var(--space-3) 0}summary{min-height:var(--touch-min);display:flex;align-items:center;cursor:pointer;font-weight:800}.tip-details summary,.teacher-details summary{color:var(--color-primary-strong)}.teacher-details{padding:0 var(--space-2);border-color:transparent;font-size:.9rem}.teacher-details .btn-ghost{margin-bottom:var(--space-2)}.result-card{position:relative;overflow:hidden;text-align:center}.celebrate{margin:0 0 var(--space-2);color:var(--color-coral);font-size:1.35rem;font-weight:850}.celebrate-lg{font-size:clamp(1.8rem,5vw,2.5rem);letter-spacing:-.03em}.result-title{margin-bottom:var(--space-3);font-size:1.35rem}.result-lead{max-width:32rem;margin:0 auto var(--space-5);font-size:1.05rem;font-weight:700}.result-details{max-width:36rem;margin:0 auto var(--space-5);padding:0 var(--space-4);border:1px dashed var(--color-border-strong);border-radius:var(--radius-md);text-align:left}.result-list{margin:var(--space-3) 0;padding-left:1.2rem;color:var(--color-muted);font-size:.95rem}.result-list li{margin:var(--space-2) 0;overflow-wrap:anywhere}.result-copy-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);margin:var(--space-3) 0 var(--space-4)}.copy-status{color:var(--color-primary-strong);font-size:.9rem;font-weight:750}.copy-status-error{color:var(--color-coral-strong)}.result-actions{justify-content:center}.result-burst{position:absolute;inset:.5rem 0 auto;height:3rem;pointer-events:none}.burst-star{position:absolute;font-size:1.5rem}.burst-star.s1{left:18%}.burst-star.s2{left:48%}.burst-star.s3{left:78%}.mission-progress{margin-bottom:var(--space-4);padding:var(--space-3) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.mission-progress-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-2) var(--space-4);margin-bottom:var(--space-2);font-size:.95rem}.mission-progress-track,.builder-progress{overflow:hidden;height:10px;border-radius:var(--radius-pill);background:#dfeee9}.mission-progress-fill,.builder-progress-fill{height:100%;border-radius:inherit;background:var(--color-primary)}.mission-progress-dots{display:flex;gap:var(--space-2);margin:var(--space-3) 0 0;padding:0;list-style:none}.mission-progress-dots li{display:grid;width:2.25rem;min-height:2.25rem;place-items:center;border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface);color:var(--color-muted);font-size:.8rem;font-weight:850}.mission-progress-dots li.done{border-color:var(--color-coral);background:var(--color-coral-soft);color:var(--color-coral-strong)}.mission-progress-dots li.current{border-color:var(--color-primary);background:var(--color-primary-soft);color:var(--color-primary-strong)}.phase-guide,.step-pills{display:flex;flex-wrap:wrap;gap:var(--space-2);margin:0 0 var(--space-4);padding:0;list-style:none}.phase-guide li,.step-pill{display:inline-flex;min-height:2.25rem;align-items:center;gap:var(--space-1);padding:.35rem .7rem;border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface);color:var(--color-muted);font-size:.87rem;font-weight:800}.phase-guide li.active,.step-pill.active{border-color:var(--color-primary);background:var(--color-primary-soft);color:var(--color-primary-strong)}.phase-guide li.done,.step-pill.done{border-color:var(--color-coral);background:var(--color-coral-soft);color:var(--color-coral-strong)}.phase-num{font-variant-numeric:tabular-nums}.phase-heading{margin-bottom:var(--space-3);font-size:1.08rem}.mission-phase-block{margin:var(--space-5) 0 var(--space-6);padding-top:var(--space-4);border-top:1px dashed var(--color-border-strong)}.compare-food-block{margin-bottom:var(--space-5)}.builder-progress{margin-bottom:var(--space-2)}.builder-step-label{margin-bottom:var(--space-3);font-weight:750}.step-tabs{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-4)}.explanation-sentence{font-size:1.08rem;font-variant-numeric:tabular-nums}.total-line{font-weight:850;font-variant-numeric:tabular-nums}.loading-state{text-align:center;font-weight:750}.key-action:not(:disabled),.badge.needs-tap,.field-find.needs-tap{animation:gi-pulse 1.8s ease-in-out infinite}.anim-confirm{animation:confirm-pop .4s ease-out}.anim-pop{animation:pop-in .4s ease-out}.anim-fade-in{animation:fade-slide-in .35s ease-out}.cheer-banner{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--space-2);margin:var(--space-3) 0;padding:var(--space-3) var(--space-4);border:1px solid var(--color-primary);border-radius:var(--radius-md);background:var(--color-primary-soft);color:var(--color-primary-strong);font-weight:850}.cheer-stickers{font-size:1.25rem}.one-food-stage{max-width:34rem}@keyframes gi-pulse{0%,to{box-shadow:0 0 #2aa99a00}50%{box-shadow:0 0 0 5px #2aa99a38}}@keyframes confirm-pop{0%{transform:scale(1)}45%{transform:scale(1.06)}to{transform:scale(1)}}@keyframes pop-in{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes fade-slide-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media(min-width:700px){.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.mission-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.food-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.result-actions{flex-direction:row}}.meal-builder-narrow{display:none}@media(max-width:640px){.app-shell{width:min(100% - 1.25rem,1100px);padding-top:var(--space-4)}.card{padding:var(--space-4);border-radius:var(--radius-md)}.mission-shell{padding:var(--space-4)}.meal-builder-wide{display:none}.meal-builder-narrow{display:block}.food-grid,.mission-grid{grid-template-columns:1fr}.food-card{gap:var(--space-2)}.badge-row{flex-direction:column}.badge{width:100%}.nutrition-table th,.nutrition-table td{padding:.55rem .45rem;font-size:.84rem}.actions{align-items:stretch}.actions>button{flex:1 1 100%}.step-tabs>button{flex:1 1 calc(50% - var(--space-2))}.result-copy-row{align-items:stretch;flex-direction:column}.result-copy-row .copy-status{display:block}.mission-progress-dots{justify-content:space-between}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}button,input,a,summary{transition:none}.key-action:not(:disabled),.badge.needs-tap,.field-find.needs-tap,.anim-confirm,.anim-pop,.anim-fade-in{animation:none}}
