/* required styles */

.leaflet-pane,
.leaflet-tile,
.leaflet-marker-icon,
.leaflet-marker-shadow,
.leaflet-tile-container,
.leaflet-pane > svg,
.leaflet-pane > canvas,
.leaflet-zoom-box,
.leaflet-image-layer,
.leaflet-layer {
	position: absolute;
	left: 0;
	top: 0;
	}
.leaflet-container {
	overflow: hidden;
	}
.leaflet-tile,
.leaflet-marker-icon,
.leaflet-marker-shadow {
	-webkit-user-select: none;
	   -moz-user-select: none;
	        user-select: none;
	  -webkit-user-drag: none;
	}
/* Prevents IE11 from highlighting tiles in blue */
.leaflet-tile::selection {
	background: transparent;
}
/* Safari renders non-retina tile on retina better with this, but Chrome is worse */
.leaflet-safari .leaflet-tile {
	image-rendering: -webkit-optimize-contrast;
	}
/* hack that prevents hw layers "stretching" when loading new tiles */
.leaflet-safari .leaflet-tile-container {
	width: 1600px;
	height: 1600px;
	-webkit-transform-origin: 0 0;
	}
.leaflet-marker-icon,
.leaflet-marker-shadow {
	display: block;
	}
/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */
/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */
.leaflet-container .leaflet-overlay-pane svg {
	max-width: none !important;
	max-height: none !important;
	}
.leaflet-container .leaflet-marker-pane img,
.leaflet-container .leaflet-shadow-pane img,
.leaflet-container .leaflet-tile-pane img,
.leaflet-container img.leaflet-image-layer,
.leaflet-container .leaflet-tile {
	max-width: none !important;
	max-height: none !important;
	width: auto;
	padding: 0;
	}

.leaflet-container img.leaflet-tile {
	/* See: https://bugs.chromium.org/p/chromium/issues/detail?id=600120 */
	mix-blend-mode: plus-lighter;
}

.leaflet-container.leaflet-touch-zoom {
	-ms-touch-action: pan-x pan-y;
	touch-action: pan-x pan-y;
	}
.leaflet-container.leaflet-touch-drag {
	-ms-touch-action: pinch-zoom;
	/* Fallback for FF which doesn't support pinch-zoom */
	touch-action: none;
	touch-action: pinch-zoom;
}
.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
	-ms-touch-action: none;
	touch-action: none;
}
.leaflet-container {
	-webkit-tap-highlight-color: transparent;
}
.leaflet-container a {
	-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);
}
.leaflet-tile {
	filter: inherit;
	visibility: hidden;
	}
.leaflet-tile-loaded {
	visibility: inherit;
	}
.leaflet-zoom-box {
	width: 0;
	height: 0;
	-moz-box-sizing: border-box;
	     box-sizing: border-box;
	z-index: 800;
	}
/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
.leaflet-overlay-pane svg {
	-moz-user-select: none;
	}

.leaflet-pane         { z-index: 400; }

.leaflet-tile-pane    { z-index: 200; }
.leaflet-overlay-pane { z-index: 400; }
.leaflet-shadow-pane  { z-index: 500; }
.leaflet-marker-pane  { z-index: 600; }
.leaflet-tooltip-pane   { z-index: 650; }
.leaflet-popup-pane   { z-index: 700; }

.leaflet-map-pane canvas { z-index: 100; }
.leaflet-map-pane svg    { z-index: 200; }

.leaflet-vml-shape {
	width: 1px;
	height: 1px;
	}
.lvml {
	display: inline-block;
	position: absolute;
	}


/* control positioning */

.leaflet-control {
	position: relative;
	z-index: 800;
	pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
	pointer-events: auto;
	}
.leaflet-top,
.leaflet-bottom {
	position: absolute;
	z-index: 1000;
	pointer-events: none;
	}
.leaflet-top {
	top: 0;
	}
.leaflet-right {
	right: 0;
	}
.leaflet-bottom {
	bottom: 0;
	}
.leaflet-left {
	left: 0;
	}
.leaflet-control {
	float: left;
	clear: both;
	}
.leaflet-right .leaflet-control {
	float: right;
	}
.leaflet-top .leaflet-control {
	margin-top: 10px;
	}
.leaflet-bottom .leaflet-control {
	margin-bottom: 10px;
	}
.leaflet-left .leaflet-control {
	margin-left: 10px;
	}
.leaflet-right .leaflet-control {
	margin-right: 10px;
	}


/* zoom and fade animations */

.leaflet-fade-anim .leaflet-popup {
	opacity: 0;
	-webkit-transition: opacity 0.2s linear;
	   -moz-transition: opacity 0.2s linear;
	        transition: opacity 0.2s linear;
	}
.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
	opacity: 1;
	}
.leaflet-zoom-animated {
	-webkit-transform-origin: 0 0;
	    -ms-transform-origin: 0 0;
	        transform-origin: 0 0;
	}
svg.leaflet-zoom-animated {
	will-change: transform;
}

.leaflet-zoom-anim .leaflet-zoom-animated {
	-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
	   -moz-transition:    -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
	        transition:         transform 0.25s cubic-bezier(0,0,0.25,1);
	}
.leaflet-zoom-anim .leaflet-tile,
.leaflet-pan-anim .leaflet-tile {
	-webkit-transition: none;
	   -moz-transition: none;
	        transition: none;
	}

.leaflet-zoom-anim .leaflet-zoom-hide {
	visibility: hidden;
	}


/* cursors */

.leaflet-interactive {
	cursor: pointer;
	}
.leaflet-grab {
	cursor: -webkit-grab;
	cursor:    -moz-grab;
	cursor:         grab;
	}
.leaflet-crosshair,
.leaflet-crosshair .leaflet-interactive {
	cursor: crosshair;
	}
.leaflet-popup-pane,
.leaflet-control {
	cursor: auto;
	}
.leaflet-dragging .leaflet-grab,
.leaflet-dragging .leaflet-grab .leaflet-interactive,
.leaflet-dragging .leaflet-marker-draggable {
	cursor: move;
	cursor: -webkit-grabbing;
	cursor:    -moz-grabbing;
	cursor:         grabbing;
	}

/* marker & overlays interactivity */
.leaflet-marker-icon,
.leaflet-marker-shadow,
.leaflet-image-layer,
.leaflet-pane > svg path,
.leaflet-tile-container {
	pointer-events: none;
	}

.leaflet-marker-icon.leaflet-interactive,
.leaflet-image-layer.leaflet-interactive,
.leaflet-pane > svg path.leaflet-interactive,
svg.leaflet-image-layer.leaflet-interactive path {
	pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
	pointer-events: auto;
	}

/* visual tweaks */

.leaflet-container {
	background: #ddd;
	outline-offset: 1px;
	}
.leaflet-container a {
	color: #0078A8;
	}
.leaflet-zoom-box {
	border: 2px dotted #38f;
	background: rgba(255,255,255,0.5);
	}


/* general typography */
.leaflet-container {
	font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;
	font-size: 12px;
	font-size: 0.75rem;
	line-height: 1.5;
	}


/* general toolbar styles */

.leaflet-bar {
	box-shadow: 0 1px 5px rgba(0,0,0,0.65);
	border-radius: 4px;
	}
.leaflet-bar a {
	background-color: #fff;
	border-bottom: 1px solid #ccc;
	width: 26px;
	height: 26px;
	line-height: 26px;
	display: block;
	text-align: center;
	text-decoration: none;
	color: black;
	}
.leaflet-bar a,
.leaflet-control-layers-toggle {
	background-position: 50% 50%;
	background-repeat: no-repeat;
	display: block;
	}
.leaflet-bar a:hover,
.leaflet-bar a:focus {
	background-color: #f4f4f4;
	}
.leaflet-bar a:first-child {
	border-top-left-radius: 4px;
	border-top-right-radius: 4px;
	}
.leaflet-bar a:last-child {
	border-bottom-left-radius: 4px;
	border-bottom-right-radius: 4px;
	border-bottom: none;
	}
.leaflet-bar a.leaflet-disabled {
	cursor: default;
	background-color: #f4f4f4;
	color: #bbb;
	}

.leaflet-touch .leaflet-bar a {
	width: 30px;
	height: 30px;
	line-height: 30px;
	}
.leaflet-touch .leaflet-bar a:first-child {
	border-top-left-radius: 2px;
	border-top-right-radius: 2px;
	}
.leaflet-touch .leaflet-bar a:last-child {
	border-bottom-left-radius: 2px;
	border-bottom-right-radius: 2px;
	}

/* zoom control */

.leaflet-control-zoom-in,
.leaflet-control-zoom-out {
	font: bold 18px 'Lucida Console', Monaco, monospace;
	text-indent: 1px;
	}

.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out  {
	font-size: 22px;
	}


/* layers control */

.leaflet-control-layers {
	box-shadow: 0 1px 5px rgba(0,0,0,0.4);
	background: #fff;
	border-radius: 5px;
	}
.leaflet-control-layers-toggle {
	width: 36px;
	height: 36px;
	}
.leaflet-retina .leaflet-control-layers-toggle {
	background-size: 26px 26px;
	}
.leaflet-touch .leaflet-control-layers-toggle {
	width: 44px;
	height: 44px;
	}
.leaflet-control-layers .leaflet-control-layers-list,
.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
	display: none;
	}
.leaflet-control-layers-expanded .leaflet-control-layers-list {
	display: block;
	position: relative;
	}
.leaflet-control-layers-expanded {
	padding: 6px 10px 6px 6px;
	color: #333;
	background: #fff;
	}
.leaflet-control-layers-scrollbar {
	overflow-y: scroll;
	overflow-x: hidden;
	padding-right: 5px;
	}
.leaflet-control-layers-selector {
	margin-top: 2px;
	position: relative;
	top: 1px;
	}
.leaflet-control-layers label {
	display: block;
	font-size: 13px;
	font-size: 1.08333em;
	}
.leaflet-control-layers-separator {
	height: 0;
	border-top: 1px solid #ddd;
	margin: 5px -10px 5px -6px;
	}

/* Default icon URLs */
.leaflet-default-icon-path { /* used only in path-guessing heuristic, see L.Icon.Default */
	}


/* attribution and scale controls */

.leaflet-container .leaflet-control-attribution {
	background: #fff;
	background: rgba(255, 255, 255, 0.8);
	margin: 0;
	}
.leaflet-control-attribution,
.leaflet-control-scale-line {
	padding: 0 5px;
	color: #333;
	line-height: 1.4;
	}
.leaflet-control-attribution a {
	text-decoration: none;
	}
.leaflet-control-attribution a:hover,
.leaflet-control-attribution a:focus {
	text-decoration: underline;
	}
.leaflet-attribution-flag {
	display: inline !important;
	vertical-align: baseline !important;
	width: 1em;
	height: 0.6669em;
	}
