:root{--color-ink:#102033;--color-muted:#6c7c90;--color-line:#dbe8f5;--color-blue:#147bd1;--color-sky:#45b7ee;--color-cyan:#9be7ff;--color-mint:#7ed6c6;--color-red:#e95050;--color-yellow:#ffd166;--color-panel:#fff;--color-page:#eff8ff;--shadow-card:0 14px 34px #1957841f}*,:before,:after{box-sizing:border-box}*{margin:0}html{background:#dff3ff;height:100%;overflow:hidden}body{height:100%;color:var(--color-ink);background:linear-gradient(135deg, #45b7ee38, transparent 34%), linear-gradient(210deg, #7ed6c633, transparent 42%), var(--color-page);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Pretendard,Noto Sans KR,Apple SD Gothic Neo,Malgun Gothic,sans-serif;line-height:1.5;overflow:hidden}button,input,select,textarea{font:inherit}button{cursor:pointer}#app{height:100%;overflow:hidden}.app-shell{place-items:center;height:100dvh;padding:28px;display:grid;overflow:hidden}.phone-frame{background:radial-gradient(circle at 0 0,#9be7ff80,#0000 34%),linear-gradient(#fff 0%,#f3fbff 100%);border:1px solid #147bd129;border-radius:30px;grid-template-rows:auto 1fr auto;width:min(100%,430px);height:min(920px,100dvh - 56px);max-height:calc(100dvh - 56px);display:grid;position:relative;overflow:hidden;box-shadow:0 30px 80px #103c602e}.top-bar{justify-content:space-between;align-items:center;gap:12px;padding:26px 24px 14px;display:flex}.top-bar>div{flex:1;min-width:0}.eyebrow{color:var(--color-blue);letter-spacing:0;text-transform:uppercase;font-size:12px;font-weight:800}h1,h2,h3,strong,b{font-weight:800}h1{margin-top:4px;font-size:28px;line-height:1.15}h2{font-size:18px}h3{font-size:17px}.icon-button,.back-button,.round-stepper,.stepper button{border:1px solid var(--color-line);width:42px;height:42px;color:var(--color-blue);background:#fff;border-radius:50%;place-items:center;display:grid;box-shadow:0 10px 20px #147bd114}.back-button{color:var(--color-ink);flex:none;font-size:30px;line-height:1}.screen{min-height:0;padding:8px 18px 18px;overflow-y:auto}.fab-screen{padding-bottom:196px}.summary-panel{background:linear-gradient(135deg, var(--color-blue), var(--color-sky));color:#fff;box-shadow:var(--shadow-card);border-radius:8px;grid-template-columns:repeat(3,1fr);gap:8px;padding:14px;display:grid}.summary-panel p{color:#ffffffd6;font-size:12px}.summary-panel strong{margin-top:4px;font-size:22px;display:block}.notice-band{background:#ffffffc7;border:1px solid #147bd11f;border-radius:8px;align-items:center;gap:10px;margin:14px 0;padding:13px 14px;display:flex}.pulse-dot{background:var(--color-yellow);border-radius:50%;flex:none;width:10px;height:10px;box-shadow:0 0 0 6px #ffd16633}.section-block{margin-top:18px}.section-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.section-head button,.section-head select{border:1px solid var(--color-line);color:var(--color-blue);background:#fff;border-radius:8px;padding:9px 12px;font-weight:800}.ingredient-card,.recipe-card,.candidate-card,.settings-row{box-shadow:var(--shadow-card);background:#ffffffeb;border:1px solid #147bd11a;border-radius:8px}.ingredient-card{grid-template-columns:auto 1fr auto;align-items:center;gap:12px;margin-bottom:12px;padding:14px;display:grid}.d-day{min-width:44px;color:var(--color-blue);text-align:center;background:#45b7ee24;border-radius:8px;padding:6px 8px;font-size:12px;font-weight:900}.d-day.danger{color:var(--color-red);background:#e950501f}.ingredient-info{gap:2px;min-width:0;display:grid}.ingredient-info strong,.ingredient-info span,.ingredient-info time{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ingredient-info span,.ingredient-info time,.notice-band p,.settings-row span{color:var(--color-muted);font-size:13px}.source-pill{letter-spacing:.02em;border-radius:999px;width:fit-content;margin-top:3px;padding:3px 8px;font-size:11px;font-weight:900}.source-pill.is-pdf{color:var(--color-blue);background:#147bd11f}.source-pill.is-curated{color:#0d7a47;background:#1fa3631f}.source-pill.is-unsupported{color:var(--color-red);background:#e950501f}.source-pill.is-generic{color:var(--color-ink);background:#10203314}.segmented-control{grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:12px;display:grid}.segmented-control button{border:1px solid var(--color-line);min-height:38px;color:var(--color-muted);background:#fff;border-radius:999px;font-weight:800}.segmented-control .active{background:var(--color-blue);color:#fff;border-color:#0000}.ingredients-toolbar{grid-template-columns:1fr 44px;align-items:center;gap:10px;margin-bottom:12px;display:grid}.add-toggle{background:var(--color-blue);color:#fff;border:0;border-radius:50%;width:44px;height:44px;font-size:26px;font-weight:900;line-height:1;box-shadow:0 14px 24px #147bd138}.add-toggle.active{background:var(--color-ink);transform:rotate(45deg)}.fab-actions{right:20px;bottom:calc(env(safe-area-inset-bottom,0px) + 150px);z-index:20;justify-items:end;gap:10px;display:grid;position:absolute}.floating-add{background:var(--color-blue);color:#fff;border:0;border-radius:50%;width:58px;height:58px;font-size:32px;font-weight:900;line-height:1;box-shadow:0 18px 34px #147bd14d}.floating-add.active{background:var(--color-ink);transform:rotate(45deg)}.fab-choice{min-height:44px;color:var(--color-ink);box-shadow:var(--shadow-card);background:#fff;border:1px solid #147bd11f;border-radius:999px;align-items:center;gap:8px;padding:0 14px 0 8px;font-weight:900;display:none}.fab-actions.open .fab-choice{display:flex}.fab-choice span{width:30px;height:30px;color:var(--color-blue);background:#e8f6ff;border-radius:50%;place-items:center;font-weight:900;display:grid}.search-box{border:1px solid var(--color-line);background:#fff;border-radius:999px;align-items:center;gap:8px;margin-bottom:12px;padding:0 14px;display:flex}.search-box span{color:var(--color-muted);font-size:20px}.search-box input{border:0;outline:0;width:100%;min-height:44px}.cleanup-banner{box-shadow:var(--shadow-card);background:linear-gradient(#fffffffa,#ffefeff0);border:1px solid #e9505024;border-radius:16px;grid-template-columns:1fr auto;align-items:center;gap:12px;margin-bottom:12px;padding:14px;display:grid}.cleanup-banner p{color:var(--color-muted);font-size:12px}.danger-pill-button{background:var(--color-red);color:#fff;border:0;border-radius:999px;min-height:40px;padding:0 14px;font-weight:900}.compact-form,.candidate-card{grid-template-columns:1fr .85fr;gap:8px;margin-bottom:14px;display:grid}.compact-form input,.compact-form select,.compact-form button,.candidate-card input,.candidate-card select,.settings-row input{border:1px solid var(--color-line);min-width:0;min-height:42px;color:var(--color-ink);background:#fff;border-radius:8px;padding:0 11px}.compact-form button,.primary-button{background:var(--color-blue);color:#fff;border:0;font-weight:900}.compact-form button,.compact-form input[type=date]{grid-column:span 2}.add-form-panel{box-shadow:var(--shadow-card);background:#fffc;border:1px solid #147bd11f;border-radius:8px;padding:12px}.add-page-form{gap:12px;display:grid}.add-page-form label,.scan-candidate label,.recipe-prompt{gap:6px;display:grid}.add-page-form label span,.scan-candidate label span,.recipe-prompt span{color:var(--color-muted);font-size:12px;font-weight:900}.add-page-form input,.add-page-form select,.recipe-prompt input{border:1px solid var(--color-line);width:100%;min-width:0;min-height:46px;color:var(--color-ink);background:#fff;border-radius:8px;padding:0 12px}.form-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.ai-expiry-note{background:#e8f6ff;border:1px solid #147bd11f;border-radius:8px;padding:14px}.ai-expiry-note b{color:var(--color-blue)}.ai-expiry-note p{color:var(--color-muted);margin-top:4px;font-size:13px}.stepper{text-align:center;grid-template-columns:32px 24px 32px;align-items:center;gap:4px;display:grid}.stepper button{width:32px;height:32px}.card-actions{justify-items:end;gap:8px;display:grid}.card-actions>button{border:1px solid var(--color-line);min-height:28px;color:var(--color-blue);background:#fff;border-radius:999px;padding:0 9px;font-size:12px;font-weight:900}.recipe-quick-action{border-radius:999px;width:auto;min-width:76px;height:36px;padding:0 14px;font-size:12px;font-weight:900}.danger-button{width:100%;min-height:46px;color:var(--color-red);background:#e950501a;border:1px solid #e950504d;border-radius:8px;font-weight:900}.empty-state{color:var(--color-muted);text-align:center;background:#ffffffa3;border:1px dashed #147bd140;border-radius:8px;padding:18px;font-size:14px}.alert-card{box-shadow:var(--shadow-card);background:#ffffffeb;border:1px solid #e950502e;border-radius:8px;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;margin-bottom:12px;padding:14px;display:grid}.alert-card strong{display:block}.alert-card p{color:var(--color-muted);font-size:13px}.alert-card button{background:var(--color-blue);color:#fff;border:0;border-radius:999px;min-height:34px;padding:0 12px;font-weight:900}.camera-panel{background:linear-gradient(#10203357,#10203357),repeating-linear-gradient(0deg,#d6ebf8 0 2px,#f8fcff 2px 18px);border-radius:8px;place-items:center;min-height:240px;margin-bottom:12px;display:grid;position:relative;overflow:hidden}.camera-panel p{color:#fff;text-align:center;align-self:end;width:72%;margin-bottom:18px;font-size:13px}.receipt-preview{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.receipt-preview+p{background:#102033a3;border-radius:8px;width:calc(100% - 28px);padding:10px;position:relative}.image-upload{min-height:48px;color:var(--color-blue);background:#ffffffc2;border:1px dashed #147bd159;border-radius:8px;place-items:center;margin-bottom:10px;font-weight:900;display:grid}.image-upload input{display:none}.scan-upload-actions{gap:10px;margin-bottom:10px;display:grid}.scan-upload-actions .image-upload{margin-bottom:0}.camera-trigger{width:100%}.scan-window{aspect-ratio:1.8;border:2px solid #ffffffc7;width:72%;position:absolute}.scan-window span{border-color:#fff;width:22px;height:22px;position:absolute}.scan-window span:first-child{border-top:4px solid;border-left:4px solid;top:-2px;left:-2px}.scan-window span:nth-child(2){border-top:4px solid;border-right:4px solid;top:-2px;right:-2px}.scan-window span:nth-child(3){border-bottom:4px solid;border-left:4px solid;bottom:-2px;left:-2px}.scan-window span:nth-child(4){border-bottom:4px solid;border-right:4px solid;bottom:-2px;right:-2px}.primary-button{border-radius:8px;width:100%;min-height:48px;margin:10px 0 16px}.secondary-button{border:1px solid var(--color-line);min-height:42px;color:var(--color-blue);background:#fff;border-radius:8px;padding:0 12px;font-weight:900}.primary-button:disabled{cursor:not-allowed;background:#b9cad8}.candidate-card{padding:12px}.receipt-review-header{box-shadow:var(--shadow-card);background:linear-gradient(#fffffff5,#e8f6ffe0);border:1px solid #147bd11a;border-radius:16px;gap:12px;margin-bottom:12px;padding:14px;display:grid}.receipt-review-header p,.recipe-provider-note{color:var(--color-muted);font-size:13px}.receipt-review-actions{grid-template-columns:1fr 1fr;gap:8px;display:grid}.receipt-review-actions button{border-radius:999px;min-height:44px;font-weight:900;box-shadow:0 12px 24px #147bd11a}.receipt-save-button{background:linear-gradient(135deg, var(--color-blue), var(--color-sky));color:#fff;border:0}.receipt-reset-button{color:var(--color-blue);background:#ffffffeb;border:1px solid #147bd126}.candidate-review-card{background:radial-gradient(circle at 100% 0,#9be7ff47,#0000 36%),#fffffff7;border:1px solid #147bd11f;border-radius:20px;gap:12px;margin-bottom:12px;padding:14px;display:grid;box-shadow:0 16px 34px #103c601f}.candidate-review-top{grid-template-columns:1fr auto;align-items:end;gap:10px;display:grid}.candidate-name-field,.candidate-review-grid label{gap:6px;display:grid}.candidate-name-field span,.candidate-review-grid label span{color:var(--color-muted);font-size:12px;font-weight:900}.candidate-original-note{color:var(--color-muted);font-size:12px;line-height:1.45}.candidate-review-grid{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.candidate-field-shell{background:#fff;border:1px solid #147bd11f;border-radius:14px;align-items:center;min-height:48px;padding:0 12px;display:flex;box-shadow:inset 0 1px #fffc}.candidate-field-shell.is-highlight{background:linear-gradient(#fff 0%,#f3fbff 100%);border-color:#147bd133}.candidate-field-shell input,.candidate-field-shell select{width:100%;min-height:44px;color:var(--color-ink);background:0 0;border:0;outline:0;padding:0}.candidate-expiry-field{grid-column:1/-1}.candidate-remove{min-height:42px;color:var(--color-red);background:#ffffffe0;border:1px solid #e9505029;border-radius:999px;padding:0 14px;font-weight:900}.candidate-source-note{color:var(--color-muted);background:#f5fbff;border:1px solid #147bd11a;border-radius:14px;margin-top:2px;padding:10px 12px;font-size:12px;font-weight:800}.recipe-card{margin-bottom:12px;padding:18px 18px 16px}.recipe-card-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.recipe-card-head>div{flex:1;min-width:0}.recipe-card-head h3{margin-top:4px}.recipe-view-switch{border:1px solid var(--color-line);background:#ffffffb8;border-radius:999px;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:14px;padding:4px;display:grid}.recipe-view-switch button{min-height:38px;color:var(--color-muted);background:0 0;border:0;border-radius:999px;font-weight:900}.recipe-view-switch .active{background:var(--color-blue);color:#fff}.recipe-pantry-list{gap:8px;display:grid}.recipe-ingredient{border:1px solid var(--color-line);min-height:48px;color:var(--color-ink);text-align:left;background:#ffffffd1;border-radius:8px;grid-template-columns:28px 1fr auto;align-items:center;gap:9px;padding:9px 11px;display:grid}.recipe-ingredient.urgent{background:#ffd16629;border-color:#e950505c}.recipe-ingredient.expired{background:#e950501f;border-color:#e9505061}.recipe-ingredient.selected{border-color:var(--color-blue);background:#e8f6ff}.recipe-ingredient.urgent .recipe-meta{color:#b77900}.recipe-ingredient.expired .recipe-meta{color:var(--color-red)}.recipe-check{width:28px;height:28px;color:var(--color-blue);background:#147bd11f;border-radius:50%;place-items:center;font-weight:900;display:grid}.recipe-ingredient.selected .recipe-check{background:var(--color-blue);color:#fff}.recipe-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:900;overflow:hidden}.recipe-meta{color:var(--color-muted);font-size:12px;font-weight:800}.recipe-prompt{margin-top:12px}.selected-summary{color:var(--color-muted);justify-content:space-between;align-items:center;margin-top:10px;font-size:13px;font-weight:800;display:flex}.selected-summary button{color:var(--color-blue);background:0 0;border:0;font-weight:900}.recipe-provider-note{margin:-6px 0 12px}.recipe-card p{color:var(--color-blue);font-size:12px;font-weight:900}.generated-recipe,.saved-recipe-card{position:relative}.settings-row-stack{gap:10px}.admin-panel,.admin-card{box-shadow:var(--shadow-card);background:#ffffffeb;border:1px solid #147bd11a;border-radius:8px;padding:14px}.admin-card{margin-bottom:12px}.admin-card-stack,.admin-card-head,.admin-filter-row,.admin-actions,.settings-row-stack{gap:10px;display:grid}.admin-card-head{grid-template-columns:1fr auto;align-items:start}.admin-filter-row{grid-template-columns:1fr 1fr}.admin-filter-row label{grid-column:1/-1;gap:6px;display:grid}.admin-filter-row label span,.admin-note,.admin-metrics,.admin-doc-text,.admin-source-card p,.admin-source-card a,.admin-card p,.admin-card small{color:var(--color-muted);font-size:12px}.admin-filter-row select{border:1px solid var(--color-line);min-height:42px;color:var(--color-ink);background:#fff;border-radius:8px;padding:0 11px}.admin-metrics{flex-wrap:wrap;gap:8px;display:flex}.admin-source-list{gap:8px;display:grid}.admin-source-card{background:#f8fcff;border:1px solid #147bd114;border-radius:8px;padding:10px}.admin-source-card a,.admin-card a{word-break:break-all}.admin-actions{grid-template-columns:repeat(3,1fr)}.admin-danger{min-height:42px;margin:0}.admin-doc-text{max-height:120px;overflow:hidden}.save-recipe{border:1px solid var(--color-line);min-width:72px;height:36px;color:var(--color-blue);white-space:nowrap;background:#fff;border-radius:999px;flex:none;justify-content:center;align-items:center;padding:0 14px;font-size:13px;font-weight:900;line-height:1;display:inline-flex}.save-recipe.saved{color:var(--color-blue);background:#147bd11a;border-color:#147bd12e}.save-recipe--delete{color:var(--color-red);background:#e950501a;border-color:#e950503d}.recipe-card ol{color:var(--color-muted);margin-top:10px;padding-left:19px;font-size:14px}.settings-row{gap:8px;margin-bottom:12px;padding:16px;display:grid}.settings-row code{color:var(--color-blue);text-overflow:ellipsis;background:#eef7fd;border-radius:8px;padding:10px;overflow:hidden}.tab-bar{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#ffffffdb;border-top:1px solid #147bd11a;grid-template-columns:repeat(5,1fr);gap:4px;padding:10px 10px 14px;display:grid}.tab-bar button{min-height:54px;color:var(--color-muted);background:0 0;border:0;border-radius:8px;place-items:center;font-size:12px;font-weight:800;display:grid}.tab-bar span{background:#147bd114;border-radius:50%;place-items:center;width:28px;height:28px;margin-bottom:2px;font-size:16px;line-height:1;display:grid}.tab-bar .active{color:var(--color-blue);background:#e8f6ff}.tab-bar .active span{background:#147bd129}@media (width<=520px){.app-shell{padding:0}.phone-frame{border:0;border-radius:0;width:100%;height:100dvh;max-height:100dvh}.candidate-review-grid,.receipt-review-actions,.cleanup-banner{grid-template-columns:1fr}}
