:root{
  --green-900:#1b5e20; --green-700:#2e7d32; --green-600:#388e3c; --green-500:#43a047;
  --green-100:#e8f5e9; --green-50:#f1f8f2;
  --amber:#f9a825; --red:#e53935; --red-bg:#ffebee; --orange:#fb8c00;
  --bg:#f4f7f4; --card:#ffffff; --ink:#1c2b1e; --muted:#5b6b5d; --line:#e2ece3;
  --shadow:0 2px 10px rgba(30,60,35,.07); --radius:16px;
  --safe-b:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme: dark){
  :root{
    --bg:#0f150f; --card:#182018; --ink:#e7f0e8; --muted:#9db0a0; --line:#253226;
    --green-100:#123016; --green-50:#0f2312; --red-bg:#2a1414;
    --shadow:0 2px 12px rgba(0,0,0,.4);
  }
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  font-family:'Pretendard','Apple SD Gothic Neo','Malgun Gothic',system-ui,-apple-system,sans-serif;
  background:var(--bg); color:var(--ink);
  padding-bottom:calc(64px + var(--safe-b));
  line-height:1.55; -webkit-font-smoothing:antialiased;
}

/* App bar */
.appbar{position:sticky;top:0;z-index:20;background:linear-gradient(135deg,var(--green-700),var(--green-500));color:#fff;box-shadow:var(--shadow)}
.appbar-inner{max-width:640px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;padding:12px 16px;padding-top:calc(12px + env(safe-area-inset-top,0px))}
.brand{display:flex;align-items:center;gap:10px}
.brand-logo{font-size:26px;filter:drop-shadow(0 1px 1px rgba(0,0,0,.2))}
.brand-text strong{display:block;font-size:16px;line-height:1.2}
.brand-text small{opacity:.85;font-size:11px}
.ghost-btn{background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.4);color:#fff;padding:7px 12px;border-radius:10px;font-size:13px;font-weight:600}

main{max-width:640px;margin:0 auto;padding:16px}
.page{display:none;animation:fade .3s ease}
.page.active{display:block}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

.hero{padding:8px 4px 14px}
.hero h1{font-size:22px;margin:0 0 6px;letter-spacing:-.4px}
.hero p{margin:0;color:var(--muted);font-size:14px}
.hero b{color:var(--green-600)}

.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin-bottom:14px;box-shadow:var(--shadow)}
.card-h{margin:0 0 10px;font-size:15px;display:flex;align-items:center;gap:8px}
.hint{font-size:11px;font-weight:600;color:var(--muted);background:var(--green-50);border:1px solid var(--line);padding:2px 8px;border-radius:20px}
.muted{color:var(--muted)} .small{font-size:12.5px} .muted.small{line-height:1.5}