.leaflet-left .leaflet-control-scale {
	margin-left: 5px;
	}
.leaflet-bottom .leaflet-control-scale {
	margin-bottom: 5px;
	}
.leaflet-control-scale-line {
	border: 2px solid #777;
	border-top: none;
	line-height: 1.1;
	padding: 2px 5px 1px;
	white-space: nowrap;
	-moz-box-sizing: border-box;
	     box-sizing: border-box;
	background: rgba(255, 255, 255, 0.8);
	text-shadow: 1px 1px #fff;
	}
.leaflet-control-scale-line:not(:first-child) {
	border-top: 2px solid #777;
	border-bottom: none;
	margin-top: -2px;
	}
.leaflet-control-scale-line:not(:first-child):not(:last-child) {
	border-bottom: 2px solid #777;
	}

.leaflet-touch .leaflet-control-attribution,
.leaflet-touch .leaflet-control-layers,
.leaflet-touch .leaflet-bar {
	box-shadow: none;
	}
.leaflet-touch .leaflet-control-layers,
.leaflet-touch .leaflet-bar {
	border: 2px solid rgba(0,0,0,0.2);
	background-clip: padding-box;
	}


/* popup */

.leaflet-popup {
	position: absolute;
	text-align: center;
	margin-bottom: 20px;
	}
.leaflet-popup-content-wrapper {
	padding: 1px;
	text-align: left;
	border-radius: 12px;
	}
.leaflet-popup-content {
	margin: 13px 24px 13px 20px;
	line-height: 1.3;
	font-size: 13px;
	font-size: 1.08333em;
	min-height: 1px;
	}
.leaflet-popup-content p {
	margin: 17px 0;
	margin: 1.3em 0;
	}
.leaflet-popup-tip-container {
	width: 40px;
	height: 20px;
	position: absolute;
	left: 50%;
	margin-top: -1px;
	margin-left: -20px;
	overflow: hidden;
	pointer-events: none;
	}
.leaflet-popup-tip {
	width: 17px;
	height: 17px;
	padding: 1px;

	margin: -10px auto 0;
	pointer-events: auto;

	-webkit-transform: rotate(45deg);
	   -moz-transform: rotate(45deg);
	    -ms-transform: rotate(45deg);
	        transform: rotate(45deg);
	}
.leaflet-popup-content-wrapper,
.leaflet-popup-tip {
	background: white;
	color: #333;
	box-shadow: 0 3px 14px rgba(0,0,0,0.4);
	}
.leaflet-container a.leaflet-popup-close-button {
	position: absolute;
	top: 0;
	right: 0;
	border: none;
	text-align: center;
	width: 24px;
	height: 24px;
	font: 16px/24px Tahoma, Verdana, sans-serif;
	color: #757575;
	text-decoration: none;
	background: transparent;
	}
.leaflet-container a.leaflet-popup-close-button:hover,
.leaflet-container a.leaflet-popup-close-button:focus {
	color: #585858;
	}
.leaflet-popup-scrolled {
	overflow: auto;
	}

.leaflet-oldie .leaflet-popup-content-wrapper {
	-ms-zoom: 1;
	}
.leaflet-oldie .leaflet-popup-tip {
	width: 24px;
	margin: 0 auto;

	-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
	filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);
	}

.leaflet-oldie .leaflet-control-zoom,
.leaflet-oldie .leaflet-control-layers,
.leaflet-oldie .leaflet-popup-content-wrapper,
.leaflet-oldie .leaflet-popup-tip {
	border: 1px solid #999;
	}


/* div icon */

.leaflet-div-icon {
	background: #fff;
	border: 1px solid #666;
	}


/* Tooltip */
/* Base styles for the element that has a tooltip */
.leaflet-tooltip {
	position: absolute;
	padding: 6px;
	background-color: #fff;
	border: 1px solid #fff;
	border-radius: 3px;
	color: #222;
	white-space: nowrap;
	-webkit-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none;
	pointer-events: none;
	box-shadow: 0 1px 3px rgba(0,0,0,0.4);
	}
.leaflet-tooltip.leaflet-interactive {
	cursor: pointer;
	pointer-events: auto;
	}
.leaflet-tooltip-top:before,
.leaflet-tooltip-bottom:before,
.leaflet-tooltip-left:before,
.leaflet-tooltip-right:before {
	position: absolute;
	pointer-events: none;
	border: 6px solid transparent;
	background: transparent;
	content: "";
	}

/* Directions */

.leaflet-tooltip-bottom {
	margin-top: 6px;
}
.leaflet-tooltip-top {
	margin-top: -6px;
}
.leaflet-tooltip-bottom:before,
.leaflet-tooltip-top:before {
	left: 50%;
	margin-left: -6px;
	}
.leaflet-tooltip-top:before {
	bottom: 0;
	margin-bottom: -12px;
	border-top-color: #fff;
	}
.leaflet-tooltip-bottom:before {
	top: 0;
	margin-top: -12px;
	margin-left: -6px;
	border-bottom-color: #fff;
	}
.leaflet-tooltip-left {
	margin-left: -6px;
}
.leaflet-tooltip-right {
	margin-left: 6px;
}
.leaflet-tooltip-left:before,
.leaflet-tooltip-right:before {
	top: 50%;
	margin-top: -6px;
	}
.leaflet-tooltip-left:before {
	right: 0;
	margin-right: -12px;
	border-left-color: #fff;
	}
.leaflet-tooltip-right:before {
	left: 0;
	margin-left: -12px;
	border-right-color: #fff;
	}

/* Printing */

@media print {
	/* Prevent printers from removing background-images of controls. */
	.leaflet-control {
		-webkit-print-color-adjust: exact;
		print-color-adjust: exact;
		}
	}

.leaflet-cluster-anim .leaflet-marker-icon, .leaflet-cluster-anim .leaflet-marker-shadow {
	-webkit-transition: -webkit-transform 0.3s ease-out, opacity 0.3s ease-in;
	-moz-transition: -moz-transform 0.3s ease-out, opacity 0.3s ease-in;
	-o-transition: -o-transform 0.3s ease-out, opacity 0.3s ease-in;
	transition: transform 0.3s ease-out, opacity 0.3s ease-in;
}

.leaflet-cluster-spider-leg {
	/* stroke-dashoffset (duration and function) should match with leaflet-marker-icon transform in order to track it exactly */
	-webkit-transition: -webkit-stroke-dashoffset 0.3s ease-out, -webkit-stroke-opacity 0.3s ease-in;
	-moz-transition: -moz-stroke-dashoffset 0.3s ease-out, -moz-stroke-opacity 0.3s ease-in;
	-o-transition: -o-stroke-dashoffset 0.3s ease-out, -o-stroke-opacity 0.3s ease-in;
	transition: stroke-dashoffset 0.3s ease-out, stroke-opacity 0.3s ease-in;
}

/* Light-only workspace per JP's setup:white/light-gray surfaces, navy text and buttons, muted teal map clusters.
   Layout: 62px header · 190px nav · content · optional 280px analyst; every column scrolls on its own. */
:root{
  /* Palette: the core colors. Every other color in this file is mixed from these (color-mix in oklab),
     so a new color scheme is just new values here. */
  --surface:#ffffff;     /* cards, panels, page */
  --ink:#18343f;         /* body text */
  --brand:#195d70;       /* primary accent: links, active states, borders tint */
  --navy:#102e52;        /* strong fills: primary buttons, headers */
  --teal:#24677d;        /* secondary accent: map clusters, subtle tints */
  --positive:#237564; --negative:#ac503d; --warn:#9a6a1f; --gold:#d69245;
  --on-strong:#ffffff;   /* text on navy / brand fills */
  --input:#1f4fd6;      /* editable numbers (modeling convention: inputs in blue) */
  /* Derived (kept as names the rest of the file already uses) */
  --dim:color-mix(in oklab, var(--ink) 64%, var(--surface));
  --edge:color-mix(in oklab, var(--brand) 15%, var(--surface));
  --wash:color-mix(in oklab, var(--teal) 5%, var(--surface));
  --soft:color-mix(in oklab, var(--teal) 9%, var(--surface));
  --navy-2:color-mix(in oklab, var(--navy) 89%, black);
  --cluster:color-mix(in oklab, var(--teal) 88%, black);
  --nav-bg:color-mix(in oklab, var(--teal) 4%, var(--surface));
  --nav-active:color-mix(in oklab, var(--navy) 8%, var(--surface));
  --nav-ink:color-mix(in oklab, var(--ink) 91%, black);
  --font:Inter,"Segoe UI",system-ui,-apple-system,Arial,sans-serif; --mono:ui-monospace,"Cascadia Mono",Consolas,Menlo,monospace;
  color-scheme:light;
}
*{box-sizing:border-box}
html,body,#app{height:100%;margin:0}
body{background:var(--surface);color:var(--ink);font:13px/1.5 var(--font);-webkit-font-smoothing:antialiased}
button,input,select{font:inherit;color:var(--ink)}
button,select{cursor:pointer}
:focus-visible{outline:2px solid color-mix(in oklab, var(--teal) 95%, var(--surface));outline-offset:2px}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
.rei button,.rei input,.rei select{background:var(--surface);border:1px solid var(--edge);border-radius:6px;padding:8px 10px;min-width:0;max-width:100%}
.rei button:hover:not(:disabled){background:var(--soft)}
.rei button.primary{background:var(--navy);color:var(--on-strong);border-color:var(--navy)}
.rei button.primary:hover:not(:disabled){background:color-mix(in oklab, var(--navy) 92%, var(--surface))}
.rei button:disabled{opacity:.45;cursor:default}
.rei button.text-button{background:none;border:0;padding:0;color:var(--brand);text-align:left}
.rei button.text-button:hover{background:none;text-decoration:underline}
h1{font-size:23px;line-height:1.25;letter-spacing:-.4px;font-weight:600;margin:6px 0 0}
h2{font-size:20px;font-weight:600;margin:4px 0 8px}
h3{font-size:14px;font-weight:600;margin:0}
p{margin:8px 0 14px}
small,.muted{color:var(--dim);font-size:11px}
td small{display:block;margin-top:3px}
.negative{color:var(--negative)} .positive{color:var(--positive)} .warn{color:var(--warn)}
.small{font-size:11px}.mono{font-family:var(--mono);font-size:.92em}
.badge{display:inline-block;font-size:11px;padding:2px 7px;border-radius:4px;background:var(--soft);color:var(--brand);white-space:nowrap;font-weight:500}
.badge.ok{background:color-mix(in oklab, var(--positive) 11%, var(--surface));color:var(--positive)} .badge.warn{background:color-mix(in oklab, var(--gold) 17%, var(--surface));color:var(--warn)}
.actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap}

