/* ivy market · locally useful, quietly considered. Loaded after the application styles. */
:root {
  --green:#173f36; --green-dark:#103329; --lime:#d8e887;
  --ink:#203b33; --muted:#66746a; --bg:#f7f5ef; --line:#dce0d5;
  --soft:#e9eee2; --danger:#9d4438; --white:#fffefa;
  --shadow:0 12px 36px #173f360c;
  --ivy-serif:Georgia,"Times New Roman",serif;
  --ivy-sans:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
}
html { scroll-behavior:smooth; scroll-padding-top:112px; }
body { background:var(--bg); color:var(--ink); font:15px/1.7 var(--ivy-sans); text-rendering:optimizeLegibility; }
::selection { background:var(--lime); color:var(--green); }
button,input,select,textarea { font-family:inherit; }
button { line-height:1.5; }
button,a,input,select,textarea { touch-action:manipulation; }
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible { outline:3px solid #789947; outline-offset:4px; }
a { text-underline-offset:4px; }
img,svg { max-width:100%; }
.container { max-width:1312px; padding-left:40px; padding-right:40px; }
.prototype-ribbon { min-height:36px; padding:6px 24px; gap:11px; background:var(--green); color:#f7f5ef; font-size:12px; letter-spacing:.1px; }
.prototype-ribbon>span:not(.live-dot) { opacity:1; color:#e0e6d9; }
.prototype-ribbon .live-dot { background:var(--lime); width:5px; height:5px; }
.prototype-ribbon button { min-height:24px; font-size:12px; color:var(--lime); margin-left:16px; }
.site-header { background:#f7f5eff5; border-bottom:1px solid var(--line); backdrop-filter:blur(16px); }
.header-inner { max-width:1312px; min-height:100px; padding:20px 40px; gap:46px; }
.logo,.ivy-logo { gap:11px; min-height:48px; }
.brand-mark,.ivy-brand-leaf { width:35px; height:42px; border-radius:0; transform:none; background:transparent; color:var(--green); }
.brand-mark svg,.ivy-brand-leaf svg { width:33px; height:38px; transform:none; stroke-width:1.3; }
.ivy-logo .ivy-brand-image { width:48px; height:48px; flex:0 0 48px; border-radius:12px; overflow:hidden; }
.ivy-brand-image img { display:block; width:100%; height:100%; object-fit:contain; }
.brand-title { display:block; font:400 36px/1.05 var(--ivy-serif); letter-spacing:-1.8px; color:var(--green); }
.brand-sub { margin-top:7px; font-size:11px; line-height:1.3; letter-spacing:2px; color:var(--muted); }
.desktop-nav { gap:28px; }
.desktop-nav button { min-height:44px; font-size:14px; color:#637167; padding:12px 0; }
.desktop-nav button:hover { color:var(--green); }
.desktop-nav button.active { color:var(--green); font-weight:600; }
.desktop-nav button.active:after { width:100%; height:2px; border-radius:0; left:0; bottom:0; background:var(--green); }
.header-actions { gap:13px; }
.header-requests { min-height:44px; gap:8px; font-size:13px; }
.header-my { padding:3px; min-height:44px; }
.avatar { width:38px; height:38px; background:#dce4d5; color:var(--green); font-size:14px; }
.login-btn { min-height:44px; padding:9px 13px; border:1px solid #ced6c7; border-radius:6px; background:transparent; font-size:13px; }
.login-btn:hover { background:var(--soft); }
.btn { min-height:46px; border-radius:6px; padding:11px 20px; background:var(--green); color:var(--white); font-size:14px; font-weight:550; line-height:1.5; transition:background .18s ease,border-color .18s ease; }
.btn:hover:not(:disabled) { background:#285647; transform:none; }
.btn.secondary { background:var(--soft); color:var(--green); }
.btn.outline { border-color:#aab9a2; background:transparent; color:var(--green); }
.btn.outline:hover:not(:disabled) { background:#e9eee2; border-color:#6f866d; }
.btn.white { color:var(--green); background:var(--white); }
.btn.danger { color:var(--danger); background:#f3e6df; }
.btn.small { min-height:42px; border-radius:5px; font-size:13px; padding:8px 13px; }
.btn svg { width:18px; height:18px; }
.icon-btn { width:44px; height:44px; border-radius:5px; }
.icon-btn:hover { background:var(--soft); }
.text-btn { min-height:38px; padding:7px 0; font-size:13px; color:#49654e; }
.text-btn:hover { color:var(--green); }
.dot-badge { background:#9b5942; font-size:11px; min-width:18px; height:18px; }
.live-toolbar { padding:17px 0 0; min-height:45px; color:#647265; font-size:12px; }
.live-toolbar>span { gap:7px; }
.live-toolbar svg { width:15px; height:15px; }
.live-toolbar .text-btn { min-height:32px; font-size:12px; }

/* Editorial introduction and practical market entry points. */
.hero,.hero.ivy-hero { display:grid; grid-template-columns:1.15fr 1fr; align-items:center; gap:36px; height:auto; min-height:390px; margin-top:19px; padding:42px 46px; border-radius:10px; border:1px solid #dce2d1; background:#e9ede0; overflow:hidden; }
.hero-content,.ivy-hero-copy { width:auto; position:relative; z-index:1; }
.hero-eyebrow { display:flex; align-items:center; gap:8px; color:#566d4f; font-size:11px; line-height:1.6; font-weight:500; letter-spacing:1.8px; }
.hero-eyebrow svg { width:16px; height:16px; flex-shrink:0; }
.hero h1 { font-size:clamp(37px,3.4vw,48px); line-height:1.42; font-weight:600; letter-spacing:-.8px; color:var(--green); margin:17px 0 18px; }
.hero h1 span { color:#6c805a; }
.hero p,.hero-content p { display:block; color:#536750; font-size:14px; line-height:1.9; max-width:430px; width:auto; margin:0 0 26px; }
.ivy-hero-actions { display:flex; flex-wrap:wrap; align-items:center; gap:12px; }
.ivy-hero-actions .btn { min-width:140px; }
.ivy-hero-wanted { font-size:12px; margin-top:4px; }
.hero-badges { gap:16px; color:#4c6549; font-size:12px; margin-top:19px; flex-wrap:wrap; }
.hero-badges span { display:flex; gap:5px; align-items:center; }
.hero-badges svg { width:15px; height:15px; }
.hero-art,.ivy-hero-aside { display:flex; flex-direction:column; align-items:center; justify-content:center; position:relative; top:auto; right:auto; width:auto; min-width:0; padding:0; opacity:1; }
.hero-art>svg,.ivy-hero-illustration { display:block; width:100%; max-width:440px; height:250px; overflow:visible; }
.ivy-hero-kicker { color:#5f7553; font-size:10px; letter-spacing:2px; text-align:center; margin-bottom:5px; }
.hero .ivy-hero-statement { font:400 28px/1.2 var(--ivy-serif); color:var(--green); letter-spacing:-.4px; text-align:center; margin:10px 0 5px; }
.hero .ivy-hero-note,.hero-art .hero-note { position:static; display:block; color:#68765d; font-size:11px; line-height:1.6; letter-spacing:.8px; text-align:center; }
.feature-strip { padding:23px 0; font-size:12px; color:#6b7769; margin-bottom:28px; gap:16px; }
.feature-strip strong { color:var(--green); font-weight:550; }
.feature-strip svg { color:#6b805c; width:18px; height:18px; }
.ivy-paths { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:0; margin:24px 0 44px; border:1px solid var(--line); border-radius:8px; background:#fffefa; overflow:hidden; }
.ivy-path-card { display:flex; min-width:0; align-items:center; gap:15px; padding:23px 25px; min-height:108px; text-align:left; }
.ivy-path-card+.ivy-path-card { border-left:1px solid var(--line); }
.ivy-path-card:hover { background:#eef1e6; }
.ivy-path-icon { flex:0 0 43px; width:43px; height:43px; display:grid; place-items:center; background:#e9eedf; border-radius:50%; color:#466443; }
.ivy-path-icon svg { width:22px; height:22px; }
.ivy-path-copy { flex:1; min-width:0; }
.ivy-path-title { display:block; margin:0 0 3px; font-size:15px; font-weight:600; line-height:1.55; }
.ivy-path-copy>span { display:block; margin:0; font-size:12px; color:var(--muted); line-height:1.6; }
.ivy-path-card>svg { width:18px; height:18px; color:#70846a; flex-shrink:0; }
.ivy-market-section { scroll-margin-top:122px; }
.eyebrow { color:#7a896b; font-size:10px; line-height:1.6; letter-spacing:1.8px; margin-bottom:7px; }
.section-heading { align-items:flex-end; margin-bottom:23px; gap:18px; }
.section-heading h2 { font-size:28px; line-height:1.45; font-weight:600; letter-spacing:-.3px; }
.section-heading p { color:var(--muted); font-size:13px; margin-top:6px; }
.section-heading .count { color:var(--muted); font-size:12px; }
.section-heading .count b { color:var(--green); font-size:15px; font-weight:600; }

/* Wide, legible search and filters. */
#search-form { background:#fffefa; border:1px solid var(--line); border-radius:8px; padding:20px 22px 16px; margin-bottom:27px; }
.search-row { display:flex; gap:10px; margin-bottom:15px; }
.search-box { height:50px; gap:10px; padding:0 0 0 14px; background:#f7f7f0; border:1px solid #cdd6c5; border-radius:5px; }
.search-box:focus-within { border-color:#57744a; box-shadow:0 0 0 2px #dce6ce; }
.search-box svg { color:#718167; width:20px; }
.search-box input { font-size:14px; color:var(--green); }
.search-box input::placeholder { color:#778372; }
.search-box input:focus-visible { outline:none; }
.search-box .text-btn { align-self:stretch; min-width:65px; margin:4px; padding:4px 13px; border-radius:3px; background:var(--green); color:var(--white); text-decoration:none; font-size:13px; }
.search-box .text-btn:hover { background:#285647; }
.filter-select { min-width:139px; max-width:185px; min-height:50px; border:1px solid #cdd6c5; border-radius:5px; padding:11px 25px 11px 13px; color:#435c46; background:#fffefa; font-size:13px; letter-spacing:0; }
.filters-bottom { display:flex; gap:18px; align-items:center; justify-content:space-between; margin:0; }
.chips { gap:4px; flex-wrap:wrap; }
.chip { min-height:39px; border-radius:4px; padding:8px 12px; color:#62715e; font-size:13px; }
.chip.active { background:#e3ead8; color:var(--green); font-weight:600; }
.chip:not(.active):hover { background:#f0f2e9; color:var(--green); }
.available-only { min-height:39px; gap:8px; font-size:12px; color:#62715e; }
.available-only input { width:17px; height:17px; margin:0; }

/* Product photography and price do the work. */
.product-grid { grid-template-columns:repeat(4,minmax(0,1fr)); gap:26px 22px; }
.product-card { border:1px solid #dce1d3; background:#fffefa; border-radius:8px; box-shadow:none; transition:border-color .18s ease,box-shadow .18s ease; }
.product-card:hover { transform:none; border-color:#9bae8c; box-shadow:0 7px 23px #173f360c; }
.product-image { aspect-ratio:1.13; background:#e9eddf; }
.product-image>img { transition:transform .3s ease; }
.product-card:hover .product-image>img { transform:scale(1.025); }
.product-image .no-photos { width:100%; height:100%; min-height:180px; background:#e8eddf; color:#8a9d7b; }
.product-image .no-photos svg { width:46px; height:46px; stroke-width:1.2; }
.product-body { padding:17px 17px 14px; }
.product-title { font-size:15px; font-weight:550; line-height:1.6; margin-bottom:5px; -webkit-line-clamp:2; min-height:24px; }
.product-meta { font-size:12px; color:#6e7b67; }
.price-row { gap:7px; flex-wrap:wrap; margin:17px 0 15px; }
.price { font-size:29px; color:var(--green); font-weight:600; letter-spacing:-.8px; line-height:1.1; }
.price small { font-size:12px; font-weight:500; margin-right:4px; letter-spacing:0; }
.price.free-price { font-size:23px; letter-spacing:-.3px; }
.pickup-tag { font-size:11px; color:#77846e; padding-left:3px; }
.product-footer { padding-top:12px; gap:8px; border-top-color:#e7eadf; font-size:11px; color:#7b8672; }
.product-footer>span:first-child { color:#65765a; }
.product-footer svg { width:13px; height:13px; }
.product-footer .date-label { font-size:11px; }
.product-badge { top:12px; left:12px; border-radius:3px; padding:4px 8px; background:#fffefae8; color:#455b41; font-size:11px; }
.product-badge.free { background:var(--lime); color:var(--green); }
.product-badge.unavailable { background:#f1e5d3; color:#82603d; }
.save-button { width:40px; height:40px; top:9px; right:9px; border-radius:50%; background:#fffefaed; color:#58704f; }
.save-button svg { width:19px; height:19px; }
.save-button.saved { color:#9c5845; }
.save-button.saved svg { fill:#9c5845; }
.empty,.empty.real { grid-column:1/-1; padding:58px 24px; border:1px solid #d9e1ce; border-radius:8px; background:#eef1e6; color:#687a5b; }
.empty.real .empty-bag { width:60px; height:60px; margin-bottom:20px; border:1px solid #ccd8bc; background:#e4ecd6; border-radius:50%; }
.empty.real .empty-bag svg { width:28px; height:28px; color:#5c784c; stroke-width:1.4; }
.empty.real h3 { font-size:23px; font-weight:550; line-height:1.5; color:var(--green); margin:0 0 9px; }
.empty.real p { max-width:480px; font-size:14px; line-height:1.9; color:#6d7b61; margin-bottom:23px; }
.empty-actions { gap:11px; flex-wrap:wrap; }
.loading { grid-column:1/-1; min-height:260px; color:#697b60; }
.loading p { font-size:14px; }
.spinner { border-color:#d4ddc8; border-top-color:var(--green); }
.skeleton { background:#e9eddf; border-radius:8px; }
.mini-banner,.ivy-community-note { margin-top:35px; padding:24px 28px; border-radius:7px; background:#efeede; border-color:#e0e0c9; gap:22px; }
.mini-banner h3 { font-size:17px; font-weight:550; margin-bottom:6px; }
.mini-banner p { color:#727b60; font-size:13px; }
.pagination { gap:20px; margin:30px 0; }
.pagination span { font-size:13px; }

/* Secondary pages, account tools and the operational screens. */
.page-intro { padding:35px 0 27px; }
.page-intro .eyebrow { color:#70845e; font-size:12px; letter-spacing:1px; margin-bottom:9px; }
.page-intro h1,.free-intro h1 { font-size:32px; line-height:1.5; font-weight:600; letter-spacing:-.5px; }
.page-intro p { color:var(--muted); font-size:14px; }
.free-intro { padding:34px 36px; margin:24px 0 32px; border:1px solid #dce2d1; border-radius:8px; background:#e9ede0; }
.free-intro p { font-size:14px; color:#63745a; line-height:1.8; }
.want-grid { gap:22px; }
.want-card { padding:26px; border:1px solid var(--line); border-radius:8px; background:var(--white); }
.want-card h3 { font-size:19px; font-weight:550; margin:20px 0 11px; }
.want-card p { color:var(--muted); font-size:14px; height:auto; min-height:78px; }
.want-top>span:last-child { font-size:12px; color:#7a8670; }
.category-label { padding:4px 8px; border-radius:3px; font-size:12px; background:#edf1e4; color:#617650; }
.want-budget { font-size:26px; font-weight:600; margin:23px 0 13px; }
.want-budget small { font-size:12px; }
.want-location { font-size:13px; color:#667a57; margin-bottom:21px; }
.want-location svg { width:15px; height:15px; }
.notice { gap:10px; padding:14px 16px; background:#edf2e5; color:#53694a; font-size:13px; border:1px solid #dfe7d4; border-radius:5px; line-height:1.85; }
.notice svg { width:18px; height:18px; margin-top:3px; }
.notice.warning { color:#806434; background:#f7f1e1; border-color:#e9dfc7; }
.notice.danger { color:#934d40; background:#f8ece4; border-color:#eed8cc; }
.notice p { color:inherit; font-size:inherit; }
.tabbar { gap:6px; padding-bottom:22px; }
.tabbar button { min-height:44px; padding:10px 17px; font-size:14px; border-radius:5px; color:#6c7b60; }
.tabbar button.active { background:var(--green); color:var(--white); }
.tabbar button:not(.active):hover { background:#e9eddf; }
.stack { gap:16px; }
.request-card,.admin-card,.account-panel,.my-item,.audit-row,.blocked-row { padding:24px; border:1px solid var(--line); border-radius:7px; background:var(--white); }
.request-card { display:block; }
.request-title { align-items:flex-start; }
.request-title h3 { font-size:17px; }
.request-person { font-size:13px; color:#6d7b61; margin:9px 0 12px; }
.request-message { padding:14px 16px; border-radius:4px; background:#f4f5ee; font-size:14px; color:#53684a; line-height:1.85; }
.request-actions { gap:10px; margin-top:17px; }
.request-actions .btn,.request-actions .text-btn { font-size:13px; }
.request-state-message,.request-card .expired-tip { font-size:13px; color:#65755a; }
.private-pill { font-size:12px; color:#6f7d63; }
.private-pill svg { width:14px; height:14px; }
.status,.light-tag { border-radius:3px; padding:4px 8px; font-size:12px; line-height:1.5; }
.status { background:#eceee5; color:#627257; }
.status.pending,.status.open { color:#886828; background:#f6edce; }
.status.accepted,.status.published,.status.approved,.status.resolved { background:#e3edd8; color:#4a6c36; }
.status.hidden,.status.rejected,.status.restricted { background:#f4e5dc; color:#9b5742; }
.status.revoked,.status.expired,.status.closed,.status.withdrawn { background:#eceee5; color:#6b775f; }
.profile-banner { margin:28px 0; padding:30px; gap:20px; background:#e9ede0; border:1px solid #dce2d1; border-radius:8px; }
.profile-banner .avatar { background:#f7f8ee; width:62px; height:62px; font-size:24px; }
.profile-banner h1 { font-size:26px; font-weight:550; }
.profile-banner p { font-size:13px; color:#667859; }
.profile-banner .me-actions .btn { font-size:13px; }
.account-stats { gap:35px; }
.account-stats strong { font-size:27px; font-weight:550; }
.account-stats span { font-size:12px; color:#6c7b60; }
.account-grid { gap:22px; }
.account-panel h3 { font-size:18px; font-weight:550; }
.account-panel p { font-size:14px; color:var(--muted); }
.account-panel .btn { font-size:13px; }
.my-item { padding:19px; gap:19px; }
.request-thumb,.my-item .request-thumb { width:96px; height:85px; border-radius:4px; background:#e8eddd; }
.my-item h3 { font-size:16px; }
.my-item p { color:#68795b; font-size:13px; }
.my-item .moderation-note { font-size:12px; }
.my-item-controls { gap:8px; }
.my-item-controls select { min-height:42px; border-radius:4px; border-color:#c9d3be; font-size:13px; padding:8px 10px; }
.admin-stats { gap:20px; margin:24px 0; }
.stat-card { border-radius:6px; padding:23px 27px; background:#fffefa; }
.stat-card span { font-size:13px; color:#68785b; }
.stat-card strong { font-size:32px; font-weight:550; }
.admin-card h3 { font-size:18px; line-height:1.6; }
.admin-card .meta { font-size:12px; color:#6d7a61; line-height:1.8; }
.admin-card p,.admin-card .body { font-size:14px; color:#617355; line-height:1.9; }
.admin-card .actions .btn { font-size:13px; }
.admin-card input,.admin-card textarea { border-color:#cdd6c4; border-radius:4px; min-height:46px; font-size:15px; background:#fbfcf6; }
.admin-card details { font-size:13px; }
.admin-card summary { padding:10px 0; cursor:pointer; }
.admin-card pre { border-radius:4px; font-size:12px; background:#f1f4e8; }
.table-wrap { padding:10px 18px; border-radius:7px; background:var(--white); }
.user-table { font-size:13px; }
.user-table th,.user-table td { padding:15px 11px; font-size:13px; }
.user-table th { color:#697a5b; }
.audit-row { font-size:14px; padding:20px 22px; }
.audit-row h3 { font-size:15px; }
.audit-row p { color:#647659; }
.audit-row code { font-size:12px; }
.blocked-row p { font-size:14px; }
.blocked-row span,.admin-empty { font-size:13px; color:#6a785f; }
.page-card,.publish-card { padding:34px; background:var(--white); border-color:var(--line); border-radius:8px; }
.page-card h2 { font-size:28px; font-weight:550; }
.page-card p { font-size:14px; }
.setup-card { max-width:660px; margin:40px auto; }
.auth-hero-mark .brand-mark { background:transparent; color:var(--green); }
.auth-hero-mark span:last-child { color:#697b5c; font-size:12px; }
.info-grid { gap:20px; }
.info-grid article { padding:23px; border-radius:6px; }
.info-grid h3 { font-size:16px; }
.info-grid p { font-size:13px; color:#6b7b5e; }

/* Publishing, contact requests and listing detail. */
.form-wrap { max-width:830px; margin-bottom:45px; }
.editor-head h1 { font-size:29px; line-height:1.5; font-weight:600; }
.editor-head span,.editor-caption { font-size:13px; color:#6c7963; }
.editor-caption { line-height:1.8; margin:9px 0 25px; }
.form-grid { gap:20px; margin-bottom:20px; }
.field { margin-bottom:20px; min-width:0; }
.field>span,.field-label { font-size:14px; font-weight:550; color:#2f4d37; margin-bottom:8px; }
.field input,.field select,.field textarea { font-size:15px; color:#2f4b34; background:#fffefa; border-color:#c8d2be; border-radius:4px; padding:12px 13px; min-height:48px; line-height:1.5; }
.field input::placeholder,.field textarea::placeholder { color:#87917c; }
.field input:disabled { background:#f0f3e8; color:#768568; }
.field textarea { min-height:130px; }
.field .help { color:#6e7e60; font-size:12px; line-height:1.75; margin-top:6px; font-weight:400; }
.form-errors { background:#fbede3; border-radius:4px; padding:12px 14px; color:#964d37; font-size:13px; }
.check-line { min-height:44px; align-items:flex-start; gap:10px; font-size:13px; color:#64765b; }
.check-line input { margin-top:6px; width:18px; height:18px; }
.type-selector { background:#eef2e4; border:1px solid #dce4ce; border-radius:5px; padding:4px; gap:5px; margin-bottom:26px; }
.type-selector button { min-height:44px; border-radius:3px; font-size:14px; color:#65785a; padding:10px 5px; }
.type-selector button.active { background:var(--green); color:var(--white); box-shadow:none; }
.upload-box { padding:30px 20px; background:#f4f6eb; border:1px dashed #a8bb90; border-radius:5px; color:#647d50; }
.upload-box:hover { background:#eef2e1; }
.upload-box:focus-within { outline:3px solid #789947; outline-offset:4px; }
.upload-box>input:focus-visible { outline:none; }
.upload-box svg { width:28px; height:28px; }
.upload-box p { font-size:14px; color:#4f6b3f; margin-top:6px; }
.upload-box small { color:#76866a; font-size:12px; }
.image-previews { gap:13px; margin:15px 0; }
.preview-image { width:100px; height:90px; }
.preview-image img { border-radius:4px; }
.preview-image button { top:-6px; right:-6px; width:30px; height:30px; background:var(--green); border:2px solid var(--white); }
.preview-image button svg { width:15px; height:15px; }
.preview-image button::after { content:""; position:absolute; inset:-7px; }
.subtle { font-size:12px; color:#6e7d60; }
.breadcrumbs { gap:10px; margin-top:30px; color:#76816c; font-size:13px; }
.breadcrumbs button { min-height:40px; }
.detail-layout { grid-template-columns:1.16fr 1fr; gap:34px; margin:14px 0 40px; }
.detail-layout .detail-image { aspect-ratio:1.12; border:1px solid #dce3cf; border-radius:8px; background:#edf0e3; }
.detail-image>img { object-fit:contain; }
.detail-image .want-placeholder { min-height:280px; background:#e9eedf; color:#6d8459; }
.want-placeholder svg { width:74px; height:74px; }
.want-placeholder span { font-size:15px; }
.detail-panel { padding:30px; border-color:var(--line); border-radius:8px; background:var(--white); }
.tag-line { gap:7px; }
.light-tag { border-color:#d5ddc8; color:#677b55; }
.detail-layout .detail-heading { margin:20px 0 0; }
.detail-layout .detail-heading h1 { font-size:29px; font-weight:600; line-height:1.5; letter-spacing:-.4px; }
.detail-layout .detail-price { margin:20px 0; }
.detail-price .price { font-size:38px; }
.detail-meta { font-size:13px; color:#6d7e5e; gap:7px; margin-top:14px; }
.detail-layout .detail-description,.detail-description { min-height:100px; font-size:14px!important; line-height:1.95; color:#586b4c!important; background:#f4f6ed; padding:18px; border-radius:4px; margin:21px 0!important; }
.seller-row { padding:19px 0; gap:12px; margin-bottom:22px; }
.seller-info strong { font-size:15px; font-weight:550; }
.seller-info p { font-size:12px; color:#6f7d64; line-height:1.8; }
.seller-row .text-btn { font-size:12px; }
.contact-guard { font-size:12px; color:#5e7650; line-height:1.75; padding:13px 14px; border-radius:4px; background:#f0f4e6; }
.contact-guard svg { flex-shrink:0; }
.detail-tools { gap:14px; flex-wrap:wrap; margin-top:14px; }
.detail-tools button { min-height:44px; font-size:13px; gap:6px; color:#637954; }
.detail-tools svg { width:17px; height:17px; }
.photo-count { bottom:12px; left:12px; border-radius:3px; padding:5px 9px; font-size:12px; background:#fffefaed; color:#46633e; }
.photo-thumbs { gap:9px; margin-top:11px; flex-wrap:wrap; }
.photo-thumbs button { width:70px; height:62px; border-color:#cbd5bc; border-radius:4px; }
.selected-photo { outline-color:#6e8a57; outline-offset:2px; }
.contact-box { padding:20px; margin:20px 0; border-radius:5px; border-color:#d3dec3; background:#eff4e4; }
.contact-box>span,.contact-caption { font-size:13px; color:#6a7f5b; }
.contact-value { font-size:20px; color:var(--green); gap:12px; }
.contact-box p { font-size:12px; color:#627851; }
.detail-foot { font-size:12px; color:#718365; }
.secret-box { padding:20px; margin:20px 0; background:#eff3e4; border-color:#d5dfc5; border-radius:5px; }
.secret-box p { font-size:13px; }
.secret-box code { font-size:16px; }

/* Dialogs and the site furniture. */
dialog { width:620px; max-width:calc(100vw - 40px); max-height:calc(100dvh - 64px); margin:auto; padding:0; background:#fffefa; border:1px solid #d7dfcb; border-radius:10px; color:var(--ink); box-shadow:0 22px 90px #102b2438; overscroll-behavior:contain; }
dialog::backdrop { background:#15352cd1; backdrop-filter:blur(3px); }
.modal-head { padding:20px 28px; gap:15px; border-bottom-color:var(--line); background:#fffefaf7; }
.modal-head h2 { font-size:21px; line-height:1.5; letter-spacing:-.3px; font-weight:550; }
.modal-body { padding:28px; }
.modal-body p { color:#64765a; font-size:14px; line-height:1.9; }
.modal-body .lead { color:#3a5937; font-size:16px; }
.modal-body h3 { font-size:17px; font-weight:550; margin:24px 0 9px; }
.modal-body .notice p { font-size:13px; }
.modal-actions { gap:11px; margin-top:26px; }
.auth-intro { margin-bottom:25px; }
.auth-intro h3 { font-size:25px; line-height:1.5; margin:0 0 9px; color:var(--green); font-weight:550; }
.auth-intro p { font-size:14px; }
.auth-switch { flex-wrap:wrap; gap:20px; margin-top:20px; }
.auth-switch .text-btn { font-size:13px; }
.rules-copy { color:#607653; font-size:14px; line-height:1.95; }
.rules-copy h3 { font-size:17px; color:#365834; }
.guide-step { gap:15px; margin:21px 0; }
.guide-step>b { width:32px; height:32px; border-radius:4px; font-size:14px; background:#e6edda; }
.guide-step h3 { font-size:16px; }
.guide-step p { font-size:13px; }
.photo-large { border-radius:5px; }
.toast { bottom:28px; border-radius:6px; border-color:#617e56; padding:15px 22px; background:var(--green); color:#f9f9ee; font-size:14px; max-width:min(560px,calc(100vw - 36px)); box-shadow:0 8px 30px #143a3022; }
.site-footer,.ivy-footer { margin-top:46px; padding-top:37px; padding-bottom:30px; border-top-color:#d8dece; color:#77816d; font-size:12px; text-align:center; }
.footer-brand { color:var(--green); font:400 30px/1.3 var(--ivy-serif); letter-spacing:-1.2px; }
.footer-brand span { display:inline-block; margin-left:13px; color:#6f7b63; font:11px/1.6 var(--ivy-sans); letter-spacing:1px; }
.site-footer p { font-size:13px; margin:8px 0 17px; color:#67765d; }
.site-footer .footer-note { font-size:11px; color:#7a8570; line-height:1.9; }
.footer-links { gap:23px; margin-top:14px; flex-wrap:wrap; }
.footer-links button { min-height:38px; font-size:12px; color:#667b54; }
.bottom-nav { display:none; }
noscript p { padding:20px; text-align:center; font-size:14px; }

@media (max-width:1120px) {
  .header-inner { gap:28px; }
  .desktop-nav { gap:20px; }
  .header-requests .desktop-label { display:none; }
  .header-publish { padding-left:14px; padding-right:14px; }
  .brand-title { font-size:33px; }
  .hero,.hero.ivy-hero { padding:36px; gap:20px; min-height:370px; }
  .hero h1 { font-size:40px; }
  .hero-art>svg,.ivy-hero-illustration { height:230px; }
  .ivy-path-card { padding:22px 19px; gap:12px; }
  .ivy-path-icon { width:38px; height:38px; flex-basis:38px; }
  .product-grid { gap:22px 16px; }
  .filter-select { min-width:126px; }
  .filters-bottom { align-items:flex-start; }
  .product-body { padding:15px 14px; }
}
@media (max-width:900px) {
  html { scroll-padding-top:98px; }
  .container { padding-left:26px; padding-right:26px; }
  .header-inner { padding:18px 26px; min-height:87px; gap:28px; }
  .desktop-nav { display:none; }
  .header-my { display:inline-flex; }
  .hero,.hero.ivy-hero { grid-template-columns:1.15fr 1fr; gap:20px; padding:30px; min-height:355px; }
  .hero h1 { font-size:35px; }
  .hero-eyebrow { font-size:10px; letter-spacing:1.1px; }
  .hero p { font-size:13px; }
  .hero-art>svg,.ivy-hero-illustration { height:200px; }
  .ivy-hero-kicker { letter-spacing:1.5px; }
  .hero .ivy-hero-statement { font-size:25px; }
  .ivy-hero-actions { gap:9px; }
  .ivy-hero-actions .btn { min-width:128px; padding-left:15px; padding-right:15px; }
  .ivy-path-card { padding:19px 15px; gap:10px; align-items:flex-start; }
  .ivy-path-title { font-size:14px; }
  .ivy-path-copy>span { font-size:12px; }
  .ivy-path-card>svg { display:none; }
  .ivy-path-icon { flex-basis:32px; width:32px; height:32px; }
  .ivy-path-icon svg { width:18px; height:18px; }
  .product-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .search-row { flex-wrap:wrap; gap:10px; }
  .search-box { flex-basis:100%; }
  .filter-select { flex:1; max-width:none; }
  .filters-bottom { display:block; }
  .available-only { margin-top:10px; justify-content:flex-end; }
  .want-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .detail-layout { gap:22px; grid-template-columns:1fr 1fr; }
  .detail-panel { padding:23px; }
  .detail-layout .detail-heading h1 { font-size:25px; }
  .account-grid { grid-template-columns:1fr; }
  .my-item { flex-wrap:wrap; }
  .my-item-controls { width:100%; max-width:none; justify-content:flex-end; }
}
/* Keep primary navigation available between the desktop and mobile layouts. */
@media (min-width:641px) and (max-width:900px) {
  html { scroll-padding-top:152px; }
  .header-inner { flex-wrap:wrap; column-gap:20px; row-gap:8px; }
  .ivy-logo { flex-shrink:0; }
  .header-actions { flex:0 0 auto; margin-left:auto; gap:10px; }
  .desktop-nav { display:flex; order:3; flex:0 0 100%; min-width:0; gap:12px; justify-content:space-between; }
  .desktop-nav button { flex:1 1 0; text-align:center; }
}
@media (max-width:640px) {
  html { scroll-padding-top:92px; }
  body { padding-bottom:calc(81px + env(safe-area-inset-bottom)); font-size:14px; }
  .container { padding-left:18px; padding-right:18px; }
  .prototype-ribbon { min-height:30px; padding:5px 12px; gap:7px; font-size:10px; line-height:1.8; letter-spacing:0; }
  .prototype-ribbon>span:not(.live-dot) { display:none; }
  .prototype-ribbon button { font-size:10px; margin-left:7px; min-height:20px; }
  .header-inner { padding:14px 18px; min-height:82px; gap:12px; }
  .logo,.ivy-logo { gap:7px; }
  .brand-title { font-size:31px; letter-spacing:-1.7px; }
  .brand-sub { font-size:9px; letter-spacing:1.2px; margin-top:6px; }
  .brand-mark,.ivy-brand-leaf { width:25px; height:33px; }
  .ivy-logo .ivy-brand-image { width:44px; height:44px; flex-basis:44px; border-radius:10px; }
  .brand-mark svg,.ivy-brand-leaf svg { width:26px; height:32px; }
  .header-actions { gap:5px; }
  .header-publish { display:none; }
  .header-requests { min-width:39px; width:39px; height:44px; padding:8px; }
  .header-requests .dot-badge { top:2px; right:-1px; }
  .header-my { display:block; padding:0; min-width:38px; }
  .header-my .avatar { width:32px; height:32px; font-size:13px; }
  .login-btn { min-height:40px; padding:8px 10px; font-size:12px; border-radius:4px; }
  .live-toolbar { padding-top:9px; min-height:37px; font-size:11px; gap:7px; }
  .live-toolbar .desktop-label { display:none; }
  .live-toolbar .text-btn { font-size:11px; }
  .live-toolbar svg { width:14px; height:14px; }
  .hero,.hero.ivy-hero { display:block; min-height:0; height:auto; margin-top:11px; padding:26px 25px 22px; border-radius:7px; }
  .hero-content,.ivy-hero-copy { width:100%; }
  .hero-eyebrow { font-size:9px; gap:6px; line-height:1.7; letter-spacing:1.2px; }
  .hero-eyebrow svg { width:14px; height:14px; }
  .hero h1 { margin:12px 0 13px; font-size:clamp(30px,8.5vw,39px); line-height:1.43; letter-spacing:-.6px; }
  .hero p,.hero-content p { display:block; max-width:none; width:auto; font-size:13px; line-height:1.9; margin-bottom:20px; }
  .ivy-hero-actions { gap:9px; }
  .ivy-hero-actions .btn { flex:1; min-width:0; font-size:13px; min-height:44px; padding:10px 8px; }
  .ivy-hero-wanted { margin-top:2px; font-size:12px; }
  .hero-art,.ivy-hero-aside { position:relative; width:100%; top:auto; right:auto; margin-top:18px; padding:0; opacity:1; pointer-events:none; }
  .hero-art>svg,.ivy-hero-illustration { width:100%; max-width:340px; height:150px; }
  .ivy-hero-kicker,.hero .ivy-hero-statement,.hero .ivy-hero-note,.hero-art .hero-note { display:none; }
  .hero-badges { font-size:11px; margin-top:12px; gap:10px; }
  .hero-badges svg { width:13px; height:13px; }
  .hero-badges span:last-child { display:flex; }
  .feature-strip { display:none; }
  .ivy-paths { display:grid; grid-template-columns:1fr; margin:15px 0 29px; gap:0; border-radius:6px; }
  .ivy-path-card { align-items:center; padding:16px 19px; gap:13px; min-height:80px; }
  .ivy-path-card+.ivy-path-card { border-left:0; border-top:1px solid var(--line); }
  .ivy-path-card>svg { display:block; width:17px; height:17px; }
  .ivy-path-icon { width:38px; height:38px; flex-basis:38px; }
  .ivy-path-icon svg { width:20px; height:20px; }
  .ivy-path-title { font-size:14px; margin-bottom:2px; }
  .ivy-path-copy>span { font-size:12px; }
  .ivy-market-section { scroll-margin-top:97px; }
  .section-heading { gap:10px; margin-bottom:18px; }
  .section-heading h2 { font-size:23px; line-height:1.45; }
  .section-heading p { font-size:12px; line-height:1.65; }
  .section-heading .count { font-size:11px; }
  .section-heading .count b { font-size:13px; }
  #search-form { padding:13px 12px 11px; margin-bottom:20px; border-radius:6px; }
  .search-row { gap:8px; margin-bottom:12px; }
  .search-box { min-height:48px; height:48px; padding-left:10px; gap:8px; }
  .search-box input { font-size:14px; }
  .search-box svg { width:18px; }
  .search-box .text-btn { min-width:53px; font-size:12px; padding-left:8px; padding-right:8px; }
  .filter-select { min-height:44px; min-width:0; width:30%; font-size:12px; padding:9px 2px 9px 7px; letter-spacing:-.1px; }
  .chips { display:flex; flex-wrap:nowrap; gap:3px; overflow-x:auto; padding:1px 0 5px; scrollbar-width:thin; scrollbar-color:#c3d1b0 transparent; }
  .chip { flex-shrink:0; font-size:12px; min-height:40px; padding:8px 11px; border-radius:3px; }
  .available-only { margin-top:7px; min-height:36px; font-size:11px; justify-content:flex-start; }
  .available-only input { width:17px; height:17px; }
  .product-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:17px 11px; }
  .product-card { border-radius:6px; }
  .product-image { aspect-ratio:1.04; }
  .product-image .no-photos { min-height:145px; }
  .product-body { padding:12px 10px; }
  .product-title { font-size:13px; line-height:1.6; min-height:21px; margin-bottom:6px; -webkit-line-clamp:2; }
  .product-meta { font-size:11px; }
  .price-row { gap:3px; margin:14px 0 12px; align-items:center; }
  .price { font-size:25px; letter-spacing:-.7px; }
  .price small { font-size:11px; margin-right:3px; }
  .price.free-price { font-size:19px; }
  .pickup-tag { padding-left:0; font-size:10px; }
  .product-footer { gap:4px; font-size:10px; padding-top:10px; flex-wrap:wrap; }
  .product-footer .date-label { font-size:10px; }
  .product-footer svg { width:12px; height:12px; }
  .product-badge { top:8px; left:8px; font-size:10px; padding:3px 6px; max-width:calc(100% - 55px); }
  .save-button { width:36px; height:36px; top:5px; right:5px; }
  .save-button svg { width:17px; height:17px; }
  .empty,.empty.real { padding:35px 18px; border-radius:6px; }
  .empty.real .empty-bag { width:54px; height:54px; margin-bottom:17px; }
  .empty.real h3 { font-size:20px; }
  .empty.real p { font-size:13px; line-height:1.9; margin-bottom:22px; }
  .empty-actions { gap:9px; }
  .empty-actions .btn { min-height:44px; font-size:13px; padding:10px 13px; }
  .loading { min-height:230px; }
  .mini-banner,.ivy-community-note { flex-direction:column; align-items:flex-start; margin-top:25px; padding:22px; gap:17px; border-radius:6px; }
  .mini-banner h3 { font-size:16px; line-height:1.65; }
  .mini-banner p { font-size:12px; line-height:1.8; }
  .mini-banner .btn { min-height:44px; padding:10px 14px; font-size:13px; }
  .page-intro { padding:28px 0 22px; }
  .page-intro h1 { font-size:27px; }
  .page-intro p { font-size:13px; line-height:1.8; }
  .page-intro.row { align-items:flex-start; gap:14px; }
  .page-intro.row h1 { font-size:25px; }
  .page-intro.row>.btn { min-height:44px; padding:10px 13px; font-size:12px; }
  .free-intro { margin:16px 0 25px; padding:26px 23px; border-radius:6px; }
  .free-intro h1 { font-size:26px; }
  .free-intro p { font-size:13px; }
  .want-grid { grid-template-columns:1fr; gap:15px; }
  .want-card { padding:23px; border-radius:6px; }
  .want-card h3 { font-size:18px; }
  .want-card p { font-size:13px; min-height:0; }
  .want-budget { font-size:25px; }
  .want-location { font-size:12px; }
  .notice { font-size:12px; padding:13px 14px; line-height:1.85; }
  .notice svg { width:17px; height:17px; }
  .tabbar { overflow-x:auto; flex-wrap:nowrap; gap:4px; padding-bottom:17px; scrollbar-width:thin; }
  .tabbar button { flex-shrink:0; min-height:44px; padding:10px 13px; font-size:13px; white-space:nowrap; }
  .request-card,.admin-card,.account-panel,.audit-row,.blocked-row { padding:20px; border-radius:6px; }
  .request-title { gap:10px; align-items:flex-start; }
  .request-title h3 { font-size:16px; }
  .request-person { font-size:12px; margin:9px 0 12px; }
  .request-message { font-size:13px; padding:13px; }
  .request-actions { gap:8px; }
  .request-actions .btn { font-size:12px; min-height:44px; padding:10px 13px; }
  .request-actions .text-btn,.request-state-message,.request-card .expired-tip { font-size:12px; }
  .request-meta { gap:12px; align-items:flex-start; }
  .private-pill { font-size:11px; white-space:normal; }
  .status,.light-tag { font-size:11px; padding:4px 7px; }
  .profile-banner { margin:24px 0; padding:23px 21px; gap:14px; border-radius:6px; flex-wrap:wrap; }
  .profile-banner .avatar { width:51px; height:51px; font-size:21px; }
  .profile-banner h1 { font-size:24px; }
  .profile-banner p { font-size:12px; }
  .account-stats { width:100%; gap:32px; justify-content:flex-start; margin:6px 0; }
  .account-stats>div { text-align:left; }
  .account-stats strong { font-size:25px; }
  .account-stats span { font-size:11px; }
  .me-actions { width:100%; margin:6px 0 0; gap:9px; }
  .profile-banner .me-actions .btn { flex:1; min-height:44px; font-size:12px; padding-left:12px; padding-right:12px; }
  .account-panel h3 { font-size:18px; }
  .account-panel p { font-size:13px; }
  .account-panel .btn { min-height:44px; font-size:12px; }
  .my-item { padding:15px; gap:13px; border-radius:6px; }
  .my-item .request-thumb { width:73px; height:77px; }
  .my-item h3 { font-size:14px; }
  .my-item p { font-size:12px; line-height:1.7; }
  .my-item-controls { gap:8px; justify-content:flex-start; }
  .my-item-controls .btn,.my-item-controls select { min-height:44px; font-size:12px; }
  .my-item-controls .text-btn { margin-left:0; min-height:44px; }
  .admin-stats { gap:9px; margin:20px 0; }
  .stat-card { padding:17px 11px; border-radius:5px; }
  .stat-card span { font-size:11px; line-height:1.7; }
  .stat-card strong { font-size:28px; }
  .admin-card h3 { font-size:16px; }
  .admin-card .meta { font-size:11px; }
  .admin-card p,.admin-card .body { font-size:13px; }
  .admin-card .admin-summary { gap:12px; }
  .admin-card .request-thumb { width:65px; height:70px; }
  .admin-card .actions { gap:8px; }
  .admin-card .actions .btn { min-height:44px; font-size:12px; }
  .admin-card input,.admin-card textarea { font-size:16px; }
  .table-wrap { padding:6px; border-radius:6px; }
  .user-table th,.user-table td { font-size:12px; padding:13px 9px; white-space:nowrap; }
  .audit-row { font-size:13px; padding:18px; }
  .audit-row h3 { font-size:14px; }
  .audit-row code { font-size:11px; }
  .blocked-row { gap:13px; }
  .blocked-row p { font-size:13px; }
  .blocked-row span { font-size:12px; }
  .page-card,.publish-card { padding:25px 20px; border-radius:6px; }
  .page-card h2 { font-size:25px; }
  .page-card p { font-size:13px; }
  .setup-card { margin:26px auto; }
  .form-wrap { margin-bottom:30px; }
  .editor-head { align-items:flex-start; gap:15px; }
  .editor-head h1 { font-size:26px; }
  .editor-head span { font-size:12px; }
  .editor-caption { font-size:12px; margin-bottom:23px; }
  .form-grid { grid-template-columns:1fr; gap:18px; margin-bottom:18px; }
  .field { margin-bottom:18px; }
  .field>span,.field-label { font-size:13px; }
  .field input,.field select,.field textarea { padding:12px; font-size:16px; min-height:48px; border-radius:4px; }
  .field .help { font-size:12px; }
  .field-flex { align-items:stretch; flex-wrap:wrap; }
  .field-flex .field { flex:1 1 140px; }
  .type-selector { margin-bottom:23px; }
  .type-selector button { font-size:13px; min-height:44px; }
  .upload-box { padding:26px 15px; }
  .upload-box p { font-size:13px; }
  .upload-box small { font-size:11px; }
  .preview-image { width:80px; height:77px; }
  .check-line { font-size:12px; gap:9px; }
  .form-errors { font-size:13px; }
  .breadcrumbs { font-size:12px; margin-top:20px; }
  .detail-layout { display:block; margin-top:10px; margin-bottom:30px; }
  .detail-layout .detail-image { aspect-ratio:1.14; border-radius:6px; }
  .detail-image .want-placeholder { min-height:250px; }
  .detail-panel { padding:25px 21px; margin-top:19px; border-radius:6px; }
  .detail-layout .detail-heading { margin-top:18px; }
  .detail-layout .detail-heading h1 { font-size:26px; }
  .detail-price .price { font-size:35px; }
  .detail-meta { font-size:12px; line-height:1.9; }
  .detail-layout .detail-description,.detail-description { font-size:14px!important; line-height:1.9; padding:16px; }
  .detail-tools { gap:14px; margin-top:8px; }
  .detail-tools button { font-size:12px; min-height:44px; }
  .seller-info strong { font-size:14px; }
  .seller-info p { font-size:12px; }
  .contact-guard { font-size:12px; }
  .photo-count { font-size:11px; }
  .contact-value { font-size:18px; }
  .contact-box p { font-size:12px; }
  .contact-caption { font-size:12px; }
  .info-grid { display:grid; grid-template-columns:1fr; gap:12px; }
  .info-grid article { padding:20px; }
  .info-grid p { font-size:12px; }
  dialog { width:100%; max-width:100%; max-height:calc(100dvh - 24px); margin:auto 0 0; border:0; border-radius:12px 12px 0 0; box-shadow:0 -10px 60px #102b242e; }
  .modal-head { padding:16px 20px; gap:12px; }
  .modal-head h2 { font-size:19px; line-height:1.5; }
  .modal-body { padding:24px 22px max(30px,env(safe-area-inset-bottom)); }
  .modal-body p { font-size:13px; }
  .modal-body .lead { font-size:15px; }
  .modal-body h3 { font-size:17px; }
  .modal-body .notice p { font-size:12px; }
  .modal-actions { gap:9px; margin-top:23px; }
  .modal-actions .btn { flex:1; min-height:46px; font-size:13px; padding:11px 13px; }
  .auth-intro h3 { font-size:23px; }
  .auth-intro p { font-size:13px; }
  .auth-switch { gap:16px; }
  .auth-switch .text-btn { min-height:44px; font-size:12px; }
  .rules-copy { font-size:13px; }
  .toast { bottom:calc(91px + env(safe-area-inset-bottom)); min-width:0; width:max-content; font-size:13px; padding:13px 17px; }
  .site-footer,.ivy-footer { margin-top:32px; padding-top:29px; padding-bottom:24px; }
  .footer-brand { font-size:29px; }
  .footer-brand span { display:block; margin:7px 0 0; font-size:10px; letter-spacing:1px; }
  .site-footer p { margin:12px 0 17px; font-size:12px; }
  .site-footer .footer-note { font-size:10px; line-height:1.9; }
  .footer-links { gap:13px; margin-top:12px; }
  .footer-links button { font-size:11px; min-height:40px; }
  .bottom-nav { position:fixed; left:0; right:0; bottom:0; display:flex; justify-content:space-around; align-items:stretch; z-index:15; padding:8px 6px max(10px,env(safe-area-inset-bottom)); border-top:1px solid #d8dfca; background:#fdfcf7f7; backdrop-filter:blur(16px); box-shadow:0 -6px 24px #24483305; }
  .bottom-nav button { display:flex; flex:1; min-height:53px; min-width:0; padding:3px; flex-direction:column; align-items:center; justify-content:center; gap:4px; font-size:11px; color:#7c896e; border-radius:4px; }
  .bottom-nav button svg { width:22px; height:22px; stroke-width:1.5; }
  .bottom-nav button.active { color:var(--green); font-weight:600; }
  .bottom-nav button.publish-bottom { color:var(--green); }
  .bottom-nav .publish-circle { width:43px; height:29px; margin-top:-3px; display:grid; place-items:center; border-radius:5px; background:var(--green); color:var(--lime); }
  .bottom-nav .publish-circle svg { width:20px; height:20px; }
}
@media (max-width:360px) {
  .header-inner { padding-left:14px; padding-right:14px; }
  .brand-title { font-size:28px; }
  .brand-mark,.ivy-brand-leaf { width:22px; }
  .login-btn { font-size:11px; padding:8px; }
  .header-actions { gap:2px; }
  .hero,.hero.ivy-hero { padding:24px 20px 20px; }
  .hero h1 { font-size:29px; }
  .hero-eyebrow { font-size:8px; letter-spacing:.9px; }
  .product-grid { gap:13px 9px; }
  .product-body { padding:11px 9px; }
  .price { font-size:23px; }
  .filter-select { font-size:11px; padding-left:5px; }
}
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { animation-duration:.01ms!important; animation-iteration-count:1!important; transition-duration:.01ms!important; scroll-behavior:auto!important; }
  .product-card:hover,.btn:hover,.product-card:hover .product-image>img { transform:none!important; }
}

/* Community conversations keep their composer outside the refreshed history. */
.community-page { max-width:980px; margin:34px auto 48px; }
.community-page-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:24px; margin-bottom:25px; }
.community-page-heading h1 { font-size:34px; line-height:1.4; margin:7px 0 10px; letter-spacing:-.6px; font-weight:600; }
.community-page-heading p { margin:0; color:var(--muted); font-size:14px; line-height:1.8; }
.community-caption { font-size:13px; line-height:1.9; color:#63745e; background:#ecf0e3; border:1px solid #dce3cf; border-radius:7px; padding:15px 18px; }
.community-shortcuts { display:flex; flex-wrap:wrap; gap:12px 22px; padding:14px 0; margin:0 0 18px; }
.community-shortcuts button { color:var(--green); font-size:13px; min-height:34px; text-decoration:underline; text-underline-offset:5px; }
.community-pagination { display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:18px; padding:18px 0; }
.community-images { display:flex; flex-wrap:wrap; gap:10px; margin:15px 0; }
.community-images button { border:1px solid var(--line); background:#edf0e4; border-radius:6px; overflow:hidden; padding:0; }
.community-images img { display:block; width:165px; height:140px; object-fit:cover; }
.community-body { white-space:pre-wrap; overflow-wrap:anywhere; line-height:1.95; font-size:15px; }
.community-upload { margin:17px 0; }
.community-upload-label { display:inline-flex; align-items:center; gap:8px; min-height:44px; padding:9px 13px; border:1px solid #bbcbb0; border-radius:5px; color:var(--green); font-size:13px; cursor:pointer; }
.community-upload-label input { width:1px; height:1px; opacity:0; position:absolute; }
.community-upload-label:focus-within { outline:2px solid var(--green); outline-offset:3px; }
.community-upload>.subtle { margin-left:10px; }
.community-upload .image-previews { margin-top:12px; }
.chat-page { max-width:850px; }
.chat-thread-list { display:flex; flex-direction:column; gap:13px; }
.chat-thread-card { display:flex; align-items:center; gap:17px; padding:21px; text-align:left; border:1px solid var(--line); background:var(--white); border-radius:8px; }
.chat-thread-card:hover { border-color:#8b9e76; background:#fafbf4; }
.chat-thread-copy { flex:1; display:flex; flex-direction:column; gap:7px; min-width:0; }
.chat-thread-copy strong { font-size:17px; }
.chat-thread-copy>span { font-size:14px; color:#49634a; }
.chat-thread-copy small { font-size:12px; line-height:1.7; color:var(--muted); }
.chat-thread-card>.subtle { white-space:nowrap; font-size:11px; }
.chat-message-list { padding:19px; margin-bottom:20px; min-height:180px; max-height:56dvh; overflow-y:auto; border:1px solid #d9e1cd; border-radius:8px; background:#f4f5ec; overscroll-behavior:contain; scrollbar-gutter:stable; }
.chat-message-list>.empty { padding:30px 18px; border:0; background:transparent; }
.chat-message { display:flex; flex-direction:column; align-items:flex-start; max-width:84%; margin:0 auto 20px 0; }
.chat-message.mine { align-items:flex-end; margin-left:auto; margin-right:0; }
.chat-message-meta { font-size:11px; color:#6b7c60; line-height:1.7; margin-bottom:5px; }
.chat-bubble { max-width:100%; padding:13px 17px; border-radius:4px 14px 14px; background:#fffef9; border:1px solid #dee4d2; }
.chat-message.mine .chat-bubble { background:#e3eccf; border-color:#cfdbbb; border-radius:14px 4px 14px 14px; }
.chat-bubble p { margin:0; white-space:pre-wrap; overflow-wrap:anywhere; line-height:1.8; font-size:14px; }
.chat-bubble .community-images { margin:10px 0 0; }
.chat-bubble .community-images img { width:210px; height:auto; max-height:250px; object-fit:contain; }
.chat-message-state { font-size:10px; color:#6d7d62; margin-top:5px; max-width:100%; overflow-wrap:anywhere; }
.chat-composer { background:var(--white); border:1px solid var(--line); border-radius:8px; padding:24px; }
.chat-composer .notice-text { font-size:13px; line-height:1.8; color:#5a714f; background:#eef2e5; padding:12px 14px; border-radius:5px; margin:0 0 20px; }
.chat-composer .check-line { font-size:12px; line-height:1.8; }
.chat-composer .field textarea { min-height:96px; }
.chat-composer .split-row { gap:16px; }
.forum-categories { margin:14px 0 27px; }
.forum-post-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; }
.forum-card { padding:25px; background:var(--white); border:1px solid var(--line); border-radius:8px; min-width:0; }
.forum-card h2 { font-size:20px; line-height:1.7; margin:17px 0 10px; font-weight:600; }
.forum-card h2 button { text-align:left; overflow-wrap:anywhere; }
.forum-card>p { color:#65745d; font-size:14px; line-height:1.85; overflow-wrap:anywhere; white-space:pre-wrap; }
.forum-card .community-images { flex-wrap:nowrap; overflow:hidden; }
.forum-card .community-images img { width:100px; height:94px; }
.forum-card-footer { display:flex; align-items:center; flex-wrap:wrap; justify-content:space-between; gap:10px; margin-top:19px; color:#748168; font-size:12px; }
.forum-post-detail { margin:22px 0 30px; padding:32px; border:1px solid var(--line); border-radius:8px; background:var(--white); }
.forum-post-detail h1 { font-size:30px; line-height:1.65; overflow-wrap:anywhere; margin:17px 0; }
.forum-post-meta { display:flex; align-items:center; flex-wrap:wrap; gap:15px; color:#718063; font-size:12px; margin-bottom:25px; }
.forum-post-detail .community-images img { width:220px; height:200px; }
.forum-comments { margin:30px 0; }
.forum-comments .section-heading h2 { font-size:22px; }
.forum-comment { border-top:1px solid var(--line); padding:23px 0; }
.forum-comment>.split-row { font-size:13px; }
.forum-comment .community-images img { width:150px; height:130px; }
@media (max-width:760px) {
 .header-community-messages { display:none; }
 .community-page { margin:25px 0 32px; }
 .community-page-heading { flex-wrap:wrap; gap:16px; margin-bottom:20px; }
 .community-page-heading h1 { font-size:28px; }
 .community-page-heading p,.community-caption { font-size:12px; }
 .community-page-heading>.btn { min-height:44px; }
 .community-shortcuts { gap:9px 20px; padding:8px 0; margin-bottom:12px; }
 .community-shortcuts button { font-size:12px; min-height:42px; }
 .community-pagination { gap:12px; }
 .community-images img { width:128px; height:115px; }
 .chat-thread-card { padding:16px 13px; gap:12px; align-items:flex-start; }
 .chat-thread-card>.avatar { flex-shrink:0; width:37px; height:37px; font-size:14px; }
 .chat-thread-card>.subtle { display:none; }
 .chat-thread-copy strong { font-size:15px; }
 .chat-thread-copy>span { font-size:13px; }
 .chat-thread-copy small { font-size:11px; }
 .chat-message-list { padding:13px 10px; max-height:49dvh; }
 .chat-message { max-width:91%; margin-bottom:16px; }
 .chat-bubble { padding:11px 13px; }
 .chat-bubble p { font-size:13px; }
 .chat-bubble .community-images img { width:175px; max-height:210px; }
 .chat-composer { padding:20px 17px; }
 .chat-composer .split-row { align-items:flex-start; flex-wrap:wrap; }
 .chat-composer .split-row .btn { margin-left:auto; min-height:45px; }
 .chat-composer .notice-text { font-size:12px; }
 .community-upload-label { font-size:12px; }
 .forum-post-grid { grid-template-columns:1fr; gap:15px; }
 .forum-card { padding:22px 19px; }
 .forum-card h2 { font-size:18px; }
 .forum-card>p { font-size:13px; }
 .forum-post-detail { padding:23px 20px; }
 .forum-post-detail h1 { font-size:25px; }
 .community-body { font-size:14px; }
 .forum-post-detail .community-images img { width:100%; max-width:280px; height:auto; max-height:280px; object-fit:contain; }
 .community-upload>.subtle { display:block; margin:8px 0 0; }
}
