:root{--bg:#f6f8fb;--surface:#fff;--ink:#132033;--muted:#64748b;--line:#d8e0ea;--navy:#17365d;--blue:#2f6fe4;--green:#18a058;--danger:#b42318}*{box-sizing:border-box}body,html{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font-family:Arial,Helvetica,sans-serif}button,input,select,textarea{font:inherit}.app-shell{min-height:100dvh;display:flex;flex-direction:column}.topbar{background:var(--navy);color:#fff;padding:16px max(16px,env(safe-area-inset-left))}.topbar-inner{max-width:1180px;margin:0 auto;justify-content:space-between;gap:12px;flex-wrap:wrap}.brand,.topbar-inner{display:flex;align-items:center}.brand{color:#fff;gap:14px;min-width:0;text-decoration:none}.brand-mark{color:#fff;font-size:44px;font-weight:400;line-height:.9;letter-spacing:0;white-space:nowrap}.brand-copy{display:flex;flex-direction:column;gap:2px;min-width:0}.brand strong{font-size:20px;line-height:1.05}.brand span,.user-chip{color:#dbe7f3;font-size:13px}.brand .brand-mark{color:#fff;font-size:44px}.topbar-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.install-button,.login-button{min-height:40px;border:1px solid hsla(0,0%,100%,.45);border-radius:6px;background:hsla(0,0%,100%,.08);color:#fff;font-weight:700;padding:0 14px;cursor:pointer}.install-button{background:#fff;color:var(--navy)}.install-wrapper{position:relative}.install-help{background:#fff;border:1px solid var(--line);border-radius:6px;box-shadow:0 10px 24px rgba(15,23,42,.18);color:var(--ink);font-size:13px;line-height:1.35;padding:10px;position:absolute;right:0;top:calc(100% + 8px);width:230px;z-index:10}.main{width:100%;max-width:1180px;margin:0 auto;padding:22px 16px 48px}.hero{display:grid;grid-template-columns:1fr;grid-gap:16px;gap:16px;margin-bottom:20px}.panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:18px}.panel h1,.panel h2{margin:0 0 10px}.panel p{margin:0;color:var(--muted);line-height:1.45}.plant-select{display:grid;grid-gap:10px;gap:10px}.plant-select label{font-weight:700}.field select[multiple],.plant-select select{width:100%;border:1px solid var(--line);border-radius:6px;padding:0 12px;background:#fff}.plant-select select{min-height:48px}.field select[multiple]{min-height:180px;padding:10px 12px}.action-grid{display:grid;grid-template-columns:1fr;grid-gap:14px;gap:14px}.action-card{min-height:142px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:20px;display:flex;flex-direction:column;justify-content:space-between;text-decoration:none;color:var(--ink)}.action-card strong{font-size:24px}.action-card span{color:var(--muted);margin-top:8px;line-height:1.4}.primary{border-color:#b8cdf5;box-shadow:inset 4px 0 0 var(--blue)}.success{border-color:#bce7cc;box-shadow:inset 4px 0 0 var(--green)}.admin{border-color:#cbd5e1;box-shadow:inset 4px 0 0 #475569}.form-grid{display:grid;grid-gap:14px;gap:14px}.page-heading{margin-bottom:18px}.admin-grid{display:grid;grid-gap:16px;gap:16px}.admin-note{background:#f8fafc;color:var(--muted);line-height:1.4;padding:12px}.admin-note,.checkbox-grid{border:1px solid var(--line);border-radius:6px}.checkbox-grid{display:grid;grid-gap:0;gap:0;max-height:260px;overflow:auto;padding:6px}.checkbox-row{align-items:center;border-radius:4px;display:grid;grid-gap:8px;gap:8px;grid-template-columns:20px 1fr;min-height:38px;padding:6px}.checkbox-row:hover{background:#f8fafc}.checkbox-row input{height:18px;width:18px}.admin-status{margin-top:16px}.user-list{display:grid;grid-gap:12px;gap:12px;margin-top:18px}.user-list h2,.user-list p{margin:0}.user-row{border-top:1px solid var(--line);display:grid;grid-gap:10px;gap:10px;padding-top:12px}.user-row div{display:grid;grid-gap:4px;gap:4px}.user-row .row-actions{align-content:center;justify-items:start}.user-row span{color:var(--muted);font-size:13px}.field{display:grid;grid-gap:6px;gap:6px}.field label{font-weight:700}.field input,.field select,.field textarea{min-height:48px;border:1px solid var(--line);border-radius:6px;padding:10px 12px;background:#fff}.photo-slots{display:grid;grid-template-columns:1fr;grid-gap:12px;gap:12px}.photo-slot{border:1px dashed var(--line);border-radius:8px;min-height:124px;padding:14px;display:grid;grid-gap:10px;gap:10px;align-content:center}.button{min-height:48px;border:0;border-radius:6px;background:var(--navy);color:#fff;font-weight:700;padding:0 18px;cursor:pointer}.button:disabled{cursor:not-allowed;opacity:.65}.button.secondary{background:#eef3f9;color:var(--ink)}.button.compact{min-height:36px;padding:0 12px}.button-row{display:flex;flex-wrap:wrap;gap:10px}.text-link{color:var(--blue);display:inline-block;font-weight:700;margin-bottom:10px;text-decoration:none}.scanner{display:grid;grid-gap:10px;gap:10px}.scanner p{margin:0;color:var(--muted);font-size:14px}.scanner-video{width:100%;max-height:320px;border-radius:8px;background:#0f172a;object-fit:cover}.status-message{border:1px solid var(--line);border-radius:6px;background:#f8fafc;color:var(--ink);line-height:1.4;padding:12px}.results-list{display:grid;grid-gap:10px;gap:10px;margin-top:18px}.result-row{align-items:center;background:#fff;border:1px solid var(--line);border-radius:8px;color:var(--ink);display:grid;grid-gap:12px;gap:12px;padding:14px;text-decoration:none}.result-row div{display:grid;grid-gap:4px;gap:4px}.detail-list span,.photo-card figcaption,.result-row span{color:var(--muted);font-size:13px}.detail-grid,.photo-gallery{margin-top:18px}.detail-grid,.detail-list,.photo-gallery{display:grid;grid-gap:14px;gap:14px}.detail-list div{display:grid;grid-gap:4px;gap:4px}.photo-gallery{grid-template-columns:1fr}.photo-card{background:#fff;border:1px solid var(--line);border-radius:8px;margin:0;overflow:hidden}.photo-card img{aspect-ratio:4/3;background:#0f172a;display:block;object-fit:cover;width:100%}.photo-card figcaption{padding:10px 12px}@media (max-width:520px){.brand{align-items:flex-start;gap:10px}.brand-mark{font-size:34px}.brand strong{font-size:18px}.topbar-actions{width:100%;justify-content:flex-start}.install-help{left:0;right:auto}}@media (min-width:760px){.hero{grid-template-columns:1.5fr 1fr}.action-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-slots{grid-template-columns:repeat(3,minmax(0,1fr))}.admin-grid{grid-template-columns:1.4fr 1fr}.user-row{grid-template-columns:1fr 1.2fr auto}.user-row .row-actions{justify-items:end}.result-row{grid-template-columns:1.2fr 1fr}.detail-list,.photo-gallery{grid-template-columns:repeat(3,minmax(0,1fr))}}