/* Shell */
.rei{height:100%;display:flex;flex-direction:column;min-width:0}
.topbar{height:62px;flex:none;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:8px 20px;border-bottom:1px solid color-mix(in oklab, var(--navy) 10%, var(--surface));background:var(--surface)}
.brand img{width:46px;height:46px;object-fit:contain;display:block}
.top-note{font-size:11px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.workspace{flex:1;min-height:0;display:grid;grid-template-columns:190px minmax(0,1fr)}
.workspace.with-analyst{grid-template-columns:190px minmax(0,1fr) 280px}
.workspace>main{min-width:0;min-height:0;overflow:auto;padding:22px 24px 40px}
.workspace.full>main,.workspace.portfolio-ws>main{padding:0;overflow:hidden}
nav{min-height:0;display:flex;flex-direction:column;padding:14px 10px 10px;background:var(--nav-bg);border-right:1px solid color-mix(in oklab, var(--navy) 10%, var(--surface));overflow:hidden}
.nav-links{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;gap:2px;scrollbar-width:thin;padding-bottom:10px}
.nav-section{font-size:9px;letter-spacing:1.1px;color:color-mix(in oklab, var(--ink) 51%, var(--surface));font-weight:600;padding:18px 8px 4px}
.rei nav .nav-links button{display:flex;align-items:center;gap:9px;border:0;background:transparent;border-radius:2px;padding:8px;font-size:12px;min-height:34px;text-align:left;width:100%}
.rei nav .nav-links button.active{background:var(--nav-active);color:var(--nav-ink);font-weight:650;box-shadow:inset 2px 0 color-mix(in oklab, var(--ink) 96%, var(--surface))}
.rei nav .nav-links button:disabled{opacity:.6}
.nav-icon{width:17px;height:17px;flex-shrink:0;color:color-mix(in oklab, var(--ink) 59%, var(--surface))}
.active .nav-icon{color:color-mix(in oklab, var(--ink) 96%, var(--surface))}
.nav-label{flex:1}
.profile-footer{flex-shrink:0;display:flex;align-items:center;gap:8px;padding:12px 2px 2px;border-top:1px solid color-mix(in oklab, var(--navy) 10%, var(--surface));color:color-mix(in oklab, var(--ink) 94%, black)}
.profile-footer img{width:30px;height:30px;object-fit:cover;border-radius:50%;flex-shrink:0}
.profile-copy{min-width:0}
.profile-copy strong{display:block;font-size:11px;line-height:17px;font-weight:600;white-space:nowrap}
.profile-copy span{display:block;font-size:9px;line-height:13px;color:color-mix(in oklab, var(--ink) 58%, var(--surface));overflow-wrap:anywhere}
.page-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:18px}
.page-heading small{letter-spacing:1px;font-size:10px}
.toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%);background:color-mix(in oklab, var(--teal) 71%, black);color:var(--on-strong);padding:11px 18px;border-radius:6px;box-shadow:0 4px 20px color-mix(in oklab, black 13%, transparent);font-size:12px;z-index:3000;max-width:calc(100% - 32px)}

/* Common content */
.metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:8px 0 22px}
.metric{border-bottom:1px solid var(--edge);padding:6px 0 14px;min-width:0}
.metric strong{display:block;font-size:23px;font-weight:600;letter-spacing:-.5px;margin:5px 0;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.metric strong.na{font-size:15px;color:color-mix(in oklab, var(--ink) 41%, var(--surface));letter-spacing:0;font-weight:500}
.panel{padding:18px;border:1px solid var(--edge);border-radius:8px;margin:0 0 18px;background:var(--surface);min-width:0}
.panel-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px;flex-wrap:wrap}
.panel-heading small{display:block;margin-top:2px}
.panel-heading button{font-size:11px}
.table-wrap{overflow:auto;min-width:0}
.table-wrap.tall{max-height:380px}
table{width:100%;border-collapse:collapse;font-size:12px}
th{color:var(--dim);font-size:11px;font-weight:400;text-align:left;border-bottom:1px solid var(--edge);padding:9px 8px;white-space:nowrap;position:sticky;top:0;background:var(--surface)}
td{padding:10px 8px;border-bottom:1px solid var(--edge);vertical-align:top}
td:nth-child(n+3),th:nth-child(n+3){text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
td.wrap{white-space:normal;text-align:left}
table.nums td:nth-child(n+2),table.nums th:nth-child(n+2){text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
tr.total{background:var(--soft);font-weight:600}
.empty{padding:24px;text-align:center;color:var(--dim)}
.tiles,.two-col{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}
.rei .tile{text-align:left;padding:20px 17px;display:block}
.tile p{color:var(--dim);font-size:12px}
.tile span{color:var(--brand)}
.filters{display:flex;flex-wrap:wrap;gap:10px;padding:12px;background:var(--wash);border-radius:6px;margin-bottom:18px;align-items:end}
.filters.vertical{flex-direction:column;align-items:stretch;background:none;padding:0;gap:14px}
.field{display:flex;flex-direction:column;gap:5px;flex:1;min-width:110px}
.field.wide{flex:2;min-width:220px}
.field>span{font-size:11px;color:var(--dim)}
.field select,.field input{width:100%;font-size:12px}
.rei input.inp{color:var(--input)}
.tabs{display:flex;flex-wrap:wrap;gap:16px;border-bottom:1px solid var(--edge);margin-bottom:18px}
.rei .tabs button{border:0;border-radius:0;padding:8px 0 11px;background:none;font-size:12px;color:var(--dim)}
.rei .tabs button.active{border-bottom:2px solid var(--brand);color:var(--brand);font-weight:600}
.small-tabs{margin-bottom:14px}
.bars{display:flex;flex-direction:column;gap:12px;margin:14px 0}
.bar-item{display:grid;grid-template-columns:minmax(80px,1fr) 2fr 76px;gap:9px;align-items:center;font-size:11px}
.bar-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bar-track{position:relative;background:var(--wash);height:16px;border-radius:3px;overflow:hidden}
.bar-track.signed:after{content:'';position:absolute;left:50%;top:0;bottom:0;width:1px;background:color-mix(in oklab, var(--brand) 32%, var(--surface))}
.bar-fill{position:absolute;top:0;bottom:0;background:var(--brand);transition:width .2s}
.bar-fill.bad{background:var(--negative)}
.bar-item strong{text-align:right;font-weight:500;font-variant-numeric:tabular-nums}
.pair{display:flex;justify-content:space-between;gap:15px;padding:8px 0;border-bottom:1px solid var(--edge)}
.pair span{color:var(--dim)} .pair b{font-weight:500;text-align:right} .pair b.missing{color:color-mix(in oklab, var(--ink) 42%, var(--surface));font-weight:400}
.pairs-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 20px}
.detail-box{padding:20px 22px;background:var(--wash);border:1px solid var(--edge);border-radius:8px;margin-bottom:20px}
.detail-box small{letter-spacing:1px;font-size:10px}
.source-note{padding:12px 14px;background:var(--surface);margin-top:14px;font-size:12px;border-radius:6px}
.context-line{font-size:12px;color:var(--dim);margin:4px 0 6px}

/* Citations + source viewer */
.cite{cursor:pointer;border-bottom:1px dashed color-mix(in oklab, var(--brand) 33%, var(--surface));text-decoration:none}
.cite:hover{background:color-mix(in oklab, var(--gold) 16%, var(--surface));border-bottom-color:color-mix(in oklab, var(--gold) 82%, black)}
.chips{display:flex;flex-wrap:wrap;gap:4px;margin:8px 0}
.rei .chip-cite{font:500 10px var(--mono);padding:2px 6px;border-radius:4px;background:color-mix(in oklab, var(--gold) 16%, var(--surface));color:color-mix(in oklab, var(--warn) 91%, black);border:1px solid color-mix(in oklab, var(--gold) 62%, var(--surface))}
.rei .chip-cite.on{background:color-mix(in oklab, var(--warn) 91%, black);color:var(--on-strong)}
.modal-backdrop{position:fixed;inset:0;background:color-mix(in oklab, color-mix(in oklab, var(--ink) 98%, var(--surface)) 31%, transparent);z-index:2000;display:flex;align-items:center;justify-content:center;padding:20px}
.modal{width:560px;max-width:100%;max-height:88vh;display:flex;flex-direction:column;background:var(--surface);border-radius:10px;box-shadow:0 20px 60px color-mix(in oklab, color-mix(in oklab, var(--navy) 93%, black) 25%, transparent);overflow:hidden}
.modal.wide{width:1040px}
.modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:18px 22px 10px}
.modal-head small{letter-spacing:1px;font-size:10px}
.modal-head h2{font-size:17px;margin:2px 0 0}
.rei .modal .close{border:0;background:none;font-size:22px;line-height:1;padding:2px 6px;color:var(--dim)}
.modal-body{padding:0 22px 16px;overflow:auto;min-height:0}
.modal-foot{display:flex;gap:8px;justify-content:flex-end;padding:12px 22px;border-top:1px solid var(--edge);background:color-mix(in oklab, var(--navy) 2%, var(--surface))}
.sheet-meta{display:flex;flex-wrap:wrap;gap:16px;font-size:12px;color:var(--dim)}
.grid-wrap{overflow:auto;max-height:56vh;border:1px solid var(--edge);border-radius:6px;margin-top:12px}
table.xl{border-collapse:collapse;font:11px var(--mono);width:auto}
.xl th{background:color-mix(in oklab, var(--brand) 7%, var(--surface));color:var(--dim);font-weight:500;border:1px solid var(--edge);padding:3px 6px;text-align:center;position:sticky;top:0;z-index:1}
.xl th.rh{left:0;z-index:3;width:36px;min-width:36px}
.xl tbody th.rh{position:sticky;left:0;z-index:2;background:color-mix(in oklab, var(--brand) 7%, var(--surface))}
.xl td{border:1px solid color-mix(in oklab, var(--brand) 8%, var(--surface));padding:3px 8px;white-space:nowrap;text-align:right;background:var(--surface)}
.xl td.t{text-align:left;font-family:var(--font)} .xl td.b{font-weight:600}
.xl .lab{position:sticky;left:35px;z-index:2;text-align:left;min-width:170px;max-width:260px;overflow:hidden;text-overflow:ellipsis;box-shadow:-5px 0 0 var(--surface),1px 0 0 var(--edge)}
.xl th.lab{z-index:3}
.xl tr.hlr td{background:color-mix(in oklab, var(--gold) 9%, var(--surface))}
.xl td.hl{background:color-mix(in oklab, var(--gold) 16%, var(--surface));outline:2px solid color-mix(in oklab, var(--gold) 82%, black);outline-offset:-2px;font-weight:700}

