:root{--color-brand:#1f5f8b;--color-brand-ink:#fff;--color-ink:#17212b;--color-muted:#5b6b7a;--color-surface:#fff;--color-page:#f3f5f7;--color-line:#d5dbe1;--color-warn-bg:#fff4d6;--color-warn-ink:#6b4e00;--color-danger-bg:#fde7e7;--color-danger-ink:#8c1d1d;--color-ok:#1c7c3f;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--radius:10px;--tap:48px;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif}@media (prefers-color-scheme:dark){:root{--color-ink:#e8edf2;--color-muted:#9fb0bf;--color-surface:#1c252e;--color-page:#121920;--color-line:#33414e}}*,:before,:after{box-sizing:border-box}body{background:var(--color-page);color:var(--color-ink);font:16px/1.4 var(--font);margin:0}input,select,textarea,button{font:inherit}a{color:inherit}.screen{max-width:640px;padding:var(--space-4);padding-bottom:calc(var(--space-5) * 2 + env(safe-area-inset-bottom));margin:0 auto}.topbar{z-index:2;align-items:center;gap:var(--space-3);min-height:var(--tap);padding:var(--space-2) var(--space-4);padding-top:calc(var(--space-2) + env(safe-area-inset-top));background:var(--color-brand);color:var(--color-brand-ink);display:flex;position:sticky;top:0}.topbar h1{white-space:nowrap;text-overflow:ellipsis;flex:1;margin:0;font-size:18px;overflow:hidden}.topbar a{color:inherit;text-decoration:none}.card{width:100%;padding:var(--space-3) var(--space-4);margin-bottom:var(--space-2);background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius);color:inherit;text-align:left;text-decoration:none;display:block}.btn{min-height:var(--tap);padding:0 var(--space-4);border:1px solid var(--color-line);border-radius:var(--radius);background:var(--color-surface);color:var(--color-ink);justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.btn-primary{background:var(--color-brand);border-color:var(--color-brand);color:var(--color-brand-ink)}.btn-danger{color:var(--color-danger-ink)}.btn-block{width:100%;margin-bottom:var(--space-2)}.field{margin-bottom:var(--space-4)}.field>label,.field>.label{margin-bottom:var(--space-1);font-weight:600;display:block}.input{width:100%;min-height:var(--tap);padding:0 var(--space-3);background:var(--color-surface);color:var(--color-ink);border:1px solid var(--color-line);border-radius:var(--radius)}textarea.input{min-height:96px;padding:var(--space-2) var(--space-3)}.choices{gap:var(--space-2);flex-wrap:wrap;display:flex}.choice{min-height:var(--tap);padding:0 var(--space-3);align-items:center;gap:var(--space-2);background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius);display:inline-flex}.choice:first-letter{text-transform:uppercase}.required{color:var(--color-danger-ink);font-size:14px;font-weight:400}.help,.muted{color:var(--color-muted);font-size:14px}.banner{padding:var(--space-2) var(--space-4);background:var(--color-warn-bg);color:var(--color-warn-ink);font-size:14px}.banner-danger{background:var(--color-danger-bg);color:var(--color-danger-ink)}.error{color:var(--color-danger-ink)}.photos{gap:var(--space-2);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.tile{border-radius:var(--radius);background:var(--color-line);width:96px;height:96px;position:relative;overflow:hidden}.tile img{object-fit:cover;width:100%;height:100%}.tile button{color:#fff;background:#0009;border:0;border-radius:16px;min-width:32px;min-height:32px;position:absolute;top:2px;right:2px}.tile .badge{background:var(--color-danger-bg);color:var(--color-danger-ink);text-align:center;font-size:12px;position:absolute;bottom:0;left:0;right:0}.add-photo{text-align:center;border:1px dashed var(--color-muted);border-radius:var(--radius);justify-content:center;align-items:center;width:96px;height:96px;display:flex}.add-photo input{opacity:0;width:1px;height:1px;position:absolute}.group-title{margin:var(--space-4) 0 var(--space-2);color:var(--color-muted);font-size:15px}.row{justify-content:space-between;gap:var(--space-3);display:flex}.sheet{z-index:3;background:#00000080;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet>div{width:100%;padding:var(--space-4);padding-bottom:calc(var(--space-4) + env(safe-area-inset-bottom));background:var(--color-surface);border-radius:var(--radius) var(--radius) 0 0}.codes{padding:var(--space-3);background:var(--color-page);border-radius:var(--radius);font-family:ui-monospace,Menlo,monospace}.qr{width:220px;height:220px;margin:var(--space-3) auto;display:block}.admin{min-height:100vh}.admin-nav{align-items:center;gap:var(--space-1) var(--space-2);padding:var(--space-2) var(--space-3);background:var(--color-brand);color:var(--color-brand-ink);flex-wrap:wrap;display:flex}.admin-nav a{padding:var(--space-2) var(--space-3);color:inherit;border-radius:var(--radius);text-decoration:none}.admin-nav a.active{background:#ffffff2e;font-weight:600}.admin-brand{padding:var(--space-2) var(--space-3);margin:0;font-weight:700}.admin-main{padding:var(--space-4);min-width:0}.admin-title{margin:0 0 var(--space-4);font-size:24px}.admin-card{padding:var(--space-4);margin-bottom:var(--space-4);background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius)}.admin-card h2{margin:0 0 var(--space-3);font-size:17px}.admin-form{gap:var(--space-3);max-width:640px;display:grid}.admin-form .field{margin:0}.form-row{gap:var(--space-2);flex-wrap:wrap;align-items:flex-end;display:flex}.form-row>*{flex:160px}.form-row>.btn{flex:none}.actions{gap:var(--space-2);margin-top:var(--space-3);flex-wrap:wrap;display:flex}.tag{margin-left:var(--space-2);padding:0 var(--space-2);border-radius:var(--radius);background:var(--color-page);color:var(--color-muted);font-size:13px;font-weight:400;display:inline-block}.tag-warn{background:var(--color-warn-bg);color:var(--color-warn-ink)}.tag-danger{background:var(--color-danger-bg);color:var(--color-danger-ink)}.table-wrap{overflow-x:auto}.table{border-collapse:collapse;width:100%;font-size:15px}.table th{text-align:left;color:var(--color-muted);white-space:nowrap;font-weight:600}.table th,.table td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-line);vertical-align:top}.table tr.selected td{background:var(--color-page)}.table tr.clickable{cursor:pointer}.stat-row{gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.stat{padding:var(--space-3) var(--space-4);background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius);color:inherit;flex:200px;text-decoration:none}.stat strong{font-size:28px;display:block}.pager{align-items:center;gap:var(--space-3);margin-top:var(--space-3);display:flex}.success{color:var(--color-ok)}.panel-grid{gap:var(--space-4);display:grid}.panel{padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius);align-self:start}.panel h2{margin:0 0 var(--space-2);font-size:18px}.panel h3{margin:var(--space-4) 0 var(--space-2);font-size:15px}.values{gap:var(--space-1) var(--space-3);grid-template-columns:minmax(0,1fr) minmax(0,1fr);margin:0;display:grid}.values dt{color:var(--color-muted)}.values dd{overflow-wrap:anywhere;margin:0}.thumbs{gap:var(--space-2);flex-wrap:wrap;display:flex}.thumbs a{border-radius:var(--radius);background:var(--color-line);width:96px;height:96px;display:block;overflow:hidden}.thumbs img{object-fit:cover;width:100%;height:100%;display:block}.thumbs .waiting{width:96px;height:96px;padding:var(--space-1);border:1px dashed var(--color-muted);border-radius:var(--radius);color:var(--color-muted);text-align:center;justify-content:center;align-items:center;font-size:12px;display:flex}.builder-field{padding:var(--space-3);margin-bottom:var(--space-2);border:1px solid var(--color-line);border-radius:var(--radius)}.builder-field .form-row{margin-bottom:var(--space-2)}.check{align-items:center;gap:var(--space-2);min-height:var(--tap);display:inline-flex}.state-new{color:var(--color-ok)}.state-invalid{color:var(--color-danger-ink)}.state-existing,.state-duplicate{color:var(--color-muted)}@media (min-width:900px){.admin{grid-template-columns:200px minmax(0,1fr);display:grid}.admin-nav{padding:var(--space-3) var(--space-2);flex-flow:column;align-items:stretch;height:100vh;position:sticky;top:0}.admin-nav-end{flex-direction:column;margin-top:auto;display:flex}.admin-main{padding:var(--space-5)}.panel-grid.open{grid-template-columns:minmax(0,1fr) 420px}}