/* Uploader */
.uploader{padding:18px}
.uploader-empty{text-align:center;padding:20px 8px}
.uploader-icon{font-size:44px;margin-bottom:6px}
.uploader-title{font-size:16px;font-weight:700;margin:6px 0 2px}
.uploader-sub{color:var(--muted);font-size:13px;margin:0 0 16px}
.uploader-actions{display:flex;flex-direction:column;gap:10px}
.uploader-preview img{width:100%;border-radius:12px;max-height:340px;object-fit:cover;background:#000}
.preview-actions{display:flex;gap:10px;align-items:center;margin-top:12px}

.primary-btn{background:linear-gradient(135deg,var(--green-600),var(--green-500));color:#fff;border:none;padding:14px 18px;border-radius:12px;font-size:15px;font-weight:700;cursor:pointer;box-shadow:0 4px 12px rgba(56,142,60,.3);flex:1}
.primary-btn:active{transform:translateY(1px)}
.secondary-btn{background:var(--green-50);color:var(--green-700);border:1.5px solid var(--green-500);padding:13px 18px;border-radius:12px;font-size:15px;font-weight:700;cursor:pointer;flex:1}
.text-btn{background:none;border:none;color:var(--muted);font-size:14px;font-weight:600;padding:10px;cursor:pointer;text-decoration:underline}

.model-status{text-align:center;font-size:12.5px;color:var(--muted);margin:-2px 0 14px}

/* Sample strip */
.sample-strip{display:flex;gap:9px;overflow-x:auto;padding:4px 2px 2px;-webkit-overflow-scrolling:touch}
.sample-thumb{flex:0 0 auto;width:78px;background:none;border:none;padding:0;cursor:pointer;text-align:center}
.sample-thumb img{width:78px;height:78px;object-fit:cover;border-radius:12px;border:2px solid var(--line)}
.sample-thumb:active img{border-color:var(--green-500)}
.sample-thumb span{display:block;font-size:11px;color:var(--muted);margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.model-status.ready{color:var(--green-600)}
.model-status.error{color:var(--red)}

/* Result main */
.result-main{border-left:6px solid var(--green-500)}
.result-main.sick{border-left-color:var(--red)}
.result-main.healthy{border-left-color:var(--green-500)}
.rm-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.rm-plant{font-size:13px;color:var(--muted);font-weight:600}
.rm-name{font-size:20px;font-weight:800;margin:2px 0;letter-spacing:-.3px}
.rm-conf{text-align:center;flex-shrink:0}
.rm-conf .num{font-size:26px;font-weight:800;color:var(--green-600)}
.rm-conf small{display:block;font-size:11px;color:var(--muted)}
.badge{display:inline-block;font-size:12px;font-weight:700;padding:3px 10px;border-radius:20px;margin-top:6px}
.badge.sick{background:var(--red-bg);color:var(--red)}
.badge.healthy{background:var(--green-100);color:var(--green-700)}
.rm-symptom{margin-top:10px;font-size:13.5px;color:var(--ink);background:var(--green-50);border-radius:10px;padding:10px 12px}
.rm-patho{font-size:12px;color:var(--muted);margin-top:8px}

/* Top3 */
.top3-row{display:flex;align-items:center;gap:10px;margin:9px 0}
.top3-rank{width:22px;height:22px;border-radius:50%;background:var(--green-100);color:var(--green-700);font-weight:800;font-size:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.top3-info{flex:1;min-width:0}
.top3-name{font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.top3-bar{height:7px;background:var(--line);border-radius:6px;overflow:hidden;margin-top:4px}
.top3-fill{height:100%;background:linear-gradient(90deg,var(--green-500),var(--green-600));border-radius:6px}
.top3-pct{font-size:13px;font-weight:700;color:var(--green-600);width:48px;text-align:right;flex-shrink:0}

/* Severity */
.sev-head{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.sev-dot{width:14px;height:14px;border-radius:50%}
.sev-scale{display:flex;gap:6px;margin:12px 0}
.sev-step{flex:1;text-align:center;font-size:12px;font-weight:700;padding:8px 4px;border-radius:9px;background:var(--green-50);color:var(--muted);border:1px solid var(--line)}
.sev-step.on{color:#fff}
.sev-step.on.s0{background:var(--green-500)} .sev-step.on.s1{background:var(--amber)} .sev-step.on.s2{background:var(--red)}
.sev-meta{font-size:12.5px;color:var(--muted)}

/* Prescription */
.rx-block{margin:12px 0}
.rx-block h4{margin:0 0 6px;font-size:14px;display:flex;align-items:center;gap:7px}
.rx-block.hi h4{color:var(--green-700)}
.rx-list{margin:0;padding-left:18px}
.rx-list li{font-size:13.5px;margin:4px 0}
.rx-now{background:var(--green-50);border:1px solid var(--green-500);border-radius:11px;padding:11px 13px;font-size:14px}
.rx-now b{color:var(--green-700)}

/* GenAI */
.genai-out{white-space:pre-wrap;font-size:13.5px;background:var(--green-50);border-radius:11px;padding:13px;margin-bottom:10px;border:1px solid var(--line)}
.genai-actions{display:flex;gap:8px;align-items:center}

/* Sliders */
.slider-row{margin:14px 0}
.slider-row:first-child{margin-top:4px}
.slider-row label{display:flex;justify-content:space-between;font-size:14px;font-weight:600;margin-bottom:8px}
.slider-row output{color:var(--green-600);font-weight:800}
input[type=range]{width:100%;-webkit-appearance:none;height:6px;border-radius:6px;background:var(--line);outline:none}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:24px;height:24px;border-radius:50%;background:var(--green-600);border:3px solid #fff;box-shadow:0 2px 6px rgba(0,0,0,.25);cursor:pointer}
input[type=range]::-moz-range-thumb{width:22px;height:22px;border-radius:50%;background:var(--green-600);border:3px solid #fff;cursor:pointer}

/* Gauge */
.gauge-wrap{position:relative;display:flex;justify-content:center;align-items:flex-end;padding-top:6px}
.gauge-label{position:absolute;bottom:6px;text-align:center;width:100%}
.gauge-label #riskPct{font-size:32px;font-weight:800;display:block;line-height:1}
.gauge-label small{color:var(--muted);font-size:13px;font-weight:700}
.risk-advice{margin-top:12px;font-size:13.5px;padding:11px 13px;border-radius:11px;background:var(--green-50);border:1px solid var(--line)}
.risk-advice.warn{background:#fff8e1;border-color:var(--amber)}
.risk-advice.danger{background:var(--red-bg);border-color:var(--red)}
@media (prefers-color-scheme: dark){.risk-advice.warn{background:#2a2410}.risk-advice.danger{background:#2a1414}}

/* Factor bars */
.factor{display:flex;align-items:center;gap:10px;margin:10px 0;font-size:13px}
.factor-name{width:62px;font-weight:600;flex-shrink:0}
.factor-track{flex:1;height:20px;background:var(--line);border-radius:6px;position:relative;overflow:hidden}
.factor-mid{position:absolute;left:50%;top:0;bottom:0;width:2px;background:var(--muted);opacity:.4}
.factor-fill{position:absolute;top:0;bottom:0;border-radius:5px}
.factor-fill.up{background:var(--red);left:50%} .factor-fill.down{background:var(--green-500);right:50%}
.factor-val{width:34px;text-align:right;font-weight:700;flex-shrink:0}

/* Stat grid */
.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px}
.stat{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;text-align:center;box-shadow:var(--shadow)}
.stat .n{font-size:26px;font-weight:800;color:var(--green-600);line-height:1.1}
.stat .l{font-size:12px;color:var(--muted);margin-top:3px}

/* Per class */
.pc-row{display:flex;align-items:center;gap:8px;margin:6px 0;font-size:12px}
.pc-name{width:120px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0}
.pc-bar{flex:1;height:6px;background:var(--line);border-radius:5px;overflow:hidden}
.pc-fill{height:100%;background:var(--green-500)}
.pc-pct{width:40px;text-align:right;font-weight:700;color:var(--green-600)}

canvas{max-width:100%;display:block;margin:0 auto}

/* Steps / lists */
.steps{margin:0;padding-left:20px}
.steps li{font-size:13.5px;margin:8px 0}
.steam{list-style:none;margin:0;padding:0}
.steam li{font-size:13.5px;padding:8px 0;border-bottom:1px solid var(--line)}
.steam li:last-child{border:none}
.steam b{color:var(--green-600);margin-right:6px}

/* Tab bar */
.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:20;display:flex;background:var(--card);border-top:1px solid var(--line);padding-bottom:var(--safe-b);box-shadow:0 -2px 12px rgba(0,0,0,.05)}
.tab{flex:1;background:none;border:none;padding:9px 4px 7px;font-size:11px;font-weight:600;color:var(--muted);cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px}
.tab span{font-size:20px;filter:grayscale(.4);opacity:.7}
.tab.active{color:var(--green-600)}
.tab.active span{filter:none;opacity:1}

/* Overlay */
[hidden]{display:none !important}
.overlay{position:fixed;inset:0;z-index:50;background:rgba(20,30,22,.55);backdrop-filter:blur(3px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;color:#fff}
.overlay p{font-size:14px;font-weight:600}
.spinner{width:46px;height:46px;border:4px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

@media (min-width:560px){
  .uploader-actions{flex-direction:row}
}