/* Sign-off */
.review{border:1px solid var(--edge);border-radius:8px;padding:14px;margin:0 0 12px;background:var(--surface)}
.review.done{display:flex;justify-content:space-between;align-items:center;gap:10px;opacity:.8;padding:10px 14px}
.review.done div{display:flex;flex-direction:column}
.review-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.review-head div,.review.done div{min-width:0}
.review-head small,.review.done small{letter-spacing:.8px;font-size:10px}
.review-head b{display:block}
.opt{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px 10px;border:1px solid color-mix(in oklab, var(--brand) 8%, var(--surface));border-radius:6px;margin:6px 0;cursor:pointer}
.opt.on{border-color:var(--brand);background:color-mix(in oklab, var(--teal) 6%, var(--surface))}
.opt input[type=radio]{accent-color:var(--brand)}
.opt span small{display:block}
.opt strong{font-size:14px;font-variant-numeric:tabular-nums}
.opt input.inp{width:120px;text-align:right}
.review-foot{display:flex;gap:8px;align-items:center;justify-content:flex-end;margin-top:10px;flex-wrap:wrap}
.review-foot small{margin-right:auto;max-width:60%}
.audit{margin-top:10px;font-size:11px;display:flex;flex-direction:column;gap:6px}
.audit small{letter-spacing:1px;font-size:10px}
.audit div{padding:6px 8px;border-left:2px solid var(--positive);background:var(--wash)}

/* Screener */
.screener-top{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin-bottom:6px}
.rent-inputs{display:flex;gap:10px;margin-bottom:6px}
.range-field{display:block;margin:14px 0 18px}
.range-field span{display:flex;justify-content:space-between;gap:10px;font-size:12px}
.range-field span b{color:var(--input);font-weight:600;font-variant-numeric:tabular-nums}
.rei .range-field input{width:100%;padding:0;margin-top:10px;accent-color:var(--brand);border:0}
.range-field.compact{margin:8px 0 10px}
.sens-wrap{margin-top:14px}
.sens-wrap small{letter-spacing:.8px;font-size:10px}
table.sens{margin-top:6px;font-size:11px}
.sens th,.sens td{text-align:center!important;padding:5px 3px;border:1px solid var(--surface)}
.sens th{background:var(--wash);color:var(--dim);font-weight:500}
.sens td.base{outline:2px solid var(--ink);outline-offset:-2px;font-weight:700}
.inbox-row{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:10px 12px;border:1px solid color-mix(in oklab, var(--brand) 8%, var(--surface));border-radius:6px;margin-bottom:8px}
.inbox-row.on{border-color:var(--brand);background:color-mix(in oklab, var(--teal) 4%, var(--surface))}
.inbox-row small{display:block}
.pipeline-stages{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin:14px 0 10px}
.stage{border:1px solid var(--edge);border-radius:6px;padding:9px;background:var(--wash);min-width:0;font-size:11px}
.stage b{display:block;font-size:12px}
.stage small{display:block}
.stage span{display:block;margin-top:6px;font-weight:600;color:var(--dim)}
.stage.run{border-color:var(--brand);background:color-mix(in oklab, var(--teal) 8%, var(--surface))} .stage.run span{color:var(--brand)}
.stage.done span{color:var(--positive)}
.drop{border:1.5px dashed var(--edge);border-radius:8px;padding:18px;text-align:center;color:var(--dim);background:var(--wash);cursor:pointer;margin-bottom:10px}
.drop.over{border-color:var(--brand);color:var(--brand);background:color-mix(in oklab, var(--teal) 8%, var(--surface))}
.upload-result{border:1px solid var(--edge);border-radius:8px;padding:12px 14px;margin-top:12px}
.spin{display:inline-block;width:10px;height:10px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:sp .7s linear infinite;vertical-align:-1px}
@keyframes sp{to{transform:rotate(360deg)}}

/* Phone view */
.phone-wrap{position:relative;display:flex;flex-direction:column;align-items:center;gap:10px}
.rei .phone-close{position:absolute;right:-44px;top:0;border-radius:50%;width:34px;height:34px;padding:0;font-size:20px}
.phone{width:360px;height:min(740px,86vh);border-radius:42px;padding:11px;background:color-mix(in oklab, var(--ink) 64%, black);box-shadow:0 20px 50px color-mix(in oklab, black 27%, transparent),inset 0 0 0 2px color-mix(in oklab, var(--negative) 7%, var(--ink))}
.screen{width:100%;height:100%;border-radius:32px;overflow:hidden;background:var(--wash);display:flex;flex-direction:column}
.notch{height:30px;display:flex;align-items:center;justify-content:space-between;padding:0 22px;font-size:11px;font-weight:600;background:var(--surface);flex:none}
.m-head{padding:6px 16px 10px;background:var(--surface);border-bottom:1px solid var(--edge);flex:none}
.m-head b{display:block;font-size:17px}
.m-body{flex:1;overflow:auto;padding:12px;display:flex;flex-direction:column;gap:10px}
.m-tiles{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.m-tile{background:var(--surface);border:1px solid var(--edge);border-radius:10px;padding:8px 10px}
.m-tile small{font-size:9px;letter-spacing:.8px;text-transform:uppercase}
.m-tile strong{display:block;font-size:19px;font-variant-numeric:tabular-nums}
.m-card{background:var(--surface);border:1px solid var(--edge);border-radius:10px;padding:10px 12px;font-size:12px}
.sens.mini td{font-size:10px}
.m-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:10px 12px;background:var(--surface);border-top:1px solid var(--edge);flex:none}
.phone-note{color:color-mix(in oklab, var(--brand) 10%, var(--surface));font-size:11px;margin:0}

