:root{--bg: #f1f5f9;--card: #fff;--ink: #0f172a;--muted: #64748b;--line: #cbd5e1;--brand: #0369a1;--brand-ink: #fff;--warn: #b45309;--warn-bg: #fef3c7;--err: #b91c1c;--err-bg: #fee2e2;--ok: #15803d;--ok-bg: #dcfce7;--info-bg: #e0f2fe}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font:16px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--ink)}main{max-width:1100px;margin:0 auto;padding:12px 14px 80px}h1{font-size:1.4rem;margin:8px 0 12px}h2{font-size:1.1rem;margin:24px 0 8px}a{color:var(--brand)}.muted{color:var(--muted)}.small{font-size:.82rem}.mono{font-family:ui-monospace,Menlo,Consolas,monospace;word-break:break-all}.nowrap{white-space:nowrap}.grow{flex:1}header.top{position:sticky;top:0;z-index:5;background:#0f172a;color:#fff;display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;padding:8px 14px;padding-top:max(8px,env(safe-area-inset-top))}header.top nav{display:flex;flex-wrap:wrap;gap:4px 4px;flex:1}header.top a{color:#cbd5e1;text-decoration:none;padding:8px 10px;border-radius:8px}header.top a.on{background:#1e293b;color:#fff}header.top .who{display:flex;align-items:center;gap:10px}header.top .muted{color:#94a3b8}header.top button.link{color:#7dd3fc}.chip{padding:4px 10px;border-radius:999px;font-size:.85rem}.chip.warn{background:var(--warn-bg);color:var(--warn)!important}.offline-bar{background:var(--warn-bg);color:var(--warn);text-align:center;padding:6px 12px;font-size:.9rem}label{display:block;font-size:.9rem;color:#334155;margin:10px 0}input,select,textarea{display:block;width:100%;margin-top:4px;padding:12px;font:inherit;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);min-height:46px}input:disabled,select:disabled{background:#f1f5f9;color:#475569}input[type=date]{width:auto}button{font:inherit;border:0;border-radius:10px;padding:12px 18px;min-height:46px;cursor:pointer}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--brand);color:var(--brand-ink);font-weight:600}button.secondary{background:#e2e8f0;color:var(--ink)}button.danger{background:var(--err);color:#fff}button.small{padding:6px 10px;min-height:36px;font-size:.85rem}button.link{background:none;color:var(--brand);padding:0 4px;min-height:0;text-decoration:underline}.alert{padding:10px 12px;border-radius:10px;margin:10px 0}.alert ul{margin:6px 0 0;padding-left:20px}.alert.error{background:var(--err-bg);color:var(--err)}.alert.warn{background:var(--warn-bg);color:var(--warn)}.alert.ok{background:var(--ok-bg);color:var(--ok)}.alert.info{background:var(--info-bg);color:#075985}.badge{display:inline-block;font-size:.74rem;padding:2px 8px;border-radius:999px;margin:0 4px 2px 0;background:#e2e8f0;color:#334155}.badge.warn,.badge.flag{background:var(--warn-bg);color:var(--warn)}.badge.ok,.badge.st-GT_CREATED{background:var(--ok-bg);color:var(--ok)}.badge.info,.badge.st-APPROVED{background:var(--info-bg);color:#075985}.badge.st-CANCELLED,.badge.st-DISCARDED{background:#e2e8f0;color:#475569}.badge.st-NVD_CONFIRMED{background:#ede9fe;color:#5b21b6}.login{max-width:380px;margin:12vh auto 0;padding:0 20px}.login button{width:100%;margin-top:8px}.capture{max-width:520px;margin:0 auto}.camera-btn{display:block;text-align:center;background:var(--brand);color:#fff;font-weight:700;font-size:1.2rem;padding:22px;border-radius:14px;margin-top:18px;cursor:pointer}.camera-btn.disabled{opacity:.45;pointer-events:none}details.typed{margin:10px 0;padding:4px 12px;background:var(--card);border-radius:10px}.cards{list-style:none;margin:0;padding:0;display:grid;gap:8px}.card{background:var(--card);border-radius:12px;padding:0;border-left:4px solid transparent}.card>a{display:block;padding:10px 12px;color:inherit;text-decoration:none}li.card:not(:has(a)){padding:10px 12px}.card.attention{border-left-color:#f59e0b}.card .row1,.card .row3{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.card .row2{margin:2px 0 6px;font-size:.88rem}.filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.filters input,.filters select{width:auto;flex:1 1 150px;margin:0}.pager{display:flex;align-items:center;gap:12px;margin:14px 0;flex-wrap:wrap}.detail-grid{display:grid;gap:16px;grid-template-columns:1fr}@media(min-width:860px){.detail-grid{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:start}.photos{position:sticky;top:64px}}.photos .photo-main{width:100%;max-height:70vh;object-fit:contain;background:#0f172a;border-radius:12px;cursor:zoom-in}.img-problem{background:#e2e8f0;border-radius:12px;padding:40px 12px;text-align:center}.thumbs{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.thumb{background:#e2e8f0;border-radius:8px;padding:8px 12px;font-size:.85rem;cursor:pointer;min-height:0}.thumb.on{background:var(--brand);color:#fff}.thumb.add{background:#fff;border:1px dashed var(--brand);color:var(--brand);display:inline-block}.form{background:var(--card);border-radius:12px;padding:4px 14px 14px}.locs{display:grid;grid-template-columns:1fr 1fr;gap:10px}.field.flagged input{border-color:#f59e0b;background:#fffbeb}.field.invalid input{border-color:var(--err)}.field .badge{margin-left:6px}.field-line{display:flex;gap:8px;align-items:center}.field-line input{flex:1}.field-error{color:var(--err);font-size:.85rem;margin-top:2px}.hint{color:var(--muted);font-size:.85rem;margin-top:2px}.req{color:var(--err)}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.actions .primary{flex:1 1 140px;min-height:52px}.inline-form{background:#f8fafc;border:1px solid var(--line);border-radius:10px;padding:8px 12px;margin-top:12px}.inline-form.grid{display:grid;gap:4px 12px;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));align-items:end}.fullimage .photo-full{max-width:100%;max-height:90vh;display:block;margin:0 auto}.table{width:100%;border-collapse:collapse;background:var(--card);border-radius:12px;overflow:hidden}.table th,.table td{text-align:left;padding:8px 10px;border-bottom:1px solid #e2e8f0;vertical-align:top}.table th{font-size:.8rem;color:var(--muted)}.table tr.off{opacity:.55}.table input.narrow,.table select{width:130px;min-height:36px;padding:6px 8px;margin:0}.audit td{font-size:.85rem}@media(max-width:700px){.table{display:block;overflow-x:auto}}
