:root{--bg:#16140f;--bg-card:#211e17;--fg:#ece7dd;--fg-muted:#a39d8f;--border:#383327;--accent:#fb923c;--accent-fg:#16140f;--chip-bg:#2a251b;--font-scale:1}:root[data-theme=light]{--bg:#fdfaf6;--bg-card:#fff;--fg:#1a1a1a;--fg-muted:#767268;--border:#e7e0d5;--accent:#c2410c;--accent-fg:#fff;--chip-bg:#f3ede2}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--fg);font-family:Apple SD Gothic Neo,Noto Sans KR,-apple-system,BlinkMacSystemFont,sans-serif;font-size:calc(16px * var(--font-scale));-webkit-tap-highlight-color:transparent;margin:0;line-height:1.6;transition:background-color .15s,color .15s}a{color:inherit;text-decoration:none}.app-shell{flex-direction:column;max-width:640px;min-height:100%;margin:0 auto;display:flex}.app-header{z-index:10;background:var(--bg);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:.9rem 1rem;display:flex;position:sticky;top:0}.app-header-title{font-size:1.05rem;font-weight:700}.app-header-nav{color:var(--fg-muted);align-items:center;gap:.9rem;font-size:.9rem;display:flex}.aa-button{color:var(--fg);background:var(--chip-bg);border:1px solid var(--border);cursor:pointer;border-radius:999px;padding:.3rem .7rem;font-family:inherit;font-size:.85rem;font-weight:700}.app-main{flex:1;padding:1rem 1rem 3rem}.page-title{margin:.2rem 0 .8rem;font-size:1.35rem}.page-message{color:var(--fg-muted);padding:1.2rem 0}.page-message.error{color:#b91c1c}.breadcrumb{color:var(--fg-muted);margin-bottom:.4rem;font-size:.85rem}.breadcrumb a:hover{text-decoration:underline}.breadcrumb-sep{margin:0 .35rem}.root-cards{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.75rem;display:grid}.root-card{background:var(--bg-card);border:1px solid var(--border);border-radius:14px;padding:1.1rem 1rem;display:block}.root-card.is-empty{opacity:.45;cursor:default}.root-card-label{font-size:1.05rem;font-weight:600}.root-card-sub{color:var(--fg-muted);margin-top:.3rem;font-size:.85rem}.entry-list{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.entry{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;justify-content:space-between;align-items:center;padding:.9rem 1rem;display:flex}.entry.is-empty{opacity:.4}.entry-dir .entry-label:before{content:"📁 "}.entry-recipe .entry-label:before{content:"📄 "}.entry-sub{color:var(--fg-muted);font-size:.8rem}.chip-row{flex-wrap:wrap;gap:.4rem;margin-bottom:.6rem;display:flex}.chip{background:var(--chip-bg);color:var(--fg);border-radius:999px;padding:.25rem .6rem;font-size:.8rem}.chip-tag{color:var(--accent);background:0 0;padding-left:.2rem}.recipe-summary{color:var(--fg-muted);margin:.4rem 0 1.2rem;font-size:.9rem}.recipe-body{border-top:1px solid var(--border);padding-top:.4rem}.recipe-section{margin-top:1.6rem}.section-title{border-left:4px solid var(--accent);margin:0 0 .7rem;padding-left:.5rem;font-size:1.1rem}.recipe-body h3,.step-group-title,.ingredient-group-title{color:var(--fg-muted);margin:0 0 .5rem;font-size:.95rem;font-weight:600}.recipe-body table{border-collapse:collapse;width:100%;margin:.6rem 0;font-size:.9rem}.recipe-body th,.recipe-body td{border:1px solid var(--border);text-align:left;padding:.4rem .5rem}.recipe-body img{max-width:100%}.recipe-body blockquote{border-left:3px solid var(--border);color:var(--fg-muted);margin:.8rem 0;padding:.4rem .8rem;font-size:.9rem}.ingredient-clear-all{color:var(--fg-muted);background:var(--chip-bg);border:1px solid var(--border);cursor:pointer;border-radius:999px;margin:0 0 .8rem auto;padding:.3rem .7rem;font-family:inherit;font-size:.8rem;display:block}.ingredient-group{margin-bottom:1.2rem}.ingredient-group:last-child{margin-bottom:0}.ingredient-rows{flex-direction:column;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.ingredient-row{background:var(--bg-card);border:1px solid var(--border);width:100%;font-family:inherit;font-size:inherit;color:inherit;text-align:left;cursor:pointer;border-radius:10px;grid-template-columns:1.2rem 1fr auto;align-items:baseline;column-gap:.5rem;padding:.55rem .6rem;display:grid}.ingredient-row.is-checked{background:var(--chip-bg);border-color:var(--accent)}.ingredient-row.is-checked .ingredient-name{color:var(--fg-muted);text-decoration:line-through}.ingredient-check{color:var(--accent);font-size:1rem}.ingredient-name{grid-column:2}.ingredient-amount{white-space:nowrap;grid-column:3;font-weight:600}.ingredient-note{color:var(--fg-muted);grid-column:2/span 2;margin-top:.15rem;font-size:.8rem}.ingredient-notes{margin-top:.5rem}.ingredient-note-block{background:var(--chip-bg);color:var(--fg-muted);border-radius:8px;margin:.3rem 0;padding:.4rem .7rem;font-size:.85rem}.step-group{margin-bottom:1.4rem}.step-group:last-child{margin-bottom:0}.step-items{flex-direction:column;gap:.6rem;display:flex}.step-item{background:var(--bg-card);border:1px solid var(--border);border-left:3px solid var(--border);cursor:pointer;border-radius:10px;gap:.7rem;padding:.7rem .8rem;display:flex}.step-item.is-current{border-left-color:var(--accent);background:var(--chip-bg)}.step-item.is-done .step-body{color:var(--fg-muted)}.step-badge{width:1.6rem;height:1.6rem;color:var(--accent-fg);background:var(--accent);cursor:pointer;border:none;border-radius:999px;flex:none;justify-content:center;align-items:center;font-family:inherit;font-size:.8rem;font-weight:700;display:flex}.step-item.is-done .step-badge{background:var(--fg-muted)}.step-body{flex:1;min-width:0}.step-body p{margin:0}.step-body ul{color:var(--fg-muted);margin:.4rem 0 0;padding-left:1.1rem;font-size:.85rem}.progress-bar{background:var(--chip-bg);border-radius:999px;height:1.4rem;margin:.8rem 0;position:relative;overflow:hidden}.progress-bar-fill{background:var(--accent);opacity:.35;height:100%;transition:width .2s}.progress-bar-label{justify-content:center;align-items:center;font-size:.75rem;font-weight:600;display:flex;position:absolute;inset:0}.resume-banner{background:var(--chip-bg);border:1px solid var(--border);border-radius:10px;justify-content:space-between;align-items:center;gap:.6rem;margin-bottom:.6rem;padding:.6rem .8rem;font-size:.85rem;display:flex}.resume-banner-actions{flex:none;gap:.4rem;display:flex}.resume-banner-actions button{border:1px solid var(--border);background:var(--bg-card);cursor:pointer;border-radius:8px;padding:.3rem .6rem;font-family:inherit;font-size:.8rem}.recipe-page.has-fab{padding-bottom:4.5rem}.recipe-page.has-fab.has-timer-bar{padding-bottom:8.5rem}.fab-ingredient{width:calc(min(640px,100%) - 2rem);max-width:600px;color:var(--accent-fg);background:var(--accent);cursor:pointer;z-index:20;border:none;border-radius:999px;padding:.85rem;font-family:inherit;font-size:.95rem;font-weight:700;transition:bottom .15s;position:fixed;bottom:1.1rem;left:50%;transform:translate(-50%);box-shadow:0 6px 18px #0000002e}.fab-ingredient.is-above-timer-bar{bottom:5.1rem}.timer-chip{color:var(--accent);background:var(--chip-bg);border:1px solid var(--accent);cursor:pointer;white-space:nowrap;border-radius:999px;align-items:center;margin:0 .15rem;padding:.05rem .55rem;font-family:inherit;font-size:.85em;font-weight:600;display:inline-flex}.timer-chip.is-active{color:var(--accent-fg);background:var(--accent)}.timer-chip:disabled{opacity:.4;cursor:not-allowed}.temp-highlight{color:var(--accent)}.timer-bar{z-index:40;background:var(--bg-card);border-top:1px solid var(--border);padding:.6rem 1rem .7rem;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 14px #0000001f}.timer-bar-items{flex-wrap:wrap;gap:.5rem;display:flex}.timer-bar-item{background:var(--chip-bg);border-radius:10px;flex:auto;align-items:center;gap:.5rem;min-width:9rem;padding:.4rem .6rem;display:flex;position:relative;overflow:hidden}.timer-bar-item.is-done{background:var(--accent);color:var(--accent-fg)}.timer-bar-fill{background:var(--accent);opacity:.3;z-index:0;width:0%;transition:width 1s linear;position:absolute;inset:0}.timer-bar-item.is-done .timer-bar-fill{display:none}.timer-bar-label,.timer-bar-time,.timer-bar-cancel{z-index:1;position:relative}.timer-bar-label{text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:.8rem;overflow:hidden}.timer-bar-time{font-variant-numeric:tabular-nums;font-size:.95rem;font-weight:700}.timer-bar-cancel{color:inherit;opacity:.7;cursor:pointer;background:0 0;border:none;padding:0 .1rem;font-size:1.1rem;line-height:1}.timer-bar-notice{color:var(--fg-muted);margin:.4rem 0 0;font-size:.72rem}.sheet-overlay{z-index:30;background:#0006;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--bg);border-radius:18px 18px 0 0;flex-direction:column;width:100%;max-height:65vh;display:flex;overflow:hidden}.sheet-handle-row{justify-content:center;padding:.5rem 0 .2rem;display:flex}.sheet-handle{background:var(--border);border-radius:999px;width:2.5rem;height:.3rem}.sheet-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:.4rem 1rem .6rem;display:flex}.sheet-title{margin:0;font-size:1.05rem}.sheet-close{color:var(--fg-muted);cursor:pointer;background:0 0;border:none;padding:.2rem .4rem;font-size:1.4rem;line-height:1}.sheet-body{padding:.8rem 1rem 1.2rem;overflow-y:auto}.search-form{gap:.5rem;margin-bottom:.8rem;display:flex}.search-input{color:var(--fg);background:var(--bg-card);border:1px solid var(--border);border-radius:10px;flex:1;padding:.65rem .8rem;font-family:inherit;font-size:.95rem}.search-submit{color:var(--accent-fg);background:var(--accent);cursor:pointer;border:none;border-radius:10px;padding:.65rem 1rem;font-family:inherit;font-size:.9rem;font-weight:700}.search-result-count{color:var(--fg-muted);margin:0 0 .8rem;font-size:.85rem}.search-results{flex-direction:column;gap:.6rem;margin:0;padding:0;list-style:none;display:flex}.search-result{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:.8rem .9rem;display:block}.search-result-breadcrumb{color:var(--fg-muted);margin-bottom:.2rem;font-size:.75rem}.search-result-title{margin-bottom:.3rem;font-weight:700}.search-result-line{color:var(--fg-muted);margin-top:.15rem;font-size:.85rem}.search-results mark{background:var(--chip-bg);color:var(--accent);border-radius:3px;padding:0 .1rem}.settings-section{margin-bottom:1.8rem}.settings-section-title{color:var(--fg-muted);margin:0 0 .6rem;font-size:.95rem}.settings-options{flex-wrap:wrap;gap:.5rem;display:flex}.settings-option{color:var(--fg);background:var(--bg-card);border:1px solid var(--border);cursor:pointer;border-radius:10px;padding:.6rem 1rem;font-family:inherit}.settings-option.is-active{border-color:var(--accent);color:var(--accent);background:var(--chip-bg);font-weight:700}.settings-preview{color:var(--fg-muted);margin-top:.6rem;font-size:.85rem}