/* Pipeline */
.pipeline{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.pipeline .panel{padding:12px;background:var(--wash)}
.pipeline-card{padding:12px;background:var(--surface);border:1px solid var(--edge);border-radius:6px;margin-bottom:10px}
.pipeline-card .pipe-photo{width:100%;height:96px;border-radius:5px;margin-bottom:8px}
.pipeline-card b{display:block}
.pipeline-card p{font-size:11px;color:var(--dim);margin:4px 0}
.pipeline-card .field{margin:10px 0}
.pipeline-card .actions button{font-size:11px}

/* Portfolio */
.portfolio-layout{display:grid;grid-template-columns:210px minmax(0,1fr);height:100%}
.portfolio-filters{padding:20px 16px;background:color-mix(in oklab, var(--teal) 3%, var(--surface));border-right:1px solid color-mix(in oklab, var(--teal) 13%, var(--surface));overflow:auto}
.flabel{font-size:11px;letter-spacing:1px;color:color-mix(in oklab, var(--ink) 62%, var(--surface))}
.portfolio-filters h4{font-size:10px;letter-spacing:1.4px;color:color-mix(in oklab, var(--ink) 57%, var(--surface));margin:22px 0 10px}
.rei .portfolio-filters button.asset-link{display:block;width:100%;text-align:left;background:transparent;border:0;border-bottom:1px solid color-mix(in oklab, var(--navy) 7%, var(--surface));border-radius:0;padding:8px 0;color:color-mix(in oklab, var(--ink) 73%, var(--surface));font-size:11px}
.portfolio-center{overflow:auto;padding:0 26px 30px;min-width:0}
.tabs.sticky{position:sticky;top:0;background:var(--surface);z-index:5;margin:0 -26px 22px;padding:0 26px;flex-wrap:nowrap;overflow:auto;gap:20px}
.tabs.sticky button{padding:16px 0 13px!important;white-space:nowrap}
.portfolio-title{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:16px}
.portfolio-title small{letter-spacing:1px;font-size:10px}
.portfolio-title h1{font-size:25px;margin:2px 0 4px}
.portfolio-title p{font-size:11px;color:color-mix(in oklab, var(--ink) 51%, var(--surface));margin:0}
.portfolio-center .metrics{gap:0 16px;border-top:1px solid color-mix(in oklab, var(--teal) 13%, var(--surface));margin-bottom:22px}
.portfolio-center .metric{padding:14px 0}
.portfolio-center .metric strong{font-size:25px}
.portfolio-center .panel{border:0;border-bottom:1px solid color-mix(in oklab, var(--teal) 13%, var(--surface));padding:12px 0 24px;border-radius:0;margin-bottom:16px}
.trend{width:100%;overflow:hidden}.trend svg{display:block;margin-top:6px;max-width:100%}
.trend .ax{fill:color-mix(in oklab, var(--ink) 51%, var(--surface))}.trend .grid{stroke:color-mix(in oklab, var(--brand) 10%, var(--surface))}
.trend .bar{fill:color-mix(in oklab, var(--teal) 96%, black)}.trend .bud{stroke:color-mix(in oklab, var(--gold) 88%, var(--ink))}
.trend .occ{stroke:color-mix(in oklab, var(--navy) 57%, var(--ink))}.trend .occ-t,.trend .occ-dot{fill:color-mix(in oklab, var(--navy) 57%, var(--ink))}.trend .occ-dot{stroke:var(--surface)}.trend .lg text{fill:var(--ink)}

/* Analyst */
.analyst{min-width:0;min-height:0;display:flex;flex-direction:column;border-left:1px solid color-mix(in oklab, var(--teal) 13%, var(--surface));padding:20px 16px;background:color-mix(in oklab, var(--navy) 1%, var(--surface));overflow:hidden}
.analyst>small{display:block;margin-top:-6px}
.thread{flex:1;min-height:0;overflow:auto;margin:10px -4px 0;padding:0 4px}
.suggestions{display:flex;flex-direction:column;gap:9px;padding:18px 0}
.rei .suggestions button{text-align:left;font-size:12px;padding:13px 12px;line-height:1.45;background:var(--surface)}
.analyst form{display:flex;gap:6px;margin:12px 0 6px}
.analyst form input{flex:1;font-size:12px}
.answer{font-size:12px;margin:12px 0 18px}
.question{padding:10px 12px;background:var(--soft);border-radius:7px;margin:0 0 8px}
.answer h2{font-size:22px;margin:6px 0}
.ans-title{display:block;margin:6px 0 0}
.answer p{margin:6px 0 8px}
.answer .bar-item{grid-template-columns:78px 1fr 50px;gap:6px}
.answer table{font-size:11px}
.answer td,.answer th{padding:6px 5px}
.plan{display:flex;flex-wrap:wrap;gap:4px}
.plan span{font:10px var(--mono);background:var(--surface);border:1px solid var(--edge);padding:1px 6px;border-radius:4px;color:var(--dim)}
.answer-actions{display:flex;flex-direction:column;gap:6px;margin-top:6px}
.answer-actions button{font-size:11px}
.ai-text{white-space:pre-wrap;margin:6px 0}
.thinking{color:var(--dim)}
.new-q{font-size:11px;margin-top:6px}

/* Sourcing (from JP's sourcing.css, scoped) */
.source-app{height:100%;display:flex;flex-direction:column;min-height:0}
.source-top{height:64px;flex:none;border-bottom:1px solid color-mix(in oklab, var(--navy) 10%, var(--surface));display:flex;justify-content:space-between;align-items:center;padding:10px 20px}
.eyebrow{font-size:10px;color:color-mix(in oklab, var(--ink) 51%, var(--surface));letter-spacing:1.3px;font-weight:600}
.source-top h1{font-size:18px;margin:2px 0 3px;font-weight:650}
.summary{color:color-mix(in oklab, var(--ink) 57%, var(--surface));font-size:11px}
.live{color:color-mix(in oklab, var(--positive) 98%, var(--surface));display:inline-flex;align-items:center;gap:5px;font-size:12px}
.live:before{content:'';width:6px;height:6px;background:color-mix(in oklab, var(--positive) 88%, var(--surface));border-radius:50%}
.source-top-right{display:flex;gap:10px;align-items:center}
.feed-warning{padding:8px 20px;background:color-mix(in oklab, var(--gold) 12%, var(--surface));color:color-mix(in oklab, var(--gold) 68%, black);font-size:12px;border-bottom:1px solid color-mix(in oklab, var(--gold) 33%, var(--surface));flex:none}
.source-body{display:flex;flex:1;min-height:0;position:relative;overflow:hidden}
.results{width:340px;flex:none;display:flex;flex-direction:column;border-right:1px solid color-mix(in oklab, var(--ink) 11%, var(--surface));background:var(--surface);z-index:500;min-height:0}
.results-head{padding:16px 16px 10px;border-bottom:1px solid color-mix(in oklab, var(--navy) 10%, var(--surface))}
.count-line{display:flex;justify-content:space-between;align-items:center;margin:4px 0 10px}
.count-line strong{font-size:16px}
.count-unit{font-weight:400;font-size:13px}
.rei .plain-button{border:0;background:none;color:color-mix(in oklab, var(--ink) 58%, var(--surface));padding:5px 8px}
.sort-line{display:flex;gap:12px;align-items:center;color:color-mix(in oklab, var(--ink) 52%, var(--surface));font-size:12px}
.rei .sort-line select{flex:1;border:0;padding:5px;color:color-mix(in oklab, var(--ink) 85%, var(--surface))}
.result-scroll{overflow-y:auto;flex:1;min-height:0;scrollbar-width:thin;scrollbar-color:color-mix(in oklab, var(--brand) 16%, var(--surface)) var(--surface)}
.rei .listing{width:100%;border:0;border-bottom:1px solid color-mix(in oklab, var(--navy) 6%, var(--surface));border-radius:0;background:var(--surface);text-align:left;padding:15px;display:flex;gap:12px;align-items:flex-start}
.rei .listing:hover{background:color-mix(in oklab, var(--teal) 3%, var(--surface))}
.rei .listing.selected{background:color-mix(in oklab, var(--teal) 6%, var(--surface));box-shadow:inset 3px 0 var(--teal)}
.photo{position:relative;overflow:hidden;background:color-mix(in oklab, var(--brand) 7%, var(--surface))}
.photo-in{position:absolute;inset:0;background-repeat:no-repeat}
.photo-in img{width:100%;height:100%;object-fit:cover;display:block}
.thumb{width:65px;height:74px;border-radius:5px;flex:none}
.listing-copy{min-width:0;flex:1;display:flex;flex-direction:column}
.listing-title{font-size:13px;line-height:1.4;font-weight:650;margin:0 0 4px;overflow-wrap:anywhere}
.listing-location{color:color-mix(in oklab, var(--ink) 55%, var(--surface));font-size:11px;line-height:1.5;margin-bottom:6px}
.listing-bottom{display:flex;justify-content:space-between;gap:6px;align-items:center}
.listing-price{font-size:14px;font-weight:650}
.listing-price.missing{font-size:13px;color:color-mix(in oklab, var(--ink) 70%, var(--surface))}
.listing-price .per-unit{font-size:12px;font-weight:500;color:color-mix(in oklab, var(--ink) 70%, var(--surface))}
.listing-status{font-size:9px;letter-spacing:.5px;text-transform:uppercase;color:color-mix(in oklab, var(--ink) 61%, var(--surface));text-align:right}
.score-line{color:color-mix(in oklab, var(--ink) 50%, var(--surface));font-size:10px;line-height:1.6;margin-top:6px}
.state-message{padding:22px 16px;color:color-mix(in oklab, var(--ink) 54%, var(--surface));line-height:1.7}
.result-footer{padding:9px 16px;border-top:1px solid color-mix(in oklab, var(--navy) 7%, var(--surface));font-size:10px;color:color-mix(in oklab, var(--ink) 47%, var(--surface));flex:none}
.map-wrap{position:relative;flex:1;min-width:0;background:color-mix(in oklab, var(--teal) 13%, var(--surface))}
.map{height:100%;width:100%}
.map-search{position:absolute;top:16px;left:18px;right:18px;z-index:600;display:flex;gap:6px;pointer-events:none}
.map-search>*{pointer-events:auto}
.search-box{display:flex;flex:1;min-width:150px;align-items:center;gap:9px;background:var(--surface);border:1px solid color-mix(in oklab, var(--brand) 14%, var(--surface));border-radius:5px;box-shadow:0 2px 7px color-mix(in oklab, color-mix(in oklab, var(--ink) 96%, var(--surface)) 6%, transparent);padding:6px 12px}
.rei .search-box input{border:0;outline:0;min-width:0;flex:1;font-size:12px;padding:4px 0}
.rei .map-search select{padding:9px 8px;border:1px solid color-mix(in oklab, var(--brand) 14%, var(--surface));border-radius:5px;color:color-mix(in oklab, var(--ink) 72%, var(--surface));font-size:11px;max-width:150px}
.map-note{position:absolute;bottom:24px;left:10px;z-index:500;background:color-mix(in oklab, var(--surface) 92%, transparent);padding:6px 9px;color:color-mix(in oklab, var(--ink) 61%, var(--surface));font-size:10px;border-radius:4px;max-width:calc(100% - 70px)}
.rei .map-button{border:1px solid color-mix(in oklab, var(--brand) 15%, var(--surface));background:var(--surface);border-radius:5px;color:color-mix(in oklab, var(--ink) 73%, var(--surface));font-size:11px;padding:8px}
.results-collapsed{position:absolute;top:66px;left:16px;z-index:601}
.detail{width:345px;flex:none;background:var(--surface);border-left:1px solid color-mix(in oklab, var(--brand) 14%, var(--surface));display:flex;flex-direction:column;z-index:650;box-shadow:-4px 0 12px color-mix(in oklab, color-mix(in oklab, var(--ink) 89%, var(--surface)) 3%, transparent);min-height:0}
.detail-scroll{flex:1;min-height:0;overflow:auto;scrollbar-width:thin}
.hero{position:relative;height:150px;background:color-mix(in oklab, var(--brand) 11%, var(--surface))}
.hero .hero-photo{position:absolute;inset:0}
.hero:after{content:'';position:absolute;inset:40% 0 0;background:linear-gradient(transparent,color-mix(in oklab, color-mix(in oklab, var(--navy) 94%, black) 87%, transparent))}
.hero-copy{position:absolute;bottom:12px;left:15px;right:14px;color:var(--on-strong);z-index:1}
.hero-copy h2{font-size:15px;line-height:1.3;margin:0 0 3px}
.hero-copy p{font-size:11px;margin:0}
.rei .close-detail{position:absolute;right:9px;top:9px;z-index:3;border:0;border-radius:4px;background:color-mix(in oklab, var(--surface) 93%, transparent);color:color-mix(in oklab, var(--ink) 84%, var(--surface));font-size:20px;width:30px;height:30px;line-height:22px;padding:0}
.detail-tags{padding:12px 17px;color:color-mix(in oklab, var(--ink) 67%, var(--surface));font-size:11px;display:flex;gap:18px}
.scores{margin:6px 16px 12px;display:grid;grid-template-columns:repeat(3,1fr);padding:12px 0;background:color-mix(in oklab, var(--navy) 2%, var(--surface));border:1px solid color-mix(in oklab, var(--navy) 5%, var(--surface))}
.score{text-align:center}
.score small{font-size:9px;letter-spacing:.6px;color:color-mix(in oklab, var(--ink) 51%, var(--surface));display:block;margin-bottom:5px}
.score span{font-size:11px;color:color-mix(in oklab, var(--ink) 50%, var(--surface))}
.score span.has{font-size:16px;color:var(--ink);font-weight:600}
.detail-section{padding:6px 19px 12px}
.detail-section h3{font-size:10px;letter-spacing:1px;margin:8px 0 12px;color:color-mix(in oklab, var(--ink) 59%, var(--surface))}
.detail-section dl{margin:0}
.data-row{display:flex;justify-content:space-between;gap:20px;font-size:11px;margin:9px 0;line-height:1.4}
.data-row dt{color:color-mix(in oklab, var(--ink) 48%, var(--surface));flex:1}
.data-row dd{margin:0;text-align:right;color:color-mix(in oklab, var(--ink) 84%, var(--surface));font-weight:500;max-width:62%;overflow-wrap:anywhere}
.data-row dd small{display:block;font-weight:400;font-size:10px}
.data-row dd.missing{color:color-mix(in oklab, var(--ink) 42%, var(--surface));font-weight:400}
.detail-section.summary{font-size:11px;color:color-mix(in oklab, var(--ink) 53%, var(--surface));line-height:1.6;border-top:1px solid color-mix(in oklab, var(--navy) 6%, var(--surface));padding-top:12px}
.detail-footer{display:flex;gap:8px;padding:12px 14px;border-top:1px solid color-mix(in oklab, var(--ink) 9%, var(--surface));background:color-mix(in oklab, var(--navy) 2%, var(--surface));flex:none}
.detail-footer a,.rei .detail-footer button,.na-link{flex:1;text-align:center;padding:9px 5px;font-size:11px;border-radius:5px;text-decoration:none}
.detail-footer a{color:color-mix(in oklab, var(--ink) 70%, var(--surface));border:1px solid color-mix(in oklab, var(--brand) 14%, var(--surface))}
.na-link{color:color-mix(in oklab, var(--ink) 42%, var(--surface));border:1px solid color-mix(in oklab, var(--navy) 6%, var(--surface))}
.rei .detail-footer button{border:0;background:var(--navy);color:var(--on-strong)}
.rei .detail-footer button.secondary{background:var(--surface);color:var(--ink);border:1px solid color-mix(in oklab, var(--brand) 14%, var(--surface));flex:.7}
.rei .detail-footer button:disabled{background:color-mix(in oklab, var(--positive) 12%, var(--surface));color:color-mix(in oklab, var(--positive) 98%, var(--surface));opacity:1}
.leaflet-container{background:color-mix(in oklab, var(--teal) 13%, var(--surface));font-family:var(--font)}
.leaflet-pane path.dd-state{stroke:color-mix(in oklab, var(--brand) 27%, var(--surface));fill:color-mix(in oklab, var(--brand) 5%, var(--surface))}.leaflet-pane path.dd-county{stroke:color-mix(in oklab, var(--brand) 18%, var(--surface))}
.leaflet-control-attribution{font-size:9px!important}
.leaflet-control-zoom{margin-bottom:48px!important}
.leaflet-bar a,.leaflet-bar a:hover{background:var(--surface);color:var(--ink);border-bottom-color:var(--edge)}.leaflet-bar a:hover{background:var(--soft)}
.leaflet-container .leaflet-control-attribution{background:color-mix(in oklab, var(--surface) 80%, transparent);color:var(--dim)}.leaflet-control-attribution a{color:var(--brand)}
.leaflet-tooltip{background:var(--surface)}.leaflet-tooltip-top:before{border-top-color:var(--surface)}.leaflet-tooltip-bottom:before{border-bottom-color:var(--surface)}.leaflet-tooltip-left:before{border-left-color:var(--surface)}.leaflet-tooltip-right:before{border-right-color:var(--surface)}
.teal-cluster{display:flex;align-items:center;justify-content:center;background:var(--cluster);color:var(--on-strong);border-radius:50%;border:6px solid color-mix(in oklab, color-mix(in oklab, var(--teal) 31%, var(--surface)) 69%, transparent);box-shadow:0 0 0 5px color-mix(in oklab, color-mix(in oklab, var(--teal) 25%, var(--surface)) 30%, transparent);background-clip:padding-box;font:600 12px var(--font)}
.teal-pin{background:color-mix(in oklab, var(--brand) 98%, black);border:3px solid color-mix(in oklab, var(--surface) 85%, transparent);border-radius:50%;box-shadow:0 0 0 3px color-mix(in oklab, color-mix(in oklab, var(--teal) 95%, var(--surface)) 19%, transparent)}
.city-label{display:flex;align-items:center;gap:4px;white-space:nowrap;transform:translate(-3px,-50%);pointer-events:none}
.city-label i{width:4px;height:4px;border-radius:50%;background:color-mix(in oklab, var(--ink) 45%, var(--surface));flex:none}
.city-label span{font:500 10.5px/1 var(--font);color:color-mix(in oklab, var(--ink) 65%, var(--surface));text-shadow:0 0 2px var(--surface),0 0 2px var(--surface),0 0 3px var(--surface)}
.city-label.major span{font-weight:650;color:color-mix(in oklab, var(--ink) 77%, var(--surface));font-size:11px}
.teal-cluster.has-chosen{box-shadow:0 0 0 4px var(--gold)!important}
.teal-pin.chosen{background:var(--gold);box-shadow:0 0 0 5px color-mix(in oklab, var(--gold) 25%, transparent);z-index:1000!important}
.leaflet-tooltip{color:color-mix(in oklab, var(--teal) 54%, var(--ink));font-size:11px;border:1px solid color-mix(in oklab, var(--teal) 18%, var(--surface));box-shadow:0 2px 5px color-mix(in oklab, color-mix(in oklab, var(--teal) 72%, black) 8%, transparent)}

/* Research (from JP's research.css, scoped) */
.research{height:100%;display:flex;flex-direction:column;min-height:0;position:relative}
.r-top{height:57px;flex:none;display:flex;justify-content:space-between;align-items:center;padding:0 20px;border-bottom:1px solid color-mix(in oklab, var(--ink) 10%, var(--surface));gap:12px}
.breadcrumb{display:flex;align-items:center;gap:12px;font-size:12px;color:color-mix(in oklab, var(--ink) 48%, var(--surface))}
.breadcrumb b{color:color-mix(in oklab, var(--ink) 94%, var(--surface))}
.r-source{font-size:11px;color:color-mix(in oklab, var(--ink) 51%, var(--surface))}
.r-source a{color:color-mix(in oklab, var(--brand) 93%, var(--surface));text-decoration:none}
.r-layout{display:flex;flex:1;min-height:0;position:relative}
.scope{width:274px;flex:none;border-right:1px solid color-mix(in oklab, var(--ink) 10%, var(--surface));background:color-mix(in oklab, var(--positive) 1%, var(--surface));overflow:auto;scrollbar-width:thin;padding:18px 21px}
.scope-head{display:flex;align-items:center;justify-content:space-between}
.label{font-size:10px;letter-spacing:1.35px;font-weight:650;color:color-mix(in oklab, var(--ink) 54%, var(--surface))}
.rei .plain{border:0;background:none;padding:3px 5px;color:color-mix(in oklab, var(--ink) 48%, var(--surface));font-size:11px}
.filter{padding-top:22px}
.filter h3{font-size:10px;letter-spacing:1.1px;color:color-mix(in oklab, var(--ink) 58%, var(--surface));margin:0 0 12px}
.pills{display:flex;gap:5px;flex-wrap:wrap}
.rei .pills button{padding:5px 10px;font-size:11px;border:0;border-radius:20px;background:color-mix(in oklab, var(--brand) 6%, var(--surface));color:color-mix(in oklab, var(--ink) 54%, var(--surface))}
.rei .pills button.active{background:color-mix(in oklab, var(--teal) 93%, black);color:var(--on-strong)}
.scope select{width:100%;font-size:12px;color:color-mix(in oklab, var(--ink) 70%, var(--surface))}
.rei .scope input[type=range]{width:100%;accent-color:var(--teal);border:0;padding:0}
.range-caption{display:flex;justify-content:space-between;font-size:10px;color:color-mix(in oklab, var(--ink) 41%, var(--surface));margin-top:5px}
.coverage{margin-top:22px;padding:14px 0;border-top:1px solid color-mix(in oklab, var(--brand) 12%, var(--surface))}
.coverage strong{display:block;color:color-mix(in oklab, var(--ink) 76%, var(--surface));font-size:12px;margin-bottom:6px}
.r-center{position:relative;flex:1;min-width:0;background:color-mix(in oklab, var(--teal) 13%, var(--surface))}
.research-pin{border-radius:50%;background:color-mix(in oklab, var(--teal) 93%, var(--surface));border:2px solid var(--surface);box-shadow:0 0 0 3px color-mix(in oklab, color-mix(in oklab, var(--teal) 93%, var(--surface)) 15%, transparent)}
.research-pin.chosen{background:color-mix(in oklab, var(--navy) 83%, black);border:3px solid color-mix(in oklab, var(--gold) 81%, var(--surface));box-shadow:0 0 0 3px color-mix(in oklab, color-mix(in oklab, var(--gold) 81%, var(--surface)) 22%, transparent)}
.mapbar{position:absolute;top:15px;left:17px;right:17px;z-index:500;display:flex;gap:7px;align-items:center}
.search{background:var(--surface);border:1px solid color-mix(in oklab, var(--brand) 13%, var(--surface));box-shadow:0 2px 10px color-mix(in oklab, color-mix(in oklab, var(--teal) 33%, var(--ink)) 4%, transparent);display:flex;align-items:center;gap:8px;padding:5px 13px;border-radius:6px;flex:1;min-width:0}
.rei .search input{border:0;outline:0;width:100%;color:color-mix(in oklab, var(--ink) 74%, var(--surface));font-size:12px}
.rei .mapbar button{font-size:11px;padding:10px;white-space:nowrap}
.map-legend{position:absolute;left:18px;top:70px;z-index:450;color:color-mix(in oklab, var(--ink) 67%, var(--surface));background:color-mix(in oklab, var(--surface) 92%, transparent);border-radius:4px;padding:6px 10px;font-size:10px}
.map-legend i{display:inline-block;width:7px;height:7px;background:color-mix(in oklab, var(--teal) 93%, var(--surface));border-radius:50%;margin-right:5px}
.compbar{position:absolute;bottom:34px;left:18px;right:18px;z-index:500;background:var(--surface);border:1px solid color-mix(in oklab, var(--brand) 14%, var(--surface));border-radius:10px;padding:14px 18px;display:flex;align-items:center;gap:14px;box-shadow:0 4px 24px color-mix(in oklab, color-mix(in oklab, var(--teal) 48%, var(--ink)) 9%, transparent)}
.compcount{min-width:94px}
.compcount strong{display:block;margin-top:3px;font-size:13px}
.compnames{font-size:12px;color:color-mix(in oklab, var(--ink) 65%, var(--surface));flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.rei .compbar button{font-size:11px;white-space:nowrap}
.rei button.teal{background:var(--teal);color:var(--on-strong);border-color:var(--teal)}
.rei .compbar button.primary{background:var(--navy-2)}
.map-caption{position:absolute;bottom:8px;left:17px;z-index:450;font-size:9px;color:color-mix(in oklab, var(--ink) 61%, var(--surface));background:color-mix(in oklab, var(--surface) 85%, transparent);padding:3px 7px;max-width:70%}
.summary-panel{width:394px;flex:none;border-left:1px solid color-mix(in oklab, var(--brand) 13%, var(--surface));display:flex;flex-direction:column;background:var(--surface);min-height:0}
.rtabs{display:flex;justify-content:space-between;padding:0 18px;flex:none;border-bottom:1px solid color-mix(in oklab, var(--ink) 9%, var(--surface));height:50px}
.rei .rtabs button{border:0;border-radius:0;padding:0 7px;background:none;font-size:12px;color:color-mix(in oklab, var(--ink) 48%, var(--surface))}
.rei .rtabs button.active{color:color-mix(in oklab, var(--ink) 88%, var(--surface));border-bottom:2px solid color-mix(in oklab, var(--teal) 53%, var(--ink));font-weight:650}
.summary-scroll{padding:22px;overflow:auto;scrollbar-width:thin;flex:1;min-height:0}
.section-title{font-size:12px;font-weight:650;display:flex;justify-content:space-between;gap:12px;margin-bottom:20px}
.section-title span{font-size:10px;font-weight:400;color:color-mix(in oklab, var(--ink) 44%, var(--surface))}
.rmetrics{display:grid;grid-template-columns:1fr 1fr;gap:24px 16px;margin:0 0 28px}
.rmetric .label{font-size:9px;letter-spacing:1px}
.rmetric strong{display:block;font-size:26px;letter-spacing:-.5px;font-weight:600;color:color-mix(in oklab, var(--ink) 94%, var(--surface));margin:5px 0}
.rmetric small{font-size:10px;color:color-mix(in oklab, var(--ink) 44%, var(--surface))}
.rmetric strong.na{font-size:14px;color:color-mix(in oklab, var(--ink) 41%, var(--surface));letter-spacing:0}
.rcharts{display:grid;grid-template-columns:1fr 1fr;gap:24px 18px}
.rchart h3{font-size:12px;margin:0 0 5px}
.rchart p{font-size:10px;color:color-mix(in oklab, var(--ink) 42%, var(--surface));line-height:1.5;margin:0 0 12px}
.vbars{height:130px;display:flex;align-items:flex-end;gap:8px;border-bottom:1px solid color-mix(in oklab, var(--brand) 11%, var(--surface));padding:0 6px;margin-bottom:22px}
.vbar{flex:1;position:relative;background:color-mix(in oklab, var(--teal) 96%, var(--surface));border-radius:3px 3px 0 0;min-height:1px}
.vbar:nth-child(even){background:color-mix(in oklab, var(--teal) 67%, var(--surface))}
.vbar b{position:absolute;top:-18px;left:50%;transform:translateX(-50%);font-size:9px;font-weight:400;color:color-mix(in oklab, var(--ink) 61%, var(--surface))}
.vbar span{position:absolute;bottom:-19px;left:50%;transform:translateX(-50%);font-size:9px;color:color-mix(in oklab, var(--ink) 44%, var(--surface));white-space:nowrap}
.empty-chart{height:130px;border-bottom:1px solid color-mix(in oklab, var(--brand) 11%, var(--surface));display:flex;align-items:center;justify-content:center;color:color-mix(in oklab, var(--ink) 38%, var(--surface));font-size:11px;background:linear-gradient(var(--surface),color-mix(in oklab, var(--teal) 3%, var(--surface)))}
.note{font-size:10px;color:color-mix(in oklab, var(--ink) 46%, var(--surface));line-height:1.65;margin-top:24px;border-top:1px solid color-mix(in oklab, var(--brand) 9%, var(--surface));padding-top:14px}
.detail-card{margin-top:22px;border-top:1px solid color-mix(in oklab, var(--brand) 12%, var(--surface));padding-top:18px}
.detail-card h3{font-size:14px;margin:0 0 5px}
.detail-card p{color:color-mix(in oklab, var(--ink) 47%, var(--surface));font-size:11px;line-height:1.5}
.detail-card .data-row span{color:color-mix(in oklab, var(--ink) 47%, var(--surface))}
.detail-card .data-row b{font-weight:500;text-align:right;max-width:65%}
.empty-state{padding:36px 3px;color:color-mix(in oklab, var(--ink) 45%, var(--surface));font-size:12px;line-height:1.8}
.results-drawer{position:absolute;z-index:650;left:17px;top:68px;bottom:124px;width:320px;max-width:90%;background:var(--surface);border:1px solid color-mix(in oklab, var(--teal) 15%, var(--surface));border-radius:8px;box-shadow:0 8px 30px color-mix(in oklab, color-mix(in oklab, var(--ink) 88%, var(--surface)) 13%, transparent);display:flex;flex-direction:column}
.drawer-head{padding:12px 14px;display:flex;justify-content:space-between;border-bottom:1px solid color-mix(in oklab, var(--teal) 12%, var(--surface));font-size:12px;align-items:center}
.rows{overflow:auto;flex:1}
.record{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-bottom:1px solid color-mix(in oklab, var(--brand) 7%, var(--surface))}
.record input{accent-color:color-mix(in oklab, var(--teal) 82%, var(--ink));margin-top:3px}
.rei .record button{flex:1;text-align:left;background:none;border:0;padding:0;min-width:0}
.record b{display:block;font-size:12px;font-weight:600;margin-bottom:4px}
.record small{display:block;font-size:10px;color:color-mix(in oklab, var(--ink) 47%, var(--surface));line-height:1.6}
.record.selected{background:color-mix(in oklab, var(--teal) 6%, var(--surface))}
.saved-row{padding:12px 0;border-bottom:1px solid color-mix(in oklab, var(--brand) 10%, var(--surface));display:flex;justify-content:space-between;gap:10px;align-items:center}
.saved-row p{margin:2px 0 0}
.r-error{padding:30px;line-height:1.7}

/* Target sizes:1243x871, 1440x900, 1920x1080 */

/* ---- accounts and workspace screens ---- */
.auth{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 16px;background:linear-gradient(180deg,color-mix(in oklab, var(--teal) 5%, var(--surface)),var(--surface))}
.auth-card{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--edge);border-radius:12px;padding:30px 30px 26px;box-shadow:0 14px 40px color-mix(in oklab, color-mix(in oklab, var(--navy) 93%, black) 8%, transparent)}
.auth-logo{width:52px;height:52px;object-fit:contain;display:block;margin-bottom:14px}
.auth-card h1{font-size:22px;margin:0 0 6px}
.auth-form{display:flex;flex-direction:column;gap:14px;margin-top:18px}
.auth button,.auth input{font:inherit;border:1px solid var(--edge);border-radius:6px;padding:10px 12px;background:var(--surface)}
.auth button.primary{background:var(--navy);color:var(--on-strong);border-color:var(--navy);font-weight:600}
.auth button:disabled{opacity:.6}
.auth-foot{max-width:400px;text-align:center;color:var(--dim);font-size:12px;margin-top:16px}
.form-error{color:var(--negative);font-size:12px;margin:0}
.top-right{display:flex;align-items:center;gap:10px;min-width:0}
.ws-switch{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--dim)}
.ws-switch select{font-size:12px;max-width:260px}
.ws-name{font-weight:600;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.role-chip{font-size:10px;text-transform:uppercase;letter-spacing:.06em;padding:3px 8px;border-radius:10px;background:var(--soft);color:var(--brand);font-weight:600}
.avatar{width:30px;height:30px;border-radius:50%;background:var(--navy);color:var(--on-strong);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex:none}
.rei .profile-copy .signout{font-size:10px;margin-top:2px}
.pipe-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:12px}.pipe-head p{margin:0}
.pipeline.five{grid-template-columns:repeat(5,minmax(0,1fr))}
.version-save{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.version-save input{flex:1;min-width:220px}
.empty-page{max-width:560px;margin:40px auto;text-align:center}.empty-page .actions{justify-content:center}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:end;margin-bottom:10px}
.form-row{display:flex;gap:8px;align-items:flex-end;margin-bottom:12px}
.link-box{display:flex;gap:8px}.link-box input{flex:1;font:11px var(--mono)}
.note-add{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}.note-add textarea{font:inherit;border:1px solid var(--edge);border-radius:6px;padding:8px 10px;resize:vertical}.note-add button{align-self:flex-end}
.note{border-bottom:1px solid var(--edge);padding:10px 0}.note p{margin:0 0 4px;white-space:pre-wrap}.note small{color:var(--dim)}
.doc-add{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin-bottom:12px}.doc-add .field{max-width:320px}
.activity>div{padding:8px 0;border-bottom:1px solid var(--edge);font-size:12px}.activity small{display:block;color:var(--dim);font-size:11px}.activity.tall{max-height:420px;overflow:auto}
.steps{margin:0;padding-left:18px;line-height:1.9}
.settings td small{display:block;color:var(--dim)}
@media (min-width:1700px){.workspace.with-analyst{grid-template-columns:200px minmax(0,1fr) 320px}.workspace{grid-template-columns:200px minmax(0,1fr)}.results{width:380px}.detail{width:390px}.summary-panel{width:440px}.scope{width:300px}.portfolio-layout{grid-template-columns:230px minmax(0,1fr)}}
@media (max-width:1300px){.pipeline.five{grid-template-columns:repeat(3,minmax(0,1fr))}.workspace.with-analyst{grid-template-columns:180px minmax(0,1fr) 250px}.workspace{grid-template-columns:180px minmax(0,1fr)}.results{width:300px}.detail{width:320px}.summary-panel{width:330px}.scope{width:230px;padding:15px}.pipeline-stages{grid-template-columns:repeat(3,minmax(0,1fr))}.portfolio-layout{grid-template-columns:190px minmax(0,1fr)}.portfolio-center{padding:0 18px 30px}.tabs.sticky{margin:0 -18px 20px;padding:0 18px}.compnames{display:none}}
@media (max-width:1000px){.pipeline.five,.form-grid{grid-template-columns:1fr}.workspace.with-analyst{grid-template-columns:170px minmax(0,1fr)}.workspace.with-analyst>.analyst{grid-column:2;border-left:0;border-top:1px solid var(--edge)}.detail{position:absolute;right:0;top:0;bottom:0;width:min(360px,90%);box-shadow:-10px 0 30px color-mix(in oklab, color-mix(in oklab, var(--ink) 94%, var(--surface)) 15%, transparent)}.summary-panel{position:absolute;right:0;top:0;bottom:0;z-index:700}.two-col,.tiles{grid-template-columns:1fr}.pipeline{grid-template-columns:1fr}}
@media (max-width:760px){.workspace,.workspace.with-analyst{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}nav{flex-direction:row;padding:6px;border-right:0;border-bottom:1px solid color-mix(in oklab, var(--navy) 10%, var(--surface))}.nav-links{flex-direction:row;overflow-x:auto}.nav-section,.profile-footer{display:none}.rei nav .nav-links button{width:auto;white-space:nowrap}.workspace>main{padding:16px 16px 40px}.results{width:250px}.scope{display:none}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.portfolio-layout{grid-template-columns:minmax(0,1fr)}.portfolio-filters{display:none}.map-search select{display:none}.top-note{display:none}.workspace.with-analyst>.analyst{grid-column:1}}

