:root{color-scheme:dark;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#06100e;color:#f3f6ef;font-synthesis:none;text-rendering:optimizeLegibility;--ink: #f3f6ef;--muted: #99aaa4;--line: rgba(211, 241, 229, .15);--panel: rgba(8, 25, 21, .82);--accent: #a7f06d;--accent-strong: #69d89b;--danger: #ff725e;--warning: #f1bd55}*{box-sizing:border-box}html{scroll-behavior:smooth}body{min-width:320px;min-height:100vh;margin:0;overflow:hidden;background:radial-gradient(circle at 14% 12%,rgba(62,130,91,.24),transparent 32rem),radial-gradient(circle at 82% 80%,rgba(35,97,94,.22),transparent 34rem),#06100e}button,a{font:inherit}button{color:inherit}button:focus-visible,a:focus-visible,.person-card:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.app-shell{position:relative;width:100vw;height:100vh;overflow:hidden}.topbar{position:fixed;z-index:20;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;min-height:76px;padding:18px 28px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,#06100ef5,#06100ead);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.brand{display:inline-flex;align-items:center;gap:12px;color:var(--ink);text-decoration:none}.brand__mark{width:29px;height:29px;border:1px solid rgba(167,240,109,.7);border-radius:50%;background:radial-gradient(circle at center,var(--accent) 0 3px,transparent 4px),conic-gradient(from 35deg,transparent,rgba(167,240,109,.68),transparent 45%);box-shadow:0 0 24px #a7f06d33}.brand b,.brand small{display:block}.brand b{font-size:.95rem;letter-spacing:.02em}.brand small{margin-top:2px;color:var(--muted);font-size:.7rem}.portfolio-link{display:inline-flex;align-items:center;gap:8px;color:var(--muted);font-size:.78rem;text-decoration:none;transition:color .16s ease}.portfolio-link:hover{color:var(--accent)}.intro-panel{position:fixed;z-index:18;top:104px;left:28px;width:min(390px,calc(100vw - 56px));padding:24px;border:1px solid var(--line);border-radius:22px;background:var(--panel);box-shadow:0 24px 80px #00000047;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.eyebrow{margin:0 0 15px;color:var(--accent);font-size:.68rem;font-weight:750;letter-spacing:.15em;text-transform:uppercase}.intro-panel h1{margin:0;font-family:Georgia,Times New Roman,serif;font-size:clamp(2rem,3.1vw,3.45rem);font-weight:400;line-height:.98;letter-spacing:-.045em}.intro-panel__copy{max-width:34rem;margin:19px 0 22px;color:var(--muted);font-size:.88rem;line-height:1.65}.auth-actions{display:flex;align-items:center;gap:13px}.google-button{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:43px;padding:0 16px;border:0;border-radius:999px;background:#f4f7f4;color:#12211d;font-size:.8rem;font-weight:720;cursor:pointer;transition:transform .16s ease,opacity .16s ease,box-shadow .16s ease}.google-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 8px 24px #00000038}.google-button:disabled{cursor:not-allowed;opacity:.45}.google-button__icon{display:grid;width:22px;height:22px;place-items:center;border-radius:50%;background:conic-gradient(from -45deg,#4285f4 0 25%,#34a853 0 50%,#fbbc05 0 75%,#ea4335 0);color:#fff;font-size:.69rem;font-weight:900}.auth-notice{display:grid;grid-template-columns:auto 1fr;gap:11px;align-items:start;margin-top:14px;padding:12px 13px;border:1px solid rgba(162,255,99,.22);border-radius:13px;background:#a2ff6313;color:var(--text)}.auth-notice[hidden]{display:none}.auth-notice__indicator{width:9px;height:9px;margin-top:4px;border-radius:50%;background:var(--accent);box-shadow:0 0 #a2ff636b;animation:auth-notice-pulse 1.45s ease-out infinite}.auth-notice strong,.auth-notice small{display:block}.auth-notice strong{font-size:.76rem;line-height:1.3}.auth-notice small{margin-top:3px;color:var(--muted);font-size:.66rem;line-height:1.45}@keyframes auth-notice-pulse{70%{box-shadow:0 0 0 7px #a2ff6300}to{box-shadow:0 0 #a2ff6300}}.text-button{padding:7px 3px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--muted);font-size:.75rem;cursor:pointer}.status{min-height:2.5em;margin:15px 0 0;color:var(--muted);font-size:.72rem;line-height:1.45;overflow-wrap:anywhere}.status[data-tone=success]{color:var(--accent-strong)}.status[data-tone=error]{color:#ff978a}.visualization,.visualization__mount,.visualization__renderer{position:absolute;inset:0}.visualization{overflow:hidden}.visualization__mount{z-index:4}.visualization__renderer{overflow:hidden}.visualization__backdrop{position:absolute;z-index:1;inset:76px 0 0;opacity:.24;background-image:linear-gradient(rgba(177,225,204,.12) 1px,transparent 1px),linear-gradient(90deg,rgba(177,225,204,.12) 1px,transparent 1px);background-size:54px 54px;-webkit-mask-image:radial-gradient(circle at 66% 48%,black,transparent 72%);mask-image:radial-gradient(circle at 66% 48%,black,transparent 72%)}.legend{position:fixed;z-index:18;top:101px;right:28px;display:flex;align-items:center;gap:14px;padding:10px 13px;border:1px solid var(--line);border-radius:999px;background:#081915b8;color:var(--muted);font-size:.65rem;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.legend span{display:inline-flex;align-items:center;gap:6px}.legend__swatch{width:7px;height:7px;border-radius:50%}.legend__swatch--low{background:#ef3022;box-shadow:0 0 10px #ef3022}.legend__swatch--medium{background:#fdca35;box-shadow:0 0 10px #fdca35}.legend__swatch--high{background:#3a9f4b;box-shadow:0 0 10px #3a9f4b}.dataset-count{position:fixed;z-index:18;right:30px;bottom:116px;display:flex;align-items:baseline;gap:8px;color:var(--muted)}.dataset-count strong{color:var(--ink);font-family:Georgia,Times New Roman,serif;font-size:2rem;font-weight:400}.dataset-count span{font-size:.67rem;text-transform:uppercase;letter-spacing:.1em}.layout-switcher{position:fixed;z-index:18;left:50%;bottom:26px;display:grid;grid-template-columns:repeat(4,minmax(116px,1fr));gap:5px;width:min(650px,calc(100vw - 56px));padding:6px;border:1px solid var(--line);border-radius:18px;background:#081915db;box-shadow:0 18px 60px #00000047;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);transform:translate(-50%)}.layout-switcher button{min-width:0;min-height:52px;padding:8px 10px;border:1px solid transparent;border-radius:13px;background:transparent;color:var(--muted);font-size:.74rem;font-weight:720;cursor:pointer;transition:color .16s ease,background .16s ease,border-color .16s ease}.layout-switcher button small{display:block;margin-top:4px;font-size:.56rem;font-weight:500;letter-spacing:.04em;opacity:.67}.layout-switcher button:hover:not(:disabled),.layout-switcher button.is-active:not(:disabled){border-color:#a7f06d3b;background:#a7f06d17;color:var(--ink)}.layout-switcher button:disabled{cursor:not-allowed;opacity:.38}.interaction-hint{position:fixed;z-index:18;left:29px;bottom:31px;margin:0;color:#99aaa4a8;font-size:.65rem}.person-card{position:relative;width:128px;height:168px;overflow:hidden;border:1px solid var(--card-border);border-radius:13px;background:linear-gradient(155deg,var(--card-background),transparent 62%),linear-gradient(180deg,var(--card-glow),transparent 45%),#071210f5;color:var(--ink);box-shadow:0 0 26px var(--card-shadow),inset 0 0 22px #ffffff06;cursor:grab;transition:border-color .18s ease,box-shadow .18s ease,filter .18s ease;-webkit-user-select:none;user-select:none}.person-card:hover,.person-card:focus-visible{border-color:var(--card-accent);box-shadow:0 0 36px var(--card-shadow-strong);filter:brightness(1.1)}.person-card--low{--card-accent: #ef3022;--card-background: rgba(239, 48, 34, .38);--card-border: rgba(239, 48, 34, .72);--card-glow: rgba(239, 48, 34, .2);--card-shadow: rgba(239, 48, 34, .18);--card-shadow-strong: rgba(239, 48, 34, .42)}.person-card--medium{--card-accent: #fdca35;--card-background: rgba(253, 202, 53, .34);--card-border: rgba(253, 202, 53, .72);--card-glow: rgba(253, 202, 53, .18);--card-shadow: rgba(253, 202, 53, .17);--card-shadow-strong: rgba(253, 202, 53, .4)}.person-card--high{--card-accent: #3a9f4b;--card-background: rgba(58, 159, 75, .38);--card-border: rgba(58, 159, 75, .72);--card-glow: rgba(58, 159, 75, .2);--card-shadow: rgba(58, 159, 75, .18);--card-shadow-strong: rgba(58, 159, 75, .42)}.person-card__meta{position:absolute;z-index:3;top:9px;left:10px;right:10px;display:flex;align-items:center;justify-content:space-between;color:var(--card-accent);font-size:.56rem;font-weight:800;letter-spacing:.08em}.person-card__photo-frame{position:absolute;top:28px;left:17px;display:grid;width:94px;height:88px;overflow:hidden;place-items:center;border:1px solid rgba(255,255,255,.14);border-radius:8px;background:linear-gradient(135deg,#ffffff1a,#00000024)}.person-card__initials{color:#ffffff80;font-family:Georgia,Times New Roman,serif;font-size:1.3rem}.person-card__photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .22s ease}.person-card__photo-frame.is-loaded .person-card__photo{opacity:1}.person-card__name,.person-card__interest{position:absolute;left:9px;right:9px;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}.person-card__name{bottom:28px;font-size:.61rem;font-weight:760}.person-card__interest{bottom:13px;color:#f0f7f3a6;font-size:.5rem}@media(max-width:900px){.intro-panel{top:92px;width:min(330px,calc(100vw - 36px));padding:19px;left:18px}.intro-panel h1{font-size:2.15rem}.legend{top:auto;right:18px;bottom:105px;flex-direction:column;align-items:flex-start;border-radius:14px}.dataset-count,.interaction-hint{display:none}}@media(max-width:650px){.topbar{min-height:68px;padding:14px 16px}.brand small,.portfolio-link{display:none}.intro-panel{top:82px;right:14px;left:14px;width:auto}.intro-panel__copy{display:none}.auth-actions{margin-top:16px}.status{margin-top:10px}.legend{display:none}.layout-switcher{right:14px;left:14px;bottom:14px;grid-template-columns:repeat(2,1fr);width:auto;transform:none}.layout-switcher button{min-height:42px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
