/* v111 shared layout and component repairs */
:root{--content-width:900px;--bottom-clearance:calc(102px + var(--safe-bottom,0px))}
.bottom-nav{box-sizing:border-box;max-width:var(--content-width);left:50%;right:auto;width:100%;transform:translateX(-50%)}
.home-feed,.me-hero,.me-tabs,.me-tab-body,.cards,.float-bar>.search-pill,.filter-line{box-sizing:border-box;max-width:var(--content-width);margin-left:auto;margin-right:auto}
.me-tabs{width:100%}.cards.grid,.cards.list,#app.mode-me .me-tab-body{padding-bottom:var(--bottom-clearance)!important}
#homeFeed,#messagesPage{padding-bottom:var(--bottom-clearance)}
.label-btn{text-align:left;white-space:normal;overflow-wrap:normal;word-break:normal;line-height:1.45}.label-title-zh{display:block}.label-title-en{display:block;margin-top:4px;font-size:11px;opacity:.6;overflow-wrap:break-word;word-break:normal}
.realm-orbit .realm-symbol{animation:none!important;transition:opacity .26s ease,transform .28s ease;opacity:1;transform:translateY(0);font-size:82px;color:currentColor}
.realm-line{transition:opacity .24s ease;max-width:30em;min-height:4em}
.home-story-map-art{position:absolute;right:2%;top:6%;width:43%;height:88%;fill:#718d8130;stroke:#688378;stroke-width:2;pointer-events:none}.home-story-tile>small,.home-story-tile>b,.home-story-tile>span{position:relative;max-width:58%}.home-story-tile>i{z-index:1}
.community-jump [role=tab]{color:var(--muted);border-bottom:2px solid transparent;border-radius:0}.community-jump [aria-selected=true]{color:var(--accent);border-bottom-color:var(--accent)}
[role=tabpanel][hidden]{display:none!important}.community-sync-note{font-size:12px;line-height:1.7;margin:12px 0 18px}
#memoEditView .tool-bar{position:relative;z-index:5;flex-shrink:0}#memoEditBack{position:relative;z-index:6;pointer-events:auto}#memoEditBack svg{pointer-events:none}.memo-edit-body{min-height:0;overflow:auto}#memoDelete[hidden]{display:none!important}
@media(min-width:960px){.bottom-nav{border:1px solid var(--surface);border-bottom:0;border-radius:20px 20px 0 0}.me-hero,.me-tabs{max-width:var(--content-width)}.me-tab-body{width:100%}.home-feed{padding-left:24px;padding-right:24px}}
@media(prefers-reduced-motion:reduce){.realm-symbol,.realm-line{transition:none!important}}

.float-inner{max-width:var(--content-width)}
#memoEditView:not(.open) #memoEditBack{pointer-events:none}

/* v114: reading order, accessible controls and local recognition */
:root{--reading-muted:#626b7b}
.label-title-en{font-size:12px;opacity:1;color:var(--reading-muted)}
.label-btn{min-height:48px;padding-top:10px;padding-bottom:10px}.label-btn .label-title-zh{font-size:15px;font-weight:600}.label-btn .label-title-en{line-height:1.4}
.round-btn,.text-btn{min-height:44px;min-width:44px}.btn-sm{min-height:44px}.card-flavor{font-size:13px;color:#536172;line-height:1.6;margin:10px 0 0}.keep-ings .more{color:var(--accent);font-size:12px;margin-top:7px}.card-title-en{line-height:1.45}.keep-ings li{overflow-wrap:anywhere}
.home-actions{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr)}.home-actions>[data-home-upload]{background:transparent}.home-actions>[data-home-upload] small{color:#626b7b}.home-wordmark{border:0;background:none;text-align:left;padding:0;cursor:pointer}.home-wordmark>span{font-size:12px;color:#626b7b}.home-wordmark>span::after{content:' ⇄';color:var(--accent)}.home-eyebrow{font-size:12px;color:#687181}.home-greeting{padding-top:26px}
.knowledge-night .knowledge-graph canvas{background:transparent!important}.knowledge-night .knowledge-graph{background:transparent!important}.knowledge-night .knowledge-drawer{width:min(280px,76vw)}
.knowledge-night .knowledge-content{min-width:0}.knowledge-tabs{flex-shrink:0}.knowledge-night .knowledge-tabs{position:relative;z-index:2}.knowledge-night .knowledge-article{max-width:720px;margin:auto;line-height:1.85}.knowledge-article p,.knowledge-article li{overflow-wrap:break-word}.knowledge-article h2{margin-top:28px}
#detailBody>.recipe-abv{float:none;clear:both;width:auto;max-width:none;margin:24px 0;padding:16px;border-radius:16px}.recipe-abv-value{font-size:20px!important}.recipe-knowledge{margin-top:24px}#detailBody .recipe-materials{margin-top:24px}.ing-line{gap:16px}.ing-amt{min-width:70px;max-width:52%;overflow-wrap:break-word}
#detailBody.mixing-mode>.cook-progress,#detailBody.mixing-mode>.recipe-data-gap,#detailBody.mixing-mode>.recipe-knowledge,#detailBody.mixing-mode>.recipe-abv{display:block}#detailBody.mixing-mode .ing-line{position:relative;align-items:start;padding-left:36px}#detailBody.mixing-mode .recipe-method li{position:relative;padding-left:36px;min-height:44px}#detailBody.mixing-mode [data-cook-check]{position:absolute;left:0;top:10px;width:24px;height:24px;margin:0;accent-color:var(--accent)}#detailBody.mixing-mode .recipe-method [data-cook-check]{top:5px}.cook-checked>.ing-name,.cook-checked{color:#687281}.cook-checked>.ing-name{text-decoration:line-through}.cook-progress{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;padding:12px 16px;margin:14px 0;background:var(--chip);border-radius:16px}.cook-progress p{margin:0;font-weight:600}.cook-progress small{grid-column:1/-1;color:#626b7b;line-height:1.6}
.recipe-import-entry{display:flex;gap:14px;align-items:center;justify-content:space-between;padding:18px;border:1px solid #d8e0ed;border-radius:18px;background:#f4f7fc;margin-bottom:24px}.recipe-import-entry b{font-size:16px}.recipe-import-entry p{font-size:13px;color:#626b7b;line-height:1.6;margin:7px 0 0}.recipe-import-entry button{flex-shrink:0;white-space:nowrap}.field-needs-review{border-left:3px solid #b17b35;padding-left:10px}
.recipe-import-dialog{box-sizing:border-box;width:min(720px,calc(100vw - 24px));max-height:calc(100dvh - 32px);padding:24px;border:1px solid #e1e5eb;border-radius:24px;background:#fff;color:#283344;overflow:auto;overscroll-behavior:contain}.recipe-import-dialog::backdrop{background:#14213380;backdrop-filter:blur(5px)}.recipe-import-dialog header{display:flex;align-items:center;justify-content:space-between;gap:16px}.recipe-import-dialog header p{font-size:11px;letter-spacing:.16em;color:#687181;margin:0 0 6px}.recipe-import-dialog h2{font-size:22px;line-height:1.4;margin:0}.recipe-import-dialog [data-import-close]{min-width:44px;min-height:44px;background:#f3f5f8;border:0;border-radius:50%;font-size:22px;color:#33435c}.recipe-import-dialog .import-intro{font-size:14px;line-height:1.8}.recipe-import-dialog textarea{box-sizing:border-box;width:100%;padding:12px;border:1px solid #cbd3df;border-radius:12px;font:inherit;font-size:16px;line-height:1.7;color:#263346;background:white;resize:vertical}.recipe-import-dialog label{display:block}.recipe-import-dialog [data-import-status]{font-size:14px;color:#435a78;line-height:1.7;min-height:24px}.recipe-import-dialog progress{width:100%;accent-color:var(--accent);height:8px}.import-file{padding:16px;border:1px dashed #9caec9;border-radius:14px;background:#f4f7fc;font-weight:600}.import-file input{display:block;margin-top:12px;max-width:100%;font-size:14px}.recipe-import-dialog details{margin:18px 0}.recipe-import-dialog summary{min-height:44px;cursor:pointer;padding:8px 0}.recipe-import-dialog .import-fields{display:grid;grid-template-columns:1fr 1fr;gap:16px}.import-fields>label{font-size:14px;line-height:1.7}.import-fields>label:nth-child(3),.import-fields>label:nth-child(4),.import-fields>label:last-child{grid-column:1/-1}.import-missing textarea{border-color:#b47b32;background:#fffaf2}.import-review-note,.import-warnings{font-size:14px;line-height:1.8}.import-warnings{background:#fff8ed;padding:14px 14px 14px 32px;border-radius:14px}.import-preserve{font-size:14px;line-height:1.8;margin:18px 0}.import-preserve input{width:20px;height:20px;vertical-align:middle;accent-color:var(--accent)}.import-apply{width:100%}.recipe-import-dialog .muted{color:#626b7b;font-size:12px;line-height:1.8}
:focus-visible{outline:2px solid var(--accent);outline-offset:4px}
@media(max-width:430px){.recipe-import-entry{align-items:stretch;flex-direction:column}.recipe-import-entry button{align-self:start}.recipe-import-dialog{padding:18px}.recipe-import-dialog h2{font-size:20px}.recipe-import-dialog .import-fields{grid-template-columns:1fr}.import-fields>label{grid-column:1/-1}}
@media(prefers-reduced-motion:reduce){.recipe-import-dialog::backdrop{backdrop-filter:none}}
#detailBody.mixing-mode>.cook-progress{display:grid!important}#detailBody.mixing-mode>.recipe-knowledge,#detailBody.mixing-mode>.recipe-abv,#detailBody.mixing-mode>.recipe-data-gap{display:block!important}
.knowledge-find-dialog{box-sizing:border-box;position:fixed;top:calc(72px + env(safe-area-inset-top,0px));bottom:auto;margin:0 auto;width:min(880px,calc(100vw - 24px));padding:18px;background:#192c41;color:#e1eafa;border:1px solid #47617c;border-radius:20px;overflow:auto;overscroll-behavior:contain}.knowledge-find-dialog::backdrop{background:#07101d99;backdrop-filter:blur(4px)}.knowledge-find-dialog header{display:flex;gap:12px;align-items:center}.knowledge-find-dialog label{flex:1;font-size:12px;color:#b9cbe0}.knowledge-find-dialog input{box-sizing:border-box;width:100%;font:inherit;font-size:16px;padding:12px;background:#122238;border:1px solid #536e8d;color:#edf4ff;border-radius:12px;margin-top:6px}.knowledge-find-dialog .round-btn{color:#d8e7f7}.knowledge-find-dialog .nav-item{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:48px;border-bottom:1px solid #33475e;color:#e1eafa}.knowledge-find-dialog small,.knowledge-find-dialog .knowledge-muted{color:#b9cbe0}.general-actions{display:flex;gap:12px;flex-wrap:wrap}
.recipe-import-dialog .import-fields{grid-template-columns:1fr}.import-ingredients{grid-column:1/-1}.import-ingredients h3{font-size:14px;font-weight:500;margin:0 0 8px}.import-ingredient-head,.import-ingredient-row{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) 36px;gap:8px}.import-ingredient-head{font-size:12px;color:#626b7b;margin-bottom:8px}.import-ingredient-row{margin-bottom:8px;align-items:center}.import-ingredient-row input{box-sizing:border-box;min-width:0;width:100%;padding:10px 8px;border:1px solid #cbd3df;border-radius:10px;font:inherit;font-size:16px;color:#263346;background:white;min-height:44px}.import-ingredient-row.import-missing input:placeholder-shown{border-color:#b47b32;background:#fffaf2}.import-ingredient-row button{border:0;background:none;color:#6b7687;font-size:20px;min-height:44px;min-width:36px}.recipe-import-dialog .import-optional .import-fields{grid-template-columns:1fr 1fr}.recipe-import-dialog .import-optional label{grid-column:auto!important}.import-optional label:last-child{grid-column:1/-1!important}.import-ingredient-row:focus-within{position:relative;z-index:1}
@media(max-width:360px){.import-ingredient-head,.import-ingredient-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 30px;gap:5px}.recipe-import-dialog .import-optional .import-fields{grid-template-columns:1fr}}

/* v117: aligned category hierarchy and comfortable touch targets */
.drawer .label-row{min-width:0;align-items:stretch}
.drawer .label-btn{min-width:0;flex-direction:column;align-items:flex-start;justify-content:center;min-height:64px;padding:10px 12px 10px 16px;gap:0;overflow-wrap:anywhere}
.drawer .label-btn.child{min-height:56px;padding-left:34px}
.drawer .label-title-zh,.drawer .label-title-en{max-width:100%;text-align:left}
.drawer .label-title-zh{line-height:1.45}
.drawer .label-title-en{margin-top:3px;line-height:1.4;font-weight:400}
.drawer .chev,.drawer .chev-spacer{width:44px;min-width:44px}
.drawer .chev{min-height:44px;padding:0;justify-content:center;border-radius:12px}
.drawer .chev:active{background:var(--accent-tint)}
.quick-filters{max-width:var(--content-width);overscroll-behavior-x:contain}
.quick-filters button{min-height:44px;white-space:nowrap}
.me-account-drawer .lab-switch-button{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:6px;line-height:1.5}
.me-account-drawer .lab-switch-button span{margin-top:0}
.drawer .nav-item,.knowledge-category-drawer .nav-item{overflow-wrap:break-word}
.drawer button:focus-visible,.me-account-drawer button:focus-visible,.quick-filters button:focus-visible{outline:2px solid var(--accent,#3659ac);outline-offset:-3px}
.knowledge-night .drawer button:focus-visible{outline-color:#b5d5ff}
@media(prefers-reduced-motion:no-preference){.drawer .label-btn,.quick-filters button{transition:background-color .15s ease,color .15s ease}}

.import-json-picker{display:grid!important;gap:10px;padding:16px;background:#f4f7fc;border:1px solid #d8e0ed;border-radius:14px;margin:16px 0}.import-json-picker select{width:100%;min-width:0;min-height:48px;box-sizing:border-box;font:inherit;font-size:16px;border:1px solid #b8c6da;border-radius:10px;padding:10px;background:#fff;color:#283344}.import-json-picker small{font-size:12px;line-height:1.7;color:#626b7b}

/* v123: parameter reference reading layout */
.parameter-reference-chip{display:inline-flex;align-items:center;min-height:44px;padding:8px 14px;border-radius:12px;background:#edf2fa;color:#3d5c83;font-size:13px;font-weight:600}
.parameter-reference{margin-top:24px;min-width:0;font-size:15px;line-height:1.85;color:var(--text)}
.parameter-reference .parameter-intro{padding:18px 20px;margin:0 0 28px;background:#f4f6f9;border-left:3px solid #7891b2;border-radius:0 14px 14px 0;color:#56667b;font-size:14px}
.parameter-reference .parameter-heading{font-size:19px;line-height:1.5;margin:32px 0 12px}
.parameter-table-hint{font-size:12px;color:#687589;margin:0 0 8px}
.parameter-table-wrap{width:100%;overflow-x:auto;overscroll-behavior-x:contain;border:1px solid #dce3ed;border-radius:14px;-webkit-overflow-scrolling:touch}
.parameter-table-wrap:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.parameter-table-wrap table{width:100%;min-width:640px;border-collapse:separate;border-spacing:0;text-align:left;font-size:14px;line-height:1.75}
.parameter-table-wrap th,.parameter-table-wrap td{padding:14px 16px;border-bottom:1px solid #e2e7ee;vertical-align:top;font-weight:400}
.parameter-table-wrap thead th{background:#eaf0f8;color:#354e70;font-weight:600;white-space:nowrap}
.parameter-table-wrap tbody th{font-weight:600;min-width:150px}
.parameter-table-wrap tbody tr:nth-child(even){background:#f7f9fc}
.parameter-table-wrap tbody tr:last-child>*{border-bottom:0}
.parameter-table-wrap td:nth-child(2){min-width:85px}
.parameter-steps{padding-left:24px;margin:16px 0}.parameter-steps li{padding:8px 0 8px 4px}
.parameter-reference .parameter-paragraph{margin:14px 0}
@media(min-width:720px){.parameter-table-hint{display:none}}

.recipe-review-gap{border-color:#d8c9aa;background:#fcf8ee}.recipe-review-gap strong{color:#795e36}.recipe-review-gap ul{padding-left:20px;font-size:13px;line-height:1.8;color:#6f6251}.recipe-review-gap li{margin:6px 0}

.verified-reference{margin:20px 0;padding:18px;border:1px solid #cfdced;border-radius:16px;background:#f1f5fc}.verified-reference h3{font-size:16px;margin:0 0 10px}.verified-reference p{font-size:13px;color:#556981;line-height:1.8}.verified-reference button{margin:4px 8px 4px 0;min-height:44px}.reference-return{margin:16px 0;color:var(--accent)}.review-archive-notice{max-width:var(--content-width);margin:12px auto;padding:14px 18px;border:1px solid #e4d6ba;border-radius:14px;background:#fcf8ee;box-sizing:border-box;font-size:13px;line-height:1.8}.review-archive-notice[hidden]{display:none!important}.review-archive-notice p{margin:0}.review-archive-notice .text-btn{margin-top:6px;color:var(--accent)}