/* ===== In-app feedback (Kleinbrook only): comment mode, pins, composer, drawer ===== */
.fb-bar{display:flex;align-items:center;gap:6px;margin-right:6px}
.rei .fb-bar button{padding:6px 10px;font-size:12px;font-weight:600}
.rei .fb-bar .fb-mode{display:inline-flex;align-items:center;gap:6px}
.fb-icon{width:14px;height:14px;flex:none}
.rei .fb-bar .fb-mode.on{background:var(--gold);border-color:var(--gold);color:var(--on-strong)}
.rei .fb-bar .fb-count{color:var(--dim);font-weight:500}
.fb-need{color:var(--negative);font-weight:700}
body.fb-annotating,body.fb-annotating *{cursor:crosshair!important}
body.fb-annotating .fb-ui,body.fb-annotating .fb-ui *{cursor:auto!important}
body.fb-annotating .fb-ui button,body.fb-annotating .fb-ui select{cursor:pointer!important}
.fb-hover{position:fixed;pointer-events:none;z-index:2590;border:2px solid var(--gold);background:color-mix(in oklab, var(--gold) 10%, transparent);border-radius:4px;transition:all .06s ease-out}
.fb-banner{position:fixed;top:70px;left:50%;transform:translateX(-50%);z-index:2600;background:var(--navy);color:var(--on-strong);padding:7px 16px;border-radius:20px;font-size:12px;box-shadow:0 6px 20px color-mix(in oklab, var(--navy) 25%, transparent)}
.rei .fb-banner .text-button{color:color-mix(in oklab, var(--gold) 42%, var(--surface));font-weight:700}
.rei .fb-pin{position:fixed;z-index:2580;transform:translate(-50%,-100%);min-width:24px;height:24px;padding:0 6px;border-radius:12px 12px 12px 2px;border:2px solid var(--surface);background:var(--navy);color:var(--on-strong);font-size:11px;font-weight:700;line-height:20px;box-shadow:0 3px 10px color-mix(in oklab, var(--navy) 31%, transparent)}
.rei .fb-pin:hover:not(:disabled){background:var(--brand)}
.rei .fb-pin.s-in_progress{background:var(--warn)}
.rei .fb-pin.s-needs_you{background:var(--negative)}
.rei .fb-pin.s-done{background:var(--positive);opacity:.75}
.rei .fb-pin.s-wont_do{background:color-mix(in oklab, var(--ink) 47%, var(--surface));opacity:.75}
.rei .fb-pin.focus{outline:3px solid var(--gold);outline-offset:1px}
.fb-composer{position:fixed;z-index:2700;background:var(--surface);border:1px solid var(--edge);border-radius:10px;box-shadow:0 18px 50px color-mix(in oklab, color-mix(in oklab, var(--navy) 93%, black) 22%, transparent);padding:12px;display:flex;flex-direction:column;gap:8px;font-size:12px}
.fb-target{color:var(--dim);line-height:1.4;word-break:break-word}
.fb-target b{color:var(--ink);font-weight:600}
.fb-kinds{display:flex;gap:4px;flex-wrap:wrap}
.rei .fb-kinds button{padding:4px 9px;font-size:11px;border-radius:12px}
.rei .fb-kinds button.on{background:var(--navy);color:var(--on-strong);border-color:var(--navy)}
.fb-composer textarea,.fb-item textarea{width:100%;box-sizing:border-box;font:inherit;font-size:13px;color:var(--ink);border:1px solid var(--edge);border-radius:6px;padding:8px;resize:vertical;min-height:34px}
.fb-composer textarea:focus,.fb-item textarea:focus{outline:2px solid color-mix(in oklab, var(--teal) 33%, transparent);border-color:var(--teal)}
.fb-hint{color:var(--dim);font-size:11px;margin:0}
.fb-shot{display:flex;align-items:center;gap:8px}
.fb-shot img{max-height:80px;max-width:180px;border:1px solid var(--edge);border-radius:4px}
.fb-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px}
.fb-actions .fb-hint{margin-right:auto}
.fb-drawer{position:fixed;top:62px;right:0;bottom:0;width:390px;max-width:100%;z-index:2550;background:var(--surface);border-left:1px solid var(--edge);box-shadow:-12px 0 40px color-mix(in oklab, color-mix(in oklab, var(--navy) 93%, black) 14%, transparent);display:flex;flex-direction:column;font-size:12px}
.fb-drawer-head{display:flex;justify-content:space-between;align-items:flex-start;padding:14px 16px 4px}
.fb-drawer-head small{letter-spacing:1px;font-size:10px;color:var(--dim)}
.fb-drawer-head h2{font-size:16px;margin:2px 0 0}
.rei .fb-drawer .close{border:0;background:none;font-size:22px;line-height:1;padding:2px 6px;color:var(--dim)}
.fb-intro{margin:4px 16px 8px;color:var(--dim);line-height:1.45}
.fb-tools{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 16px 8px;flex-wrap:wrap}
.rei .fb-tools button{padding:5px 9px;font-size:11px}
.fb-check{display:flex;align-items:center;gap:5px;color:var(--dim);font-size:11px}
.fb-list{flex:1;min-height:0;overflow:auto;padding:4px 16px 24px;display:flex;flex-direction:column;gap:10px}
.fb-item{border:1px solid var(--edge);border-left:4px solid var(--navy);border-radius:8px;padding:10px 11px;display:flex;flex-direction:column;gap:6px;background:var(--surface)}
.fb-item.s-in_progress{border-left-color:var(--warn)}
.fb-item.s-needs_you{border-left-color:var(--negative);background:color-mix(in oklab, var(--negative) 5%, var(--surface))}
.fb-item.s-done{border-left-color:var(--positive)}
.fb-item.s-wont_do{border-left-color:color-mix(in oklab, var(--ink) 47%, var(--surface))}
.fb-item.focus{box-shadow:0 0 0 3px color-mix(in oklab, var(--gold) 40%, transparent)}
.fb-item-head{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.rei .fb-item-head select{margin-left:auto;padding:3px 6px;font-size:11px}
.fb-kind{font-size:10px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;padding:2px 6px;border-radius:10px;background:var(--soft);color:var(--brand)}
.fb-kind.k-bug{background:color-mix(in oklab, var(--negative) 15%, var(--surface));color:var(--negative)}
.fb-kind.k-idea{background:color-mix(in oklab, var(--gold) 19%, var(--surface));color:var(--warn)}
.fb-where{color:var(--dim);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:170px}
.fb-on{color:var(--dim);font-size:11px;font-style:italic;word-break:break-word}
.fb-body{margin:0;white-space:pre-wrap;word-break:break-word;font-size:13px;line-height:1.45;color:var(--ink)}
.fb-thumb{max-width:100%;max-height:160px;border:1px solid var(--edge);border-radius:4px}
.fb-meta{color:var(--dim);font-size:10.5px}
.fb-note{background:var(--wash);border-radius:6px;padding:7px 9px}
.fb-note.claude{background:color-mix(in oklab, var(--teal) 9%, var(--surface));border:1px solid color-mix(in oklab, var(--teal) 20%, var(--surface))}
.fb-note p{margin:3px 0 0;white-space:pre-wrap;word-break:break-word;line-height:1.45}
.fb-reply{display:flex;gap:6px;align-items:flex-end}
.rei .fb-reply button{padding:6px 10px;font-size:11px}
.fb-item-actions{display:flex;gap:12px;align-items:center;font-size:11px}
.rei .fb-item-actions .danger{color:var(--negative)}
@media (max-width:700px){.fb-drawer{width:100%}.fb-bar .fb-count{display:none}}
/* Color themes (Settings → Appearance, every user) */
.palette-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
@media (max-width:1200px){.palette-list{grid-template-columns:1fr}}
.rei button.palette-opt{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:12px;align-items:center;text-align:left;padding:9px 12px}
.palette-opt .palette-sw{grid-row:span 2;display:flex;border-radius:4px;overflow:hidden;border:1px solid var(--edge)}
.palette-opt .palette-sw i{width:14px;height:28px}
.palette-opt small{color:var(--dim);font-size:11px}
.rei button.palette-opt.on{border-color:var(--brand);box-shadow:inset 0 0 0 1px var(--brand);background:var(--wash)}
/* Requests (all users) */
.rq-page{display:grid;grid-template-columns:minmax(300px,400px) minmax(0,1fr);gap:15px;align-items:start}.rq-page.internal{grid-template-columns:minmax(0,1fr);max-width:1100px}
.rq-form{display:flex;flex-direction:column;gap:12px}.rq-form textarea{width:100%;resize:vertical;font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--edge);border-radius:6px;padding:8px 10px}
.rq-kinds,.rq-views{display:flex;flex-wrap:wrap;gap:6px}
.rei .rq-kinds button,.rei .rq-views button{padding:6px 10px;border-radius:16px;font-size:12px}
.rei .rq-kinds button.on,.rei .rq-views button.on{background:var(--navy);border-color:var(--navy);color:var(--on-strong)}
.rq-views button span{opacity:.7;margin-left:3px}
.rq-note{margin:0}.rq-err{color:var(--negative)}
.rq-list{display:flex;flex-direction:column;gap:10px;margin-top:12px}
.rq-item{border:1px solid var(--edge);border-radius:8px;padding:12px 14px;display:flex;flex-direction:column;gap:6px}
.rq-item h4{margin:0;font-size:14px;font-weight:600}
.rq-head{display:flex;justify-content:space-between;align-items:center;gap:8px}
.rq-kind{font-size:11px;color:var(--dim);letter-spacing:.3px}
.rq-status{font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px;background:var(--soft);color:var(--brand)}
.rq-status.s-new{background:color-mix(in oklab, var(--gold) 22%, var(--surface));color:color-mix(in oklab, var(--warn) 85%, var(--ink))}
.rq-status.s-done{background:color-mix(in oklab, var(--positive) 14%, var(--surface));color:var(--positive)}
.rq-status.s-declined{background:color-mix(in oklab, var(--ink) 8%, var(--surface));color:var(--dim)}
.rq-body{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}
.rq-link{font-size:12px;color:var(--brand);align-self:flex-start;overflow-wrap:anywhere}
.rq-meta{color:var(--dim);font-size:11px}
.rq-reply{border-left:3px solid var(--teal);background:var(--wash);padding:8px 10px;border-radius:0 6px 6px 0;display:grid;grid-template-columns:auto 1fr;column-gap:8px;align-items:baseline}
.rq-reply small{color:var(--dim)}.rq-reply p{grid-column:1/-1;margin:4px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}
.rq-admin{border-top:1px dashed var(--edge);padding-top:8px;display:flex;flex-direction:column;gap:8px}
.rq-admin textarea{width:100%;resize:vertical;font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--edge);border-radius:6px;padding:8px 10px}
.rq-org select{min-width:160px}
.rei button.rq-ask{font-size:12px;margin-right:12px}
@media (max-width:1000px){.rq-page{grid-template-columns:1fr}}
/* Kleinbrook Excel models (Settings) */
.kym-list{display:flex;flex-direction:column;gap:8px}
.kym-row{display:flex;justify-content:space-between;align-items:center;gap:12px;border:1px solid var(--edge);border-radius:8px;padding:10px 12px}
.kym-row small{display:block;color:var(--dim);font-size:11px}.kym-row.off{opacity:.7}
.kym-row small.kym-ok{color:var(--positive)}.kym-row small.kym-missing{color:var(--warn)}
/* Theme switcher (top bar) */
.theme-pick{position:relative;flex:none}
.rei button.theme-btn{display:flex;align-items:center;gap:7px;padding:6px 10px;font-size:12px}
.theme-dots{display:inline-flex;border-radius:3px;overflow:hidden;border:1px solid var(--edge);flex:none}
.theme-dots i{width:7px;height:14px}
.theme-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:1200;width:300px;background:var(--surface);border:1px solid var(--edge);border-radius:8px;box-shadow:0 12px 32px color-mix(in oklab, black 18%, transparent);padding:6px;display:flex;flex-direction:column;gap:2px}
.rei .theme-menu button{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;border:0;background:none;text-align:left;padding:8px 10px;border-radius:6px;width:100%}
.rei .theme-menu button:hover,.rei .theme-menu button:focus-visible{background:var(--soft)}
.rei .theme-menu button[aria-checked=true]{background:var(--wash)}
.theme-menu b{display:block;font-weight:600}.theme-menu small{display:block;color:var(--dim);font-size:11px;line-height:1.35}
.theme-menu .tick{color:var(--brand);font-weight:700;width:12px}
.theme-menu .theme-foot{padding:6px 10px 2px;border-top:1px solid var(--edge);margin-top:4px}
@media (max-width:900px){.theme-name{display:none}}

html,body,#app{height:100%;margin:0}
