:root{--cond-good: #3fc06d;--cond-fair: #ecc94b;--cond-poor: #f0883e;--cond-bad: #e3503e;--cond-none: #9aa0a6;--accent-ink: #ffffff;--radius: 8px;--radius-sm: 5px;--radius-lg: 12px;--sp: 1;--row-h: 52px;--font-base: 15px;--font-display: Arial, "Helvetica Neue", Helvetica, "Liberation Sans", Roboto, sans-serif;--font-sans: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace}:root,.theme-light{color-scheme:light;--bg: #f1ece1;--bg-2: #e9e3d4;--surface: #fbf9f3;--surface-2: #f3efe5;--surface-3: #ece6d8;--line: rgba(15,20,30,.1);--line-2: rgba(15,20,30,.16);--ink: #161a21;--ink-2: #3c4453;--muted: #5b6472;--faint: #6c7589;--shadow: 0 12px 32px -10px rgba(20,30,50,.22);--shadow-sm: 0 2px 8px -2px rgba(20,30,50,.16);--accent: #2a62cf;--brand-yellow: #b3860a;--ink-btn-bg: #1c1a16;--ink-btn-fg: #f7f3ea;--map-bg: #0b0d11;--map-land: #14171c;--map-road: #2b313b;--map-road-major: #39414e;--map-label: #6b7689;--map-water: #11202b;--glass: rgba(251,249,243,.88);--logo-stroke: #2b303b;--logo-node-ring: #c7ccd6}.theme-dark{color-scheme:dark;--bg: #131416;--bg-2: #0f1011;--surface: #191b1e;--surface-2: #212327;--surface-3: #2a2d31;--line: rgba(255,255,255,.075);--line-2: rgba(255,255,255,.14);--ink: #e9ecf2;--ink-2: #c2c9d6;--muted: #969eac;--faint: #7e8799;--shadow: 0 10px 34px -8px rgba(0,0,0,.55);--shadow-sm: 0 2px 10px -2px rgba(0,0,0,.5);--accent: #5a92ea;--brand-yellow: #e0b53a;--ink-btn-bg: #e9ecf2;--ink-btn-fg: #16181b;--map-bg: #0b0d11;--map-land: #14171c;--map-road: #2b313b;--map-road-major: #39414e;--map-label: #6b7689;--map-water: #11202b;--glass: rgba(22,24,27,.8);--logo-stroke: #eef1f6;--logo-node-ring: #474d59}.density-compact{--sp: .78;--row-h: 42px;--font-base: 14px}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:var(--font-base);line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}app-root{display:block;height:100%}r4-projects-view,r4-project-detail,r4-upload-view,r4-admin-view,r4-org-admin-view{display:flex;flex-direction:column;flex:1;min-height:0}h1,h2,h3{font-family:var(--font-display);font-weight:600;letter-spacing:-.01em}.app{height:100%;display:flex;flex-direction:column;color:var(--ink);background:var(--bg)}.theme-switching *{transition:none!important}.fade-in,.scale-in{opacity:1}@media(prefers-reduced-motion:no-preference){.fade-in{animation:fadeIn .32s ease both}.scale-in{animation:scaleIn .28s cubic-bezier(.2,.7,.3,1) both}}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes scaleIn{0%{opacity:0;transform:scale(.985)}to{opacity:1;transform:none}}::selection{background:color-mix(in srgb,var(--brand-yellow) 35%,transparent)}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:20px;border:2px solid transparent;background-clip:padding-box}*::-webkit-scrollbar-thumb:hover{background:var(--muted);background-clip:padding-box}button{font-family:inherit;cursor:pointer;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}input:focus-visible{outline-offset:0}.mono{font-family:var(--font-mono);font-feature-settings:"ss01"}.nowrap{white-space:nowrap}.btn{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line-2);background-color:var(--surface-2);color:var(--ink);padding:calc(9px * var(--sp)) calc(15px * var(--sp));border-radius:var(--radius-sm);font-size:13.5px;font-weight:500;transition:border-color .15s,transform .05s,opacity .15s;white-space:nowrap}@media(hover:hover){.btn:hover{background-color:var(--surface-3);border-color:var(--line-2)}.btn-primary:hover{background-color:color-mix(in srgb,var(--ink-btn-bg) 86%,var(--accent))}.btn-ghost:hover{background-color:var(--surface-2);color:var(--ink)}}.btn:active{transform:translateY(1px)}.btn-primary{background-color:var(--ink-btn-bg);border-color:transparent;color:var(--ink-btn-fg);font-weight:600}.btn-ghost{background-color:transparent;border-color:transparent;color:var(--ink-2)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-sm{padding:calc(6px * var(--sp)) calc(11px * var(--sp));font-size:12.5px}.tag{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:.4px;padding:3px 8px;border-radius:var(--radius-sm);text-transform:uppercase;border:1px solid var(--line-2);color:var(--muted);background:var(--surface-2)}.tag-ready{color:var(--cond-good);border-color:color-mix(in srgb,var(--cond-good) 40%,transparent);background:color-mix(in srgb,var(--cond-good) 12%,transparent)}.tag-ingest{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 40%,transparent);background:color-mix(in srgb,var(--accent) 12%,transparent)}.tag-r3{color:var(--cond-fair);border-color:color-mix(in srgb,var(--cond-fair) 38%,transparent);background:color-mix(in srgb,var(--cond-fair) 10%,transparent)}.theme-light .tag-ready{color:color-mix(in srgb,var(--cond-good) 52%,#000)}.theme-light .tag-ingest{color:color-mix(in srgb,var(--accent) 58%,#000)}.theme-light .tag-r3{color:color-mix(in srgb,var(--cond-fair) 40%,#000)}.tag-accent{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 40%,transparent);background:color-mix(in srgb,var(--accent) 12%,transparent)}.theme-light .tag-accent{color:color-mix(in srgb,var(--accent) 55%,#000)}.numchip{display:grid;place-items:center;flex:none;font-weight:700}.numchip[data-kind=ref]{color:var(--accent);background:color-mix(in srgb,var(--accent) 24%,transparent)}.numchip[data-kind=event]{color:var(--cond-fair);background:color-mix(in srgb,var(--cond-fair) 24%,transparent)}.theme-light .numchip[data-kind=ref]{color:color-mix(in srgb,var(--accent) 52%,#000);background:color-mix(in srgb,var(--accent) 16%,#fff)}.theme-light .numchip[data-kind=event]{color:color-mix(in srgb,var(--cond-fair) 42%,#000);background:color-mix(in srgb,var(--cond-fair) 26%,#fff)}.dot{width:8px;height:8px;border-radius:50%;flex:none}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.card:has(>table.atable){overflow:hidden}button,a,input,select,textarea,label,summary,[role=button]{touch-action:manipulation}@media(pointer:coarse){input,select,textarea{font-size:16px!important}.r4-tap{position:relative}.r4-tap:after{content:"";position:absolute;left:50%;top:50%;width:max(100%,40px);height:max(100%,40px);transform:translate(-50%,-50%)}.r4-tap-box{min-width:40px;min-height:40px}.btn:not(.r4-tap){min-height:40px}}@media(max-width:768px){.scroller{padding:18px 16px 32px!important}.cardgrid{grid-template-columns:1fr!important}.card:has(>table.atable){overflow-x:auto}.atable{min-width:520px}.atable th,.atable td{white-space:nowrap}}.r4-login-notice{border:1px solid var(--line-2);background:var(--surface-2);border-radius:var(--radius-sm);padding:13px 15px 14px;margin-bottom:18px}.r4-login-notice-head{display:flex;align-items:center;gap:9px;font-size:13.5px;font-weight:650;color:var(--ink);letter-spacing:-.1px}.r4-login-notice-ic{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;flex:none;border-radius:50%;color:var(--accent);background:color-mix(in srgb,var(--accent) 15%,transparent)}.r4-login-notice p{margin:8px 0 0;font-size:12.5px;line-height:1.55;color:var(--ink-2)}.r4-login-notice-hint{color:var(--muted)!important}.r4-login-error{color:var(--cond-bad);border:1px solid color-mix(in srgb,var(--cond-bad) 42%,transparent);background:color-mix(in srgb,var(--cond-bad) 12%,transparent);border-radius:var(--radius-sm);padding:9px 12px;font-size:12.5px;line-height:1.45;margin-bottom:16px}.theme-light .r4-login-error{color:color-mix(in srgb,var(--cond-bad) 65%,#000)}@media(min-width:2100px){:root{zoom:1.06}.mapcard-bottom{zoom:1.085}}@media(min-width:2500px){:root{zoom:1.13}.mapcard-bottom{zoom:1.106}}@media(min-width:3300px){:root{zoom:1.28}.mapcard-bottom{zoom:1.133}}:root,.theme-light{--tip-bg: #201d18;--tip-fg: #f4efe4;--tip-line: rgba(0,0,0,.35)}.theme-dark{--tip-bg: #34383f;--tip-fg: #eef1f6;--tip-line: rgba(255,255,255,.14)}.r4-tip{position:fixed;z-index:9999;top:0;left:0;max-width:270px;padding:7px 10px;border-radius:8px;background:var(--tip-bg);color:var(--tip-fg);border:1px solid var(--tip-line);box-shadow:var(--shadow);font-family:var(--font-sans);font-size:11.5px;line-height:1.45;font-weight:500;letter-spacing:.1px;white-space:normal;text-align:left;pointer-events:none;opacity:0;transform:translateY(2px) scale(.97);transition:opacity .13s ease,transform .13s ease}.r4-tip-in{opacity:1;transform:translateY(0) scale(1)}.term{text-decoration:underline dotted;text-decoration-thickness:1px;text-underline-offset:2.5px;cursor:help}.hp-flash{animation:hp-flash 3s ease-out}@keyframes hp-flash{0%,55%{background:color-mix(in srgb,var(--brand-yellow) 30%,transparent);box-shadow:0 0 0 6px color-mix(in srgb,var(--brand-yellow) 30%,transparent);border-radius:4px}to{background:transparent;box-shadow:none}}@media(prefers-reduced-motion:reduce){.hp-flash{animation:none}}.r4-tip:after{content:"";position:absolute;width:8px;height:8px;background:var(--tip-bg);border:1px solid var(--tip-line);transform:rotate(45deg);left:var(--tip-arrow, 50%);margin-left:-4px}.r4-tip[data-pos=top]:after{bottom:-5px;border-top:none;border-left:none}.r4-tip[data-pos=bottom]:after{top:-5px;border-bottom:none;border-right:none}.r4-tip[data-pos=left]:after,.r4-tip[data-pos=right]:after{top:var(--tip-arrow, 50%);left:auto;margin-left:0;margin-top:-4px}.r4-tip[data-pos=left]:after{right:-5px;border-left:none;border-bottom:none}.r4-tip[data-pos=right]:after{left:-5px;border-right:none;border-top:none}.r4-shot-box{position:fixed;inset:0;z-index:10000;background:#000000d9;display:flex;padding:4vmin;cursor:zoom-out;overscroll-behavior:contain;outline:none}.r4-shot-box img{margin:auto;max-width:100%;max-height:100%;object-fit:contain;border-radius:6px}@media(max-width:768px){.r4-shot-box{overflow:auto;padding:16px}.r4-shot-box img{max-width:none;max-height:none;width:auto;height:min(75vh,600px);flex:none}}
