/* Build 96: index-only presentation. Shared/admin styles stay in style.css. */
@font-face{font-family:'Farm Thai';src:url('assets/NotoSansThai.ttf') format('truetype');font-weight:100 900;font-display:swap}
.farm-ui{
 --bg:var(--dr-bg);--card:var(--dr-card);--soft:var(--dr-soft);--well:var(--dr-soft);--border:var(--dr-line);
 --text:var(--dr-ink);--text2:var(--dr-muted);--muted:var(--dr-muted);--primary:var(--dr-brand);--primary-dark:var(--dr-brand);--primary-soft:var(--dr-on-bg);
 --ok:var(--dr-on);--ok-ink:var(--dr-on);--ok-bg:var(--dr-on-bg);--warn-ink:var(--dr-warn);--warn-bg:var(--dr-warn-bg);--danger:var(--dr-danger);--danger-ink:var(--dr-danger);--danger-bg:var(--dr-danger-bg);
 --ui-bg:var(--dr-bg);--ui-card:var(--dr-card);--ui-line:var(--dr-line);--ui-ink:var(--dr-ink);--ui-muted:var(--dr-muted);--ui-focus:var(--dr-focus);
 --shadow:0 2px 8px var(--dr-shade);--shadow-lg:0 8px 24px var(--dr-shade);
 font-family:'Farm Thai','Segoe UI',sans-serif;font-size:16px;line-height:1.65;background:var(--bg);color:var(--text);
 padding:24px;
}
.farm-ui :is(button,input,select,textarea){font-family:inherit}
.farm-ui :is(button,a,input,select,textarea):focus-visible{outline:3px solid var(--dr-focus);outline-offset:3px}
.farm-ui button{min-height:48px;font-size:16px}
.farm-ui :is(input:not([type=checkbox]):not([type=radio]),select,textarea){box-sizing:border-box;min-height:48px;font-size:16px;max-width:100%;border-radius:10px}
.farm-ui .btn-primary{background:var(--dr-brand);color:var(--dr-brand-ink);box-shadow:none}
.farm-ui .btn-secondary{color:var(--text2);background:var(--card);border:1px solid var(--border);box-shadow:none}
.farm-ui .login-page{box-sizing:border-box;max-width:1120px;margin:auto;min-height:calc(100dvh - 48px);display:flex;align-items:center;gap:64px;padding:24px 0;background:var(--dr-clear)}
.farm-welcome{flex:1;min-width:0;padding:24px 0}
.farm-eyebrow{font-size:14px;letter-spacing:.06em;font-weight:700;color:var(--primary)}
.farm-welcome h1{font-size:clamp(30px,3.5vw,46px);line-height:1.5;letter-spacing:0;margin:20px 0 16px}
.farm-welcome h1 span{color:var(--primary)}
.farm-welcome p{font-size:18px;line-height:1.8;color:var(--text2)}
.farm-features{display:flex;gap:16px;flex-wrap:wrap;font-size:14px;color:var(--text2);margin:24px 0}
.farm-welcome>small{font-size:14px;color:var(--muted)}
.farm-landscape{height:150px;position:relative;overflow:hidden;border-radius:48px 16px 16px 16px;background:var(--dr-on-bg);margin:24px 0}
.farm-landscape div{position:absolute;width:125%;height:130px;border-radius:50%;background:var(--dr-line);transform:rotate(-14deg);left:-35%;top:65px}
.farm-landscape div:nth-child(2){background:var(--dr-muted);left:25%;top:90px;transform:rotate(12deg)}
.farm-landscape div:nth-child(3){background:var(--dr-brand);top:120px;left:-10%}
.farm-ui .login-card{box-sizing:border-box;flex:0 1 420px;width:100%;max-width:440px;padding:32px;border:1px solid var(--border);border-radius:20px;background:var(--card);box-shadow:var(--shadow-lg)}
.farm-ui .login-logo,.farm-ui .login-logo img{width:64px;height:64px;object-fit:contain}
.farm-ui .login-logo{margin:0 auto 16px}
.farm-ui .login-title{font-size:24px}
.farm-ui .login-subtitle{font-size:16px;color:var(--muted);margin-bottom:24px}
.farm-ui .login-card .form-row{display:flex;flex-direction:column;gap:8px;text-align:left}
.farm-ui .login-card label{font-size:16px;font-weight:650}
.farm-ui .login-btn{min-height:48px;border-radius:10px}
.farm-ui .auth-switch{font-size:14px;line-height:2}
.farm-ui .auth-switch a{display:inline-flex;align-items:center;min-height:48px;color:var(--primary)}
.farm-ui .shell{min-width:0}
.farm-ui .shell>header{display:flex;flex-wrap:wrap;gap:12px;background:var(--card);color:var(--text);border:1px solid var(--border);border-radius:16px;padding:16px;margin:0;box-shadow:none}
.farm-ui .shell>header .logo{font-size:18px;flex-wrap:wrap;min-width:0;line-height:1.6}
.farm-ui .shell>header .header-dev{font-size:16px;max-width:100%;overflow-wrap:anywhere;white-space:normal;color:var(--text2);border-color:var(--border)}
.farm-ui .shell>header>div:last-child{flex-wrap:wrap}
.farm-ui .shell>header .icon-only{min-width:48px;min-height:48px;background:var(--card);color:var(--text2);border:1px solid var(--border);border-radius:10px;box-shadow:none}
.farm-ui .status-badge{font-size:14px;padding:8px 10px;line-height:1.5;border-radius:8px}
.farm-ui .status-badge.online{background:var(--dr-on-bg);color:var(--dr-on);border:1px solid var(--dr-line)}
.farm-ui .status-badge.offline,.farm-ui .status-badge.badge-unknown{background:var(--dr-off-bg);color:var(--dr-off);border:1px dashed var(--dr-line)}
.farm-ui .status-badge.badge-connecting{background:var(--dr-warn-bg);color:var(--dr-warn)}
.farm-ui .tabs{gap:8px;margin:16px 0;padding:0;background:var(--dr-clear);box-shadow:none;border:0}
.farm-ui .tab-button{min-height:48px;border:1px solid var(--border);border-radius:10px;background:var(--card);color:var(--text2);font-size:16px;box-shadow:none;padding:10px 16px;white-space:normal}
.farm-ui .tab-button.active{background:var(--dr-brand);color:var(--dr-brand-ink);border-color:var(--dr-brand)}
.farm-ui #dashboard-tab.active{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}
.farm-ui #dashboard-tab>*{grid-column:1/-1;min-width:0;margin-bottom:0!important}
.farm-ui #dashboard-tab>.farm-water-panel{grid-column:1}
.farm-ui #dashboard-tab>.farm-tank-panel{grid-column:2}
.farm-ui #dashboard-tab:has(>.farm-tank-panel.hide)>.farm-water-panel{grid-column:1/-1}
.farm-ui .farm-page-heading{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;margin:0;padding:8px 0;background:var(--dr-clear);color:var(--text)}
.farm-ui .farm-page-heading h1{font-size:26px;line-height:1.5;letter-spacing:0;margin:4px 0}
.farm-ui .farm-page-heading p{font-size:16px;color:var(--text2);margin:0}
.farm-ui .farm-page-heading a{display:inline-flex;align-items:center;min-height:48px;padding:8px 12px;border:1px solid var(--border);border-radius:10px;text-decoration:none;font-size:14px;color:var(--primary);background:var(--card)}
.farm-ui .rtc-clock-bar{padding:0;gap:8px;flex-wrap:wrap;border:0;box-shadow:none;background:var(--dr-clear)}
.farm-ui .rtc-clock-bar #val-datetime,.farm-ui .rtc-clock-bar small{font-size:14px;letter-spacing:0;color:var(--text2)}
.farm-ui .btn-ntp{font-size:14px;min-height:48px;background:var(--card);color:var(--text2);border-color:var(--border)}
.farm-ui .card{padding:20px;border:1px solid var(--border);border-radius:16px;background:var(--card);box-shadow:var(--shadow);min-width:0}
.farm-ui .card h3{font-size:18px;line-height:1.6;font-weight:700;gap:8px;margin:0 0 16px;flex-wrap:wrap}
.farm-ui .card-header{gap:12px;flex-wrap:wrap}
.farm-ui .card-header h3{margin-bottom:0}
.farm-ui .card-actions{flex-wrap:wrap}
.farm-ui .farm-metrics{gap:8px;grid-template-columns:repeat(3,minmax(0,1fr))}
.farm-ui .farm-metrics .status-card{padding:14px 10px;text-align:left;min-width:0;background:var(--card);border:1px solid var(--border);border-radius:12px;box-shadow:none}
.farm-ui .farm-metrics .status-card>small{font-size:14px;font-weight:500;color:var(--text2)}
.farm-ui .farm-metrics .value{font-size:28px;line-height:1.4;letter-spacing:0;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums;margin-top:8px}
.farm-ui .farm-metrics .value small{font-size:14px;color:var(--text2)}
.farm-ui .metric-symbol{display:none}
.farm-ui #valve-grid-container .board-section,.farm-ui #house-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:12px}
.farm-ui .chrow{box-sizing:border-box;display:grid;grid-template-columns:32px minmax(0,1fr) 78px;gap:8px 12px;padding:14px 12px;background:var(--card);border:1px solid var(--border);box-shadow:none;border-radius:12px;min-width:0;min-height:94px}
.farm-ui .chrow.on{background:var(--dr-on-bg);border-color:var(--dr-on)}
.farm-ui .chled{display:none}
.farm-ui .chico{grid-column:1;grid-row:1;width:32px;height:32px;font-size:18px;background:var(--dr-soft);color:var(--text);border:0;box-shadow:none}
.farm-ui .chtxt{grid-column:2;grid-row:1}
.farm-ui .chtxt b{font-size:16px;line-height:1.6;white-space:normal;overflow-wrap:anywhere}
.farm-ui .chtxt i{font-size:14px;color:var(--text2)}
.farm-ui .chcd{grid-column:2;grid-row:2;justify-self:start;font-size:14px;letter-spacing:0;background:var(--dr-soft);color:var(--text);border-color:var(--border)}
.farm-ui .chsw{grid-column:3;grid-row:1 / span 2;align-self:center;box-sizing:border-box;box-shadow:none}
.farm-ui .chsw b{display:grid;place-items:center;font-size:14px;font-weight:700}
.farm-ui .chsw .lf::after{content:'เปิด'}
.farm-ui .chsw .rt::after{content:'ปิด'}
.farm-ui .chsw .lf,.farm-ui .chrow.on .chsw .rt{background:var(--dr-soft);color:var(--dr-muted);box-shadow:none}
.farm-ui .chsw .rt{background:var(--dr-card);color:var(--dr-ink);box-shadow:0 1px 3px var(--dr-shade)}
.farm-ui .chrow.on .chsw .lf{background:var(--dr-brand);color:var(--dr-brand-ink);box-shadow:none}
.farm-ui .chrow.reserved,.farm-ui .chrow.denied{border-style:dashed}
.farm-ui .chrow.reserved::after,.farm-ui .chrow.denied::after{font-size:14px}
.farm-ui .chlbl{font-size:14px;letter-spacing:0}
.farm-ui .farm-water-states{grid-template-columns:minmax(0,1fr);gap:0;margin:0}
.farm-ui .farm-water-states .status-card{display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left;border:0;border-bottom:1px solid var(--border);border-radius:0;background:var(--dr-clear);padding:12px 0;box-shadow:none;min-width:0}
.farm-ui .farm-water-states .status-card:last-child{border-bottom:0}
.farm-ui .farm-water-states .status-card>small{font-size:14px;color:var(--text2)}
.farm-ui .farm-water-states .value{font-size:16px!important;text-align:right;color:var(--text);line-height:1.6}
.farm-ui .farm-tank-panel .tank-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:12px}
.farm-ui .lcd-bezel{background:var(--dr-soft);border:1px solid var(--border);padding:12px;border-radius:12px;min-width:0;box-shadow:none}
.farm-ui .lcd-screen{width:max-content;max-width:100%;box-sizing:border-box;padding:10px;border:1px solid var(--border);background:var(--dr-card);box-shadow:none;overflow-x:auto}
.farm-ui .lcd-line{font-size:14px;line-height:1.7;color:var(--dr-ink);text-shadow:none;letter-spacing:0}
.farm-ui .iso-col-h,.farm-ui .iso-sub,.farm-ui .iso-e-grid,.farm-ui .iso-e-grid small,.farm-ui .iso-e-today small,.farm-ui .iso-e-axis,.farm-ui .iso-e-meter,.farm-ui .iso-rows,.farm-ui .iso-chiplet{font-size:14px}
.farm-ui .iso-strip{gap:12px}
.farm-ui .iso-vbtn{min-width:48px;font-size:14px}
.farm-ui .rail-brand{padding:8px 8px 20px;border-bottom:1px solid var(--border);margin-bottom:16px}
.farm-ui .rail-mark{background:var(--dr-brand);color:var(--dr-brand-ink);box-shadow:none}
.farm-ui .rail-who b{font-size:16px}
.farm-ui .rail-who i,.farm-ui .rail-head{font-size:14px;letter-spacing:0;color:var(--text2)}
.farm-ui .rail-item{box-sizing:border-box;min-height:48px;padding:12px;font-size:14px;border-radius:10px}
.farm-ui .rail-nav{gap:8px}
.farm-ui .rail-tabitem.on{background:var(--dr-brand);color:var(--dr-brand-ink);border-color:var(--dr-brand);box-shadow:none}
.farm-ui .rail-tabitem.on .rail-ico{color:var(--dr-brand-ink)}
.farm-ui .hint,.farm-ui .admin-sub,.farm-ui .badge,.farm-ui .form-row label,.farm-ui .stats-hint,.farm-ui .rs485-id,.farm-ui .rs485-ok,.farm-ui .rs485-bad{font-size:14px;line-height:1.7}
.farm-ui .modal-content{box-sizing:border-box;max-height:calc(100dvh - 32px);overflow-y:auto}
.farm-ui .table-scroll{max-width:100%}
.farm-ui .freshness-notice{padding:12px 16px;border:1px dashed var(--dr-line);border-radius:12px;background:var(--dr-off-bg);color:var(--dr-off);font-size:16px;margin:16px 0}
@media(min-width:1100px){.farm-ui .has-rail{grid-template-columns:225px minmax(0,1fr);gap:24px;max-width:1440px}.farm-ui .has-rail .rail{padding:20px 14px;background:var(--card);border:1px solid var(--border);border-radius:16px;box-shadow:none}}
@media(max-width:1000px){.farm-ui #dashboard-tab>.farm-water-panel,.farm-ui #dashboard-tab>.farm-tank-panel{grid-column:1/-1}}
@media(max-width:760px){
 .farm-ui{padding:16px 12px calc(24px + env(safe-area-inset-bottom))}
 .farm-ui .login-page{flex-direction:column;gap:20px;padding:8px 0;min-height:0}
 .farm-welcome{flex:none;width:100%;max-width:440px;padding:0}
 .farm-welcome h1{font-size:26px;margin:12px 0}
 .farm-welcome p{font-size:16px;margin:0}
 .farm-landscape,.farm-features,.farm-welcome>small{display:none}
 .farm-ui .login-card{flex:none;padding:24px}
 .farm-ui .shell>header{padding:14px;gap:12px}
 .farm-ui .shell>header>div:last-child{gap:8px!important}
 .farm-ui .tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
 .farm-ui .tab-button{font-size:14px;padding:8px 4px;line-height:1.5}
 .farm-ui .tab-button i{display:none}
 .farm-ui #dashboard-tab.active{grid-template-columns:minmax(0,1fr);gap:16px}
 .farm-ui #dashboard-tab>.farm-water-panel,.farm-ui #dashboard-tab>.farm-tank-panel{grid-column:1}
 .farm-ui .farm-page-heading h1{font-size:24px}
 .farm-ui .farm-page-heading a{display:none}
 .farm-ui .card{padding:16px}
 .farm-ui .farm-metrics .value{font-size:24px;white-space:nowrap}
 .farm-ui .farm-metrics .status-card{padding:12px 8px}
 .farm-ui .water-row{flex-wrap:wrap}
 .farm-ui .water-row>.status-grid{flex:1 1 180px}
 .farm-ui .card-header h3{font-size:18px}
}
@media(prefers-reduced-motion:reduce){.farm-ui *,.farm-ui *::before,.farm-ui *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

.farm-ui .farm-metrics .status-card:nth-child(n) .value{color:var(--dr-ink)}

/* Retained data remains labelled; no polling, counters or device values are rewritten. */
.farm-ui .freshness-notice[hidden]{display:none}
.farm-ui .pips-label{display:block;font-size:14px;color:var(--dr-muted);margin-top:8px}
.farm-ui.readings-stale :is(.farm-valve-panel,.farm-water-panel,.farm-tank-panel,#house-card,#rs485-card,#iso-card)::before{content:'ข้อมูลล่าสุดที่เคยรับ · ยังไม่ยืนยันค่าปัจจุบัน';display:block;font-size:14px;color:var(--dr-off);background:var(--dr-off-bg);border:1px dashed var(--dr-line);padding:8px 10px;border-radius:8px;margin-bottom:12px}
.farm-ui.readings-stale :is(.status-grid,.rs485-group,#valve-grid-container,#house-grid){opacity:1}
.farm-ui.readings-stale .farm-metrics .value{position:relative;visibility:hidden}
.farm-ui.readings-stale .farm-metrics .value::after{content:'—';visibility:visible;position:absolute;inset:0;color:var(--dr-muted)}
.farm-ui.readings-stale :is(.chcd,.chprog-wrap,.chsw){visibility:hidden}
.farm-ui.readings-stale .chrow{background:var(--dr-off-bg);border-color:var(--dr-line)}
.farm-ui.readings-stale .chtxt i::after{content:' (ข้อมูลเก่า)'}
.farm-ui.readings-stale #iso-card .iso-scroll{filter:grayscale(1)}
html.no-fa .farm-ui .icon-only::after{font-size:14px}

/* Keep profile images inside their reserved space and long fallback actions on-screen. */
.farm-ui #login-profile-img{box-sizing:border-box;width:64px;height:64px;object-fit:contain;box-shadow:none}
.farm-ui .modal-buttons{flex-wrap:wrap;gap:10px}
.farm-ui .modal-buttons>button{min-width:0;max-width:100%;white-space:normal}
html.no-fa .farm-ui .modal-buttons .icon-only::after{white-space:normal}

/* Friendly garden surfaces; existing control geometry and state hooks remain intact. */
.farm-ui .shell>header{border-radius:20px;box-shadow:0 3px 12px var(--dr-shade)}
.farm-ui .shell>header .icon-only{border-radius:14px;background:var(--dr-soft)}
.farm-ui .farm-page-heading{position:relative;isolation:isolate;overflow:hidden;padding:20px 22px;background:var(--dr-hero);border-radius:22px;min-height:130px}
.farm-ui .farm-page-heading::after{content:'';position:absolute;right:-25px;top:-34px;width:140px;height:140px;border-radius:50%;background:var(--dr-sun);z-index:-1;pointer-events:none}
.farm-ui .farm-page-heading .farm-eyebrow{color:var(--dr-ink);letter-spacing:0;font-weight:500;font-size:16px}
.farm-ui .farm-page-heading h1{font-size:28px;font-weight:750;margin:4px 0}
.farm-ui .farm-page-heading p{color:var(--dr-ink);font-size:16px;max-width:30em}
.farm-ui .farm-page-heading a{border-radius:14px;border-color:var(--dr-clear)}
.farm-ui .tabs{gap:8px}
.farm-ui .tab-button{border-radius:14px}
.farm-ui .tab-button.active{box-shadow:0 3px 8px var(--dr-shade);font-weight:750}
.farm-ui .farm-metrics .status-card{border:0;border-radius:18px;padding:16px 12px;box-shadow:0 2px 6px var(--dr-shade)}
.farm-ui .farm-metrics .status-card:first-child{background:var(--dr-warm-bg)}
.farm-ui .farm-metrics .status-card:nth-child(2){background:var(--dr-water-bg)}
.farm-ui .farm-metrics .status-card:nth-child(3){background:var(--dr-grape-bg)}
.farm-ui .farm-metrics .status-card>small{color:var(--dr-ink)}
.farm-ui .card{border-radius:20px;box-shadow:0 3px 14px var(--dr-shade)}
.farm-ui .card h3{font-size:19px}
.farm-ui .farm-valve-panel h3{padding-bottom:14px;border-bottom:1px solid var(--dr-line)}
.farm-ui .chrow{grid-template-columns:36px minmax(0,1fr) 88px;gap:8px 10px;border-radius:16px;border-left:4px solid var(--dr-line);padding:14px 12px;min-height:92px}
.farm-ui .chrow.on{border-color:var(--dr-on);background:var(--dr-on-bg)}
.farm-ui .chico{width:36px;height:36px;border-radius:12px;background:var(--dr-water-bg);color:var(--dr-water)}
.farm-ui .chrow.on .chico{background:var(--dr-brand);color:var(--dr-brand-ink)}
.farm-ui .chsw{width:88px;height:52px;border-radius:13px;padding:4px}
.farm-ui .chsw b{border-radius:10px}
.farm-ui .chsw .lf::after{content:'เปิด'}
.farm-ui .chsw .rt::after{content:'ปิด'}
.farm-ui .farm-water-panel{background:linear-gradient(180deg,var(--dr-water-bg),var(--dr-card) 120px)}
.farm-ui .farm-tank-panel{background:linear-gradient(180deg,var(--dr-grape-bg),var(--dr-card) 120px)}
.farm-ui .iso-col{border-radius:14px}
.farm-ui .rail-mark{border-radius:14px}
.farm-ui .rail-item{border-radius:12px}
.farm-ui .login-card{border-radius:24px}
.farm-ui .login-btn{border-radius:14px}
.farm-ui .login-logo{background:var(--dr-on-bg);padding:8px;border-radius:22px;box-sizing:content-box}
.farm-ui.readings-stale .farm-metrics .status-card{background:var(--dr-off-bg)}
@media(max-width:760px){.farm-ui .farm-page-heading{padding:18px;min-height:0}.farm-ui .farm-page-heading h1{font-size:26px}.farm-ui .farm-page-heading p{font-size:14px}.farm-ui .farm-metrics .status-card{padding:14px 8px}.farm-ui .farm-metrics .value{font-size:24px}.farm-ui .chrow{padding:12px 10px;gap:8px}.farm-ui .card h3{font-size:18px}.farm-ui .tab-button{border-radius:12px}}

/* Entry experience: photograph and form share one frame; auth DOM stays intact. */
.farm-ui:has(#login-page:not([style*="display: none"])){background:var(--entry-bg)}
.farm-ui .login-page{max-width:1180px;min-height:calc(100dvh - 48px);gap:0;padding:32px 0;align-items:stretch;justify-content:center}
.farm-ui .farm-welcome{position:relative;isolation:isolate;display:flex;flex-direction:column;justify-content:space-between;flex:1 1 56%;max-width:660px;min-height:650px;padding:40px;border-radius:28px 0 0 28px;overflow:hidden;background:linear-gradient(180deg,var(--entry-overlay-mid),var(--entry-overlay-clear) 30%,var(--entry-overlay) 100%),url('assets/orchard-entry-96.webp') center/cover;color:var(--entry-photo-ink)}
.farm-ui .entry-brand{display:flex;align-items:center;gap:12px}
.farm-ui .entry-brand img{width:44px;height:44px;border:1px solid var(--entry-photo-edge);border-radius:50%}
.farm-ui .entry-brand strong{display:block;font-size:20px;letter-spacing:.1em;line-height:1.4;color:var(--entry-photo-ink)}
.farm-ui .entry-brand span{display:block;font-size:12px;letter-spacing:.16em;color:var(--entry-photo-muted)}
.farm-ui .entry-story{padding-top:110px}
.farm-ui .farm-welcome .farm-eyebrow{display:inline-block;font-size:14px;letter-spacing:0;font-weight:500;border:1px solid var(--entry-photo-edge);border-radius:24px;padding:6px 14px;background:var(--entry-photo-glass);color:var(--entry-photo-ink)}
.farm-ui .farm-welcome h1{font-size:clamp(32px,3.3vw,44px);font-weight:650;line-height:1.5;margin:20px 0 14px;color:var(--entry-photo-ink);text-wrap:pretty}
.farm-ui .farm-welcome p{font-size:17px;line-height:1.8;color:var(--entry-photo-muted);margin:0}
.farm-ui .farm-features{display:flex;gap:8px;flex-wrap:wrap;margin:28px 0 0;color:var(--entry-photo-ink);font-size:14px}
.farm-ui .farm-features span{border:1px solid var(--entry-photo-edge);background:var(--entry-photo-glass);padding:7px 12px;border-radius:8px}
.farm-ui .login-card{align-self:stretch;display:flex;flex-direction:column;justify-content:center;flex:0 1 480px;width:100%;max-width:520px;min-width:0;padding:44px;border-radius:0 28px 28px 0;text-align:left;border:1px solid var(--entry-line);border-left:0;background:var(--dr-card);box-shadow:12px 16px 40px var(--dr-shade)}
.farm-ui .entry-form-heading{display:flex;align-items:center;gap:16px;margin-bottom:18px}
.farm-ui .entry-form-heading>div:last-child{min-width:0}
.farm-ui .login-logo{display:grid;place-items:center;box-sizing:border-box;width:60px;height:60px;min-width:60px;flex:0 0 60px;margin:0;padding:0;background:var(--dr-clear);border:0;line-height:0;border-radius:0}
.farm-ui #login-profile-img{display:block;box-sizing:border-box;width:60px;height:60px;max-width:100%;max-height:100%;object-fit:contain;border:0;margin:0;padding:0;box-shadow:none}
.farm-ui #login-profile-icon{font-size:32px;color:var(--dr-brand);line-height:1}
.farm-ui .entry-form-label{display:block;font-size:14px;color:var(--dr-muted);margin-bottom:4px}
.farm-ui .login-title{font-size:22px;line-height:1.5;letter-spacing:0;margin:0;color:var(--dr-ink);overflow-wrap:anywhere}
.farm-ui .login-subtitle{font-size:16px;line-height:1.75;color:var(--dr-muted);margin:0 0 28px}
.farm-ui .login-card .form-row{margin-bottom:18px;gap:8px}
.farm-ui .login-card .form-row label{font-size:14px;font-weight:650;color:var(--dr-ink)}
.farm-ui .login-card .form-row input{border:1px solid var(--entry-line);border-radius:10px;background:var(--entry-bg);color:var(--dr-ink);min-height:52px;padding:12px 14px;font-size:16px;box-shadow:none}
.farm-ui .login-card .form-row input:focus{border-color:var(--dr-brand)}
.farm-ui .login-btn{min-height:52px;width:100%;border-radius:10px;font-size:16px;box-shadow:0 4px 10px var(--dr-shade)}
.farm-ui .auth-switch{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:0 8px;font-size:14px;line-height:1.7;margin:16px 0 0}
.farm-ui .auth-switch a{font-weight:650}
.farm-ui .login-card>.auth-note{font-size:13px;line-height:1.7;margin:20px 0 0;padding:12px;border-radius:10px}
.farm-ui .login-card #login-error:empty{margin:0;padding:0;min-height:0}
@media(max-width:900px){
 .farm-ui .farm-welcome{padding:28px;min-height:620px}
 .farm-ui .login-card{padding:28px;flex-basis:440px}
 .farm-ui .farm-welcome h1{font-size:32px}
}
@media(max-width:760px){
 .farm-ui .login-page{display:flex;flex-direction:column;gap:0;max-width:480px;padding:0;min-height:0}
 /* จอแคบใช้รูปกว้าง 800 px (92 KB แทน 349 KB) - กล่องรูปกว้างไม่เกิน 480 px เน็ตมือถือในสวนช้า
    กฎนี้ทับ background-image ของจอกว้าง เบราว์เซอร์จึงโหลดแค่รูปเดียว ไม่ใช่สองรูป */
 .farm-ui .farm-welcome{box-sizing:border-box;flex:none;max-width:none;min-height:230px;width:100%;padding:22px 24px;border-radius:20px 20px 0 0;background-image:linear-gradient(180deg,var(--entry-overlay-mid),var(--entry-overlay-clear) 30%,var(--entry-overlay) 100%),url('assets/orchard-entry-96-800.webp');background-position:center 45%}
 .farm-ui .entry-brand{gap:8px}
 .farm-ui .entry-brand img{width:32px;height:32px}
 .farm-ui .entry-brand strong{font-size:16px}
 .farm-ui .entry-brand span{font-size:12px}
 .farm-ui .entry-story{padding-top:22px}
 .farm-ui .farm-welcome .farm-eyebrow,.farm-ui .farm-features{display:none}
 .farm-ui .farm-welcome h1{font-size:28px;line-height:1.4;margin:0 0 8px}
 .farm-ui .farm-welcome p{font-size:14px;line-height:1.65}
 .farm-ui .farm-welcome p br{display:none}
 .farm-ui .login-card{flex:none;max-width:none;width:100%;padding:26px 24px;border-radius:0 0 20px 20px;border:1px solid var(--entry-line);border-top:0;box-shadow:0 10px 24px var(--dr-shade)}
 .farm-ui .entry-form-heading{gap:12px;margin-bottom:12px}
 .farm-ui .login-logo{width:44px;height:44px;min-width:44px;flex-basis:44px}
 .farm-ui #login-profile-img{width:44px;height:44px}
 .farm-ui .login-title{font-size:20px}
 .farm-ui .login-subtitle{font-size:14px;margin-bottom:22px}
}

/* Build 98: optional Chart.js frames, scoped to the statistics tab. */
.farm-ui #stats-tab .stats-canvas-frame{position:relative;height:240px;width:100%;min-width:0}
.farm-ui #stats-tab .stats-canvas-line{height:190px}
.farm-ui #stats-tab .stats-canvas-frame canvas{max-width:100%;touch-action:pan-y}
.farm-ui #stats-tab .stats-canvas-reading{min-height:42px;padding:10px 0 0;font-size:14px;line-height:1.6;color:var(--muted);overflow-wrap:anywhere}
.farm-ui #stats-tab .stats-canvas-frame canvas:focus-visible{outline:3px solid var(--dr-focus);outline-offset:3px;border-radius:8px}
