:root{--bg:#0b1016;--panel:#111923;--panel2:#162231;--line:#263548;--text:#f4f7fb;--muted:#9dadc1;--blue:#1d9bf0;--blue2:#1479bd;--danger:#ff5a5f;--success:#27c281;--radius:18px}*{box-sizing:border-box}body{margin:0;min-height:100vh;font-family:Arial,Helvetica,sans-serif;background:radial-gradient(circle at top left,#17283a,var(--bg) 45%);color:var(--text)}button,input,textarea,select{font:inherit}button{cursor:pointer}.hidden{display:none!important}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:24px}.auth-card{width:min(440px,100%);background:rgba(17,25,35,.96);border:1px solid var(--line);border-radius:var(--radius);padding:28px;box-shadow:0 24px 80px rgba(0,0,0,.35)}.brand-lockup,.brand-mini,.row-between{display:flex;align-items:center;justify-content:space-between;gap:14px}.brand-lockup{justify-content:flex-start;margin-bottom:28px}.brand-lockup h1{margin:0;font-size:28px}.brand-lockup p,.topbar p{margin:5px 0 0;color:var(--muted)}.logo-mark{width:54px;height:54px;border-radius:16px;display:grid;place-items:center;background:linear-gradient(145deg,var(--blue),#0d4f82);font-weight:800;letter-spacing:.5px;overflow:hidden}.logo-mark img{width:100%;height:100%;object-fit:contain;padding:6px}.logo-mark.small{width:38px;height:38px;border-radius:12px;font-size:14px}.form-stack{display:grid;gap:14px}label{display:grid;gap:7px;color:var(--muted);font-size:14px}input,textarea,select{width:100%;border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:#0c131d;color:var(--text);outline:none}textarea{min-height:100px;resize:vertical}input:focus,textarea:focus,select:focus{border-color:var(--blue)}.primary-btn,.secondary-btn,.link-btn,.nav-item,.icon-btn{border:0;border-radius:12px;padding:11px 14px;color:var(--text)}.primary-btn{background:var(--blue);font-weight:700}.primary-btn:hover{background:var(--blue2)}.secondary-btn{background:var(--panel2);border:1px solid var(--line)}.danger-btn{background:transparent;border:1px solid var(--danger);color:var(--danger)}.link-btn{background:transparent;color:var(--blue);padding-left:0}.icon-btn{background:#233348;color:var(--muted);font-size:13px}.message{min-height:20px;color:var(--muted)}.message.error{color:var(--danger)}.message.success{color:var(--success)}small,.muted{color:var(--muted)}.app-shell{min-height:100vh;display:grid;grid-template-columns:280px 1fr}.sidebar{background:rgba(12,19,29,.96);border-right:1px solid var(--line);padding:22px;display:flex;flex-direction:column;gap:24px}.brand-mini{justify-content:flex-start;font-weight:800}nav{display:grid;gap:8px}.nav-item{background:transparent;color:var(--muted);text-align:left}.nav-item.active,.nav-item:hover{background:var(--panel2);color:var(--text)}.nav-item.disabled{opacity:.45;cursor:not-allowed}.main-content{padding:26px;overflow:auto}.topbar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:22px}.topbar h2{margin:0;font-size:30px}.module-panel,.panel-card{background:rgba(17,25,35,.88);border:1px solid var(--line);border-radius:var(--radius);padding:22px}.grid-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.grid-two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.metric-card,.report-card,.observation-card{background:var(--panel2);border:1px solid var(--line);border-radius:16px;padding:16px}.metric-card strong{display:block;font-size:28px;margin-top:8px}.report-builder,.stack{display:grid;gap:16px}.report-actions,.bottom-actions,.button-row{display:flex;flex-wrap:wrap;gap:10px}.report-list{display:grid;gap:10px}.report-card{cursor:pointer}.report-card:hover{border-color:var(--blue)}.report-card h4{margin:0 0 6px}.report-card p{margin:0;color:var(--muted);font-size:13px}.status-pill{display:inline-flex;border:1px solid var(--line);border-radius:999px;padding:4px 9px;color:var(--muted);font-size:12px}.floating-add{position:fixed;right:22px;bottom:86px;width:58px;height:58px;border-radius:50%;background:var(--blue);border:none;color:white;font-size:32px;box-shadow:0 18px 40px rgba(0,0,0,.35)}.bottom-actions{position:sticky;bottom:0;margin:18px -22px -22px;padding:14px 22px;background:rgba(12,19,29,.96);border-top:1px solid var(--line)}.photo-preview{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.photo-preview img{width:88px;height:88px;object-fit:cover;border-radius:10px;border:1px solid var(--line)}.save-status{color:var(--muted);font-size:13px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px}table{width:100%;border-collapse:collapse}th,td{border-bottom:1px solid var(--line);padding:10px;text-align:left}th{color:var(--muted);font-weight:600}.import-label{display:inline-flex;align-items:center;gap:8px;background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:11px 14px;color:var(--text);cursor:pointer}.import-label input{display:none}@media(max-width:850px){.app-shell{grid-template-columns:1fr}.sidebar{position:sticky;top:0;z-index:5}.grid-cards,.grid-two{grid-template-columns:1fr}.topbar{align-items:stretch;flex-direction:column}.floating-add{bottom:96px}.bottom-actions{position:fixed;left:0;right:0;margin:0;z-index:10}.main-content{padding-bottom:90px}}

.mobile-menu-btn{display:none;background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:11px 14px;color:var(--text);font-weight:700}.photo-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.photo-limit{color:var(--muted);font-size:13px;margin-right:auto}.small-note{font-size:12px;margin:6px 0 0}.photo-preview{display:grid;grid-template-columns:repeat(auto-fill,minmax(135px,1fr));gap:10px;margin-top:10px}.photo-item{background:#0c131d;border:1px solid var(--line);border-radius:12px;padding:8px}.photo-item img{width:100%;height:105px;object-fit:cover;border-radius:10px;border:1px solid var(--line);display:block}.photo-tools{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.photo-tools .icon-btn{font-size:11px;padding:7px 8px}

@media(max-width:850px){.mobile-menu-btn{display:inline-flex;align-items:center;justify-content:center;width:max-content}.sidebar{position:fixed;left:12px;right:12px;top:12px;z-index:50;max-height:calc(100vh - 24px);overflow:auto;border:1px solid var(--line);border-radius:18px;box-shadow:0 24px 80px rgba(0,0,0,.5);transform:translateY(-115%);transition:transform .2s ease}.sidebar.mobile-open{transform:translateY(0)}.sidebar nav{grid-template-columns:1fr}.sidebar .brand-mini{padding-right:60px}.main-content{padding:16px;padding-bottom:110px}.topbar{position:sticky;top:0;z-index:20;background:rgba(11,16,22,.96);border:1px solid var(--line);border-radius:16px;padding:12px;margin-bottom:14px}.topbar h2{font-size:22px}.photo-preview{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-item img{height:92px}.bottom-actions{gap:8px}.bottom-actions button{flex:1 1 45%;font-size:13px;padding:10px}.floating-add{right:18px;bottom:126px}}

/* V2.4.0 dashboard and photo timestamp updates */
.dashboard-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-metric{display:grid;gap:10px;align-content:start}.dashboard-metric .secondary-btn{width:max-content}.dashboard-report-results{margin:18px 0}.dashboard-report-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.dashboard-report-row button{white-space:nowrap}.photo-timestamp-label{display:grid;gap:5px;font-size:12px;color:var(--muted);margin-bottom:7px}.photo-timestamp-input{padding:8px 9px;border-radius:9px;font-size:12px}.photo-item img{object-fit:contain;background:#070b10}
@media(max-width:850px){.dashboard-cards{grid-template-columns:1fr}.dashboard-report-row{align-items:stretch;flex-direction:column}.dashboard-report-row button{width:100%}}


/* V2.4.1 photo timestamp UI fixes */
.photo-preview{align-items:start}.photo-item{min-width:0;overflow:hidden}.photo-timestamp-label{min-width:0}.photo-timestamp-label span{display:block;margin-bottom:4px}.photo-timestamp-input{width:100%;max-width:100%;min-width:0;box-sizing:border-box;font-size:11px;line-height:1.2;padding:8px 7px;appearance:auto}.photo-tools{align-items:center}.photo-item img{aspect-ratio:4/3;height:auto;max-height:105px;object-fit:contain}
@media(max-width:850px){.photo-preview{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.photo-item{padding:7px}.photo-timestamp-label{font-size:11px;gap:4px}.photo-timestamp-input{font-size:10px;padding:7px 5px;border-radius:8px}.photo-item img{height:auto;max-height:88px}.photo-tools .icon-btn{font-size:10px;padding:6px 7px}.photo-actions{gap:8px}.photo-actions .secondary-btn{padding:9px 10px;font-size:13px}}
@media(max-width:420px){.photo-timestamp-input{font-size:9.5px;padding-left:4px;padding-right:4px}.photo-tools{gap:5px}.photo-tools .icon-btn{padding:6px}}

/* V2.4.2 interactive crop editor */
body.crop-open{overflow:hidden}.crop-modal{position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,.92);display:flex;align-items:stretch;justify-content:center;color:var(--text)}.crop-editor{width:min(980px,100%);min-height:100vh;display:grid;grid-template-rows:auto 1fr auto auto;background:#05080d}.crop-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line);background:#0b1016}.crop-header strong{font-size:16px}.crop-header button{border:0;background:transparent;color:var(--blue);font-weight:700;font-size:15px}.crop-stage-wrap{min-height:0;padding:14px;display:grid;place-items:center}.crop-stage{position:relative;width:100%;height:100%;min-height:420px;display:grid;place-items:center;overflow:hidden;touch-action:none}.crop-image{max-width:100%;max-height:100%;display:block;user-select:none;-webkit-user-select:none}.crop-shade{position:absolute;background:rgba(0,0,0,.52);pointer-events:none}.crop-box{position:absolute;border:2px solid #fff;box-shadow:0 0 0 1px rgba(0,0,0,.35);touch-action:none;cursor:move}.crop-grid{position:absolute;background:rgba(255,255,255,.72);pointer-events:none}.crop-grid-v{top:0;bottom:0;width:1px}.crop-grid-v.one{left:33.333%}.crop-grid-v.two{left:66.666%}.crop-grid-h{left:0;right:0;height:1px}.crop-grid-h.one{top:33.333%}.crop-grid-h.two{top:66.666%}.crop-handle{position:absolute;width:24px;height:24px;border:3px solid #fff;background:rgba(29,155,240,.45);border-radius:50%;box-shadow:0 3px 12px rgba(0,0,0,.45)}.crop-handle.nw{left:-13px;top:-13px;cursor:nwse-resize}.crop-handle.ne{right:-13px;top:-13px;cursor:nesw-resize}.crop-handle.sw{left:-13px;bottom:-13px;cursor:nesw-resize}.crop-handle.se{right:-13px;bottom:-13px;cursor:nwse-resize}.crop-actions{display:flex;justify-content:center;gap:10px;padding:12px 16px;border-top:1px solid var(--line);background:#0b1016}.crop-help{text-align:center;margin:0;padding:0 16px 14px;background:#0b1016;font-size:12px}
@media(max-width:850px){.crop-editor{width:100%;height:100vh}.crop-stage-wrap{padding:10px}.crop-stage{min-height:0;height:calc(100vh - 150px)}.crop-header{padding:12px}.crop-actions{padding:10px 12px}.crop-actions button{flex:1}.crop-handle{width:28px;height:28px}.crop-handle.nw{left:-15px;top:-15px}.crop-handle.ne{right:-15px;top:-15px}.crop-handle.sw{left:-15px;bottom:-15px}.crop-handle.se{right:-15px;bottom:-15px}}
