/* [next]/internal/font/google/inter_4b298a73.module.css [app-client] (css) */
@font-face {
  font-family: Inter;
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("../media/2c55a0e60120577a-s.0-dom-5bn10r2.woff2") format("woff2");
  unicode-range: U+460-52F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}

@font-face {
  font-family: Inter;
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("../media/9c72aa0f40e4eef8-s.p.1y4-pdgsjb-pw.woff2") format("woff2");
  unicode-range: U+301, U+400-45F, U+490-491, U+4B0-4B1, U+2116;
}

@font-face {
  font-family: Inter;
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("../media/ad66f9afd8947f86-s.3lvt2whj97whp.woff2") format("woff2");
  unicode-range: U+1F??;
}

@font-face {
  font-family: Inter;
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("../media/5476f68d60460930-s.2uwcyprjm3xu3.woff2") format("woff2");
  unicode-range: U+370-377, U+37A-37F, U+384-38A, U+38C, U+38E-3A1, U+3A3-3FF;
}

@font-face {
  font-family: Inter;
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("../media/2bbe8d2671613f1f-s.0k62hbripvv8p.woff2") format("woff2");
  unicode-range: U+102-103, U+110-111, U+128-129, U+168-169, U+1A0-1A1, U+1AF-1B0, U+300-301, U+303-304, U+308-309, U+323, U+329, U+1EA0-1EF9, U+20AB;
}

@font-face {
  font-family: Inter;
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("../media/1bffadaabf893a1e-s.3-6t-g6q0vh0a.woff2") format("woff2");
  unicode-range: U+100-2BA, U+2BD-2C5, U+2C7-2CC, U+2CE-2D7, U+2DD-2FF, U+304, U+308, U+329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: Inter;
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("../media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2") format("woff2");
  unicode-range: U+??, U+131, U+152-153, U+2BB-2BC, U+2C6, U+2DA, U+2DC, U+304, U+308, U+329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: Inter Fallback;
  src: local(Arial);
  ascent-override: 90.44%;
  descent-override: 22.52%;
  line-gap-override: 0.0%;
  size-adjust: 107.12%;
}

.inter_4b298a73-module__TeDFXW__className {
  font-family: Inter, Inter Fallback;
  font-style: normal;
}

.inter_4b298a73-module__TeDFXW__variable {
  --font-sans: "Inter", "Inter Fallback";
}

/* [next]/internal/font/google/jetbrains_mono_c61515bf.module.css [app-client] (css) */
@font-face {
  font-family: JetBrains Mono;
  font-style: normal;
  font-weight: 100 800;
  font-display: swap;
  src: url("../media/13bf9871fe164e7f-s.2f7nqdagzwx2-.woff2") format("woff2");
  unicode-range: U+460-52F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}

@font-face {
  font-family: JetBrains Mono;
  font-style: normal;
  font-weight: 100 800;
  font-display: swap;
  src: url("../media/cc545e633e20c56d-s.p.176arc174-8zp.woff2") format("woff2");
  unicode-range: U+301, U+400-45F, U+490-491, U+4B0-4B1, U+2116;
}

@font-face {
  font-family: JetBrains Mono;
  font-style: normal;
  font-weight: 100 800;
  font-display: swap;
  src: url("../media/71b036adf157cdcf-s.0bp8oijd_gu96.woff2") format("woff2");
  unicode-range: U+370-377, U+37A-37F, U+384-38A, U+38C, U+38E-3A1, U+3A3-3FF;
}

@font-face {
  font-family: JetBrains Mono;
  font-style: normal;
  font-weight: 100 800;
  font-display: swap;
  src: url("../media/89b21bb081cb7469-s.1fby2rem9ngyr.woff2") format("woff2");
  unicode-range: U+102-103, U+110-111, U+128-129, U+168-169, U+1A0-1A1, U+1AF-1B0, U+300-301, U+303-304, U+308-309, U+323, U+329, U+1EA0-1EF9, U+20AB;
}

@font-face {
  font-family: JetBrains Mono;
  font-style: normal;
  font-weight: 100 800;
  font-display: swap;
  src: url("../media/3fe682a82f50d426-s.0vfdmo25voy_0.woff2") format("woff2");
  unicode-range: U+100-2BA, U+2BD-2C5, U+2C7-2CC, U+2CE-2D7, U+2DD-2FF, U+304, U+308, U+329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
  font-family: JetBrains Mono;
  font-style: normal;
  font-weight: 100 800;
  font-display: swap;
  src: url("../media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2") format("woff2");
  unicode-range: U+??, U+131, U+152-153, U+2BB-2BC, U+2C6, U+2DA, U+2DC, U+304, U+308, U+329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: JetBrains Mono Fallback;
  src: local(Arial);
  ascent-override: 75.79%;
  descent-override: 22.29%;
  line-gap-override: 0.0%;
  size-adjust: 134.59%;
}

.jetbrains_mono_c61515bf-module__f-WSdG__className {
  font-family: JetBrains Mono, JetBrains Mono Fallback;
  font-style: normal;
}

.jetbrains_mono_c61515bf-module__f-WSdG__variable {
  --font-mono: "JetBrains Mono", "JetBrains Mono Fallback";
}

/* [project]/node_modules/leaflet/dist/leaflet.css [app-client] (css) */
.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;
  top: 0;
  left: 0;
}

.leaflet-container {
  overflow: hidden;
}

.leaflet-tile, .leaflet-marker-icon, .leaflet-marker-shadow {
  -webkit-user-select: none;
  user-select: none;
  -webkit-user-drag: none;
}

.leaflet-tile::selection {
  background: none;
}

.leaflet-safari .leaflet-tile {
  image-rendering: -webkit-optimize-contrast;
}

.leaflet-safari .leaflet-tile-container {
  -webkit-transform-origin: 0 0;
  width: 1600px;
  height: 1600px;
}

.leaflet-marker-icon, .leaflet-marker-shadow {
  display: block;
}

.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 {
  width: auto;
  padding: 0;
  max-width: none !important;
  max-height: none !important;
}

.leaflet-container img.leaflet-tile {
  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;
  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: #33b5e566;
}

.leaflet-tile {
  filter: inherit;
  visibility: hidden;
}

.leaflet-tile-loaded {
  visibility: inherit;
}

.leaflet-zoom-box {
  box-sizing: border-box;
  z-index: 800;
  width: 0;
  height: 0;
}

.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 {
  behavior: url("#default#VML");
  display: inline-block;
  position: absolute;
}

.leaflet-control {
  z-index: 800;
  pointer-events: visiblePainted;
  pointer-events: auto;
  position: relative;
}

.leaflet-top, .leaflet-bottom {
  z-index: 1000;
  pointer-events: none;
  position: absolute;
}

.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;
}

.leaflet-fade-anim .leaflet-popup {
  opacity: 0;
  transition: opacity .2s linear;
}

.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
  opacity: 1;
}

.leaflet-zoom-animated {
  transform-origin: 0 0;
}

svg.leaflet-zoom-animated {
  will-change: transform;
}

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

.leaflet-zoom-anim .leaflet-tile, .leaflet-pan-anim .leaflet-tile {
  transition: none;
}

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

.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;
}

.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;
  pointer-events: auto;
}

.leaflet-container {
  outline-offset: 1px;
  background: #ddd;
}

.leaflet-container a {
  color: #0078a8;
}

.leaflet-zoom-box {
  background: #ffffff80;
  border: 2px dotted #38f;
}

.leaflet-container {
  font-family: Helvetica Neue, Arial, Helvetica, sans-serif;
  font-size: .75rem;
  line-height: 1.5;
}

.leaflet-bar {
  border-radius: 4px;
  box-shadow: 0 1px 5px #000000a6;
}

.leaflet-bar a {
  text-align: center;
  color: #000;
  background-color: #fff;
  border-bottom: 1px solid #ccc;
  width: 26px;
  height: 26px;
  line-height: 26px;
  text-decoration: none;
  display: block;
}

.leaflet-bar a, .leaflet-control-layers-toggle {
  background-position: 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: none;
  border-bottom-right-radius: 4px;
  border-bottom-left-radius: 4px;
}

.leaflet-bar a.leaflet-disabled {
  cursor: default;
  color: #bbb;
  background-color: #f4f4f4;
}

.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-right-radius: 2px;
  border-bottom-left-radius: 2px;
}

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

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

.leaflet-control-layers {
  background: #fff;
  border-radius: 5px;
  box-shadow: 0 1px 5px #0006;
}

.leaflet-control-layers-toggle {
  background-image: url("../media/layers.3muxcl8sz6330.png");
  width: 36px;
  height: 36px;
}

.leaflet-retina .leaflet-control-layers-toggle {
  background-image: url("../media/layers-2x.23wrxu3xxu9-i.png");
  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 {
  color: #333;
  background: #fff;
  padding: 6px 10px 6px 6px;
}

.leaflet-control-layers-scrollbar {
  padding-right: 5px;
  overflow: hidden scroll;
}

.leaflet-control-layers-selector {
  margin-top: 2px;
  position: relative;
  top: 1px;
}

.leaflet-control-layers label {
  font-size: 1.08333em;
  display: block;
}

.leaflet-control-layers-separator {
  border-top: 1px solid #ddd;
  height: 0;
  margin: 5px -10px 5px -6px;
}

.leaflet-default-icon-path {
  background-image: url("../media/marker-icon.1le94j_pe_ih1.png");
}

.leaflet-container .leaflet-control-attribution {
  background: #fffc;
  margin: 0;
}

.leaflet-control-attribution, .leaflet-control-scale-line {
  color: #333;
  padding: 0 5px;
  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 {
  width: 1em;
  height: .6669em;
  vertical-align: baseline !important;
  display: inline !important;
}

.leaflet-left .leaflet-control-scale {
  margin-left: 5px;
}

.leaflet-bottom .leaflet-control-scale {
  margin-bottom: 5px;
}

.leaflet-control-scale-line {
  white-space: nowrap;
  box-sizing: border-box;
  text-shadow: 1px 1px #fff;
  background: #fffc;
  border: 2px solid #777;
  border-top: none;
  padding: 2px 5px 1px;
  line-height: 1.1;
}

.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 {
  background-clip: padding-box;
  border: 2px solid #0003;
}

.leaflet-popup {
  text-align: center;
  margin-bottom: 20px;
  position: absolute;
}

.leaflet-popup-content-wrapper {
  text-align: left;
  border-radius: 12px;
  padding: 1px;
}

.leaflet-popup-content {
  min-height: 1px;
  margin: 13px 24px 13px 20px;
  font-size: 1.08333em;
  line-height: 1.3;
}

.leaflet-popup-content p {
  margin: 1.3em 0;
}

.leaflet-popup-tip-container {
  pointer-events: none;
  width: 40px;
  height: 20px;
  margin-top: -1px;
  margin-left: -20px;
  position: absolute;
  left: 50%;
  overflow: hidden;
}

.leaflet-popup-tip {
  pointer-events: auto;
  width: 17px;
  height: 17px;
  margin: -10px auto 0;
  padding: 1px;
  transform: rotate(45deg);
}

.leaflet-popup-content-wrapper, .leaflet-popup-tip {
  color: #333;
  background: #fff;
  box-shadow: 0 3px 14px #0006;
}

.leaflet-container a.leaflet-popup-close-button {
  text-align: center;
  color: #757575;
  background: none;
  border: none;
  width: 24px;
  height: 24px;
  font: 16px / 24px Tahoma, Verdana, sans-serif;
  text-decoration: none;
  position: absolute;
  top: 0;
  right: 0;
}

.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 {
  -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
  width: 24px;
  filter: progid:DXImageTransform.Microsoft.Matrix(M11=.707107, M12=.707107, M21=-.707107, M22=.707107);
  margin: 0 auto;
}

.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;
}

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

.leaflet-tooltip {
  color: #222;
  white-space: nowrap;
  -webkit-user-select: none;
  user-select: none;
  pointer-events: none;
  background-color: #fff;
  border: 1px solid #fff;
  border-radius: 3px;
  padding: 6px;
  position: absolute;
  box-shadow: 0 1px 3px #0006;
}

.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 {
  pointer-events: none;
  content: "";
  background: none;
  border: 6px solid #0000;
  position: absolute;
}

.leaflet-tooltip-bottom {
  margin-top: 6px;
}

.leaflet-tooltip-top {
  margin-top: -6px;
}

.leaflet-tooltip-bottom:before, .leaflet-tooltip-top:before {
  margin-left: -6px;
  left: 50%;
}

.leaflet-tooltip-top:before {
  border-top-color: #fff;
  margin-bottom: -12px;
  bottom: 0;
}

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

.leaflet-tooltip-left {
  margin-left: -6px;
}

.leaflet-tooltip-right {
  margin-left: 6px;
}

.leaflet-tooltip-left:before, .leaflet-tooltip-right:before {
  margin-top: -6px;
  top: 50%;
}

.leaflet-tooltip-left:before {
  border-left-color: #fff;
  margin-right: -12px;
  right: 0;
}

.leaflet-tooltip-right:before {
  border-right-color: #fff;
  margin-left: -12px;
  left: 0;
}

@media print {
  .leaflet-control {
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
}

/* [project]/app/styles/base.css [app-client] (css) */
:root {
  --paper: #f0f3f7;
  --ink: #1a2332;
  --muted: #5c6b7a;
  --hair: #cbd5df;
  --plot: #2b6cb0;
  --plot-soft: #e8f0f8;
  --build: #c4793a;
  --build-edge: #7a4418;
  --base: #6d8a9f;
  --panel: #fff;
  --left-w: 260px;
  --r-sm: 6px;
  --r-md: 10px;
  --r-lg: 14px;
  --sh-card: 0 1px 3px #1428460f,0 6px 16px #14284614;
  --sh-popup: 0 4px 12px #1428461a,0 12px 28px #14284624;
  --sh-dialog: 0 8px 20px #1428461f,0 16px 44px #14284633;
  --ease: .15s ease;
}

* {
  box-sizing: border-box;
}

html, body {
  height: 100%;
  margin: 0;
  overflow-x: hidden;
}

body {
  background: var(--paper);
  color: var(--ink);
  font-family: var(--font-sans, Inter),-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  -webkit-font-smoothing: antialiased;
}

.mono {
  font-family: var(--font-mono, "JetBrains Mono"),ui-monospace,"SF Mono",Menlo,Consolas,monospace;
}

h2 {
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--muted);
  margin: 0 0 12px;
  font-size: 12px;
  font-weight: 600;
}

svg {
  touch-action: none;
  cursor: crosshair;
  width: 100%;
  height: 100%;
  display: block;
}

button {
  font: inherit;
  border: 1px solid var(--hair);
  background: var(--panel);
  color: var(--ink);
  border-radius: var(--r-sm);
  cursor: pointer;
  transition: border-color var(--ease),color var(--ease),background var(--ease),box-shadow var(--ease);
  padding: 5px 11px;
  font-size: 12.5px;
}

button:hover {
  border-color: var(--plot);
  color: var(--plot);
}

button:active {
  transform: translateY(1px);
}

button.ghost {
  color: var(--muted);
}

button.primary {
  border-color: var(--plot);
  color: var(--plot);
  font-weight: 600;
}

button.primary.amber {
  border-color: var(--build);
  color: var(--build);
}

button.newb {
  border-color: var(--build);
  color: var(--build);
  font-weight: 600;
}

button.newb.on {
  background: var(--build);
  color: #fff;
  animation: .4s 2 newb-pulse;
  box-shadow: inset 0 0 6px #c4793a40;
}

@keyframes newb-pulse {
  0%, 100% {
    box-shadow: inset 0 0 6px #c4793a40;
  }

  50% {
    box-shadow: inset 0 0 12px #c4793a66, 0 0 8px #c4793a26;
  }
}

input[type="range"] {
  width: 100%;
  accent-color: var(--build);
  appearance: none;
  background: var(--hair);
  border-radius: 2px;
  outline: none;
  height: 4px;
}

input[type="range"]::-webkit-slider-thumb {
  -webkit-appearance: none;
  background: var(--build);
  border: 2px solid var(--panel);
  cursor: pointer;
  width: 16px;
  height: 16px;
  transition: box-shadow var(--ease),transform var(--ease);
  border-radius: 50%;
  box-shadow: 0 1px 4px #1428462e;
}

input[type="range"]::-webkit-slider-thumb:hover {
  box-shadow: 0 0 0 4px #c4793a2e, 0 1px 4px #1428462e;
}

input[type="range"]::-webkit-slider-thumb:active {
  transform: scale(.9);
}

input[type="range"]::-moz-range-thumb {
  background: var(--build);
  border: 2px solid var(--panel);
  cursor: pointer;
  border-radius: 50%;
  width: 14px;
  height: 14px;
  box-shadow: 0 1px 4px #1428462e;
}

input[type="range"]::-moz-range-track {
  background: var(--hair);
  border: none;
  border-radius: 2px;
  height: 4px;
}

.sidebar::-webkit-scrollbar {
  width: 6px;
}

.ird-tree::-webkit-scrollbar {
  width: 6px;
}

.upr-list::-webkit-scrollbar {
  width: 6px;
}

.ird-out::-webkit-scrollbar {
  width: 6px;
}

.upr-body::-webkit-scrollbar {
  width: 6px;
}

.sidebar::-webkit-scrollbar-track {
  background: none;
}

.ird-tree::-webkit-scrollbar-track {
  background: none;
}

.upr-list::-webkit-scrollbar-track {
  background: none;
}

.ird-out::-webkit-scrollbar-track {
  background: none;
}

.upr-body::-webkit-scrollbar-track {
  background: none;
}

.sidebar::-webkit-scrollbar-thumb {
  background: var(--hair);
  border-radius: 3px;
}

.ird-tree::-webkit-scrollbar-thumb {
  background: var(--hair);
  border-radius: 3px;
}

.upr-list::-webkit-scrollbar-thumb {
  background: var(--hair);
  border-radius: 3px;
}

.ird-out::-webkit-scrollbar-thumb {
  background: var(--hair);
  border-radius: 3px;
}

.upr-body::-webkit-scrollbar-thumb {
  background: var(--hair);
  border-radius: 3px;
}

.sidebar::-webkit-scrollbar-thumb:hover {
  background: var(--muted);
}

.ird-tree::-webkit-scrollbar-thumb:hover {
  background: var(--muted);
}

.upr-list::-webkit-scrollbar-thumb:hover {
  background: var(--muted);
}

.ird-out::-webkit-scrollbar-thumb:hover {
  background: var(--muted);
}

.upr-body::-webkit-scrollbar-thumb:hover {
  background: var(--muted);
}

.sidebar, .ird-tree, .upr-list, .ird-out, .upr-body {
  scrollbar-width: thin;
  scrollbar-color: var(--hair) transparent;
}

:focus-visible {
  outline: 2px solid var(--plot);
  outline-offset: 2px;
}

button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible {
  outline: 2px solid var(--plot);
  outline-offset: 1px;
}

@media (pointer: coarse) {
  .navbtn {
    min-width: 36px;
    min-height: 36px;
  }

  button {
    min-height: 36px;
  }

  .ird-row, .upr-row {
    min-height: 40px;
  }

  .lbtn, .fsbtn {
    width: 36px;
    height: 36px;
  }

  input[type="range"]::-webkit-slider-thumb {
    width: 20px;
    height: 20px;
  }

  input[type="range"]::-moz-range-thumb {
    width: 18px;
    height: 18px;
  }
}

@media (max-width: 1024px) {
  :root {
    --left-w: 220px;
  }
}

@media (max-width: 880px) {
  :root {
    --left-w: 200px;
  }
}

@media (max-width: 640px) {
  :root {
    --left-w: 100%;
  }
}

/* [project]/app/styles/layout.css [app-client] (css) */
.wrap {
  flex-direction: column;
  height: 100vh;
  display: flex;
  overflow-x: hidden;
}

header {
  border-bottom: none;
  flex-wrap: nowrap;
  align-items: center;
  gap: 8px;
  padding: 5px 18px;
  display: flex;
  position: relative;
  overflow: auto visible;
}

header:after {
  content: "";
  background: linear-gradient(90deg,var(--hair) 0%,var(--plot) 30%,var(--build) 70%,var(--hair) 100%);
  opacity: .5;
  height: 2px;
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
}

main {
  grid-template-columns: var(--left-w) 1fr;
  flex: 1;
  gap: 0;
  min-width: 0;
  min-height: 0;
  display: grid;
  position: relative;
  overflow: hidden;
}

.stage-stub {
  z-index: 50;
  background: #f0f4f8ed;
  justify-content: center;
  align-items: center;
  display: flex;
  position: absolute;
  inset: 0;
}

.stub-card {
  text-align: center;
  border: 1px solid var(--hair);
  border-radius: var(--r-lg);
  background: var(--panel);
  box-shadow: var(--sh-card);
  padding: 22px 30px;
  position: relative;
  overflow: hidden;
}

.stub-card:before {
  content: "";
  background: linear-gradient(90deg,var(--plot),var(--build));
  height: 3px;
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
}

.stub-name {
  color: var(--ink);
  font-size: 18px;
  font-weight: 650;
}

.stub-note {
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .08em;
  margin-top: 6px;
  font-size: 12px;
}

footer {
  color: var(--muted);
  border-top: none;
  justify-content: space-between;
  align-items: center;
  padding: 5px 24px;
  font-size: 11px;
  line-height: 1.3;
  display: flex;
  position: relative;
}

footer:before {
  content: "";
  background: linear-gradient(90deg,var(--hair) 0%,var(--plot) 30%,var(--build) 70%,var(--hair) 100%);
  opacity: .35;
  height: 2px;
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
}

@media (max-width: 880px) {
  .wrap {
    height: auto;
    min-height: 100vh;
  }

  main {
    grid-template-columns: 1fr;
  }

  header {
    gap: 5px;
  }

  footer {
    flex-wrap: wrap;
    gap: 4px;
    padding: 5px 16px;
  }
}

@media (max-width: 640px) {
  header {
    gap: 4px;
    padding: 4px 10px;
  }

  footer {
    text-align: center;
    flex-direction: column;
    align-items: center;
    padding: 4px 10px;
    font-size: 10px;
  }
}

@media (max-width: 420px) {
  header {
    gap: 3px;
    padding: 3px 6px;
  }

  footer span {
    font-size: 9px;
  }
}

/* [project]/app/styles/nav.css [app-client] (css) */
.eyebrow {
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--build);
  border-radius: var(--r-sm);
  background: #c4793a1a;
  border: 1px solid #c4793a40;
  flex: none;
  padding: 2px 8px;
  font-size: 10px;
  font-weight: 600;
}

h1 {
  letter-spacing: -.01em;
  margin: 0;
  font-size: 16px;
  font-weight: 650;
}

header .sub {
  color: var(--muted);
  font-size: 12px;
}

.navbtn {
  font: inherit;
  border-radius: var(--r-sm);
  border: 1px solid var(--hair);
  background: var(--panel);
  color: var(--ink);
  cursor: pointer;
  white-space: nowrap;
  transition: border-color var(--ease),color var(--ease),background var(--ease);
  flex: none;
  padding: 3px 9px;
  font-size: 12px;
  line-height: 1.15;
}

.navbtn:hover {
  border-color: var(--plot);
}

.navbtn.mgmt {
  color: #1b4a7a;
  background: #d6ebff;
  border-color: #7fb2e5;
}

.navbtn.mgmt.active {
  color: #0d2f52;
  background: #7fb2e5;
  border-color: #5a95cf;
  font-weight: 600;
}

.navbtn.stage {
  color: #2b5e2b;
  background: #ddf3dd;
  border-color: #8fcf8f;
}

.navbtn.stage.active {
  color: #173f17;
  background: #8fcf8f;
  border-color: #5aa85a;
  font-weight: 600;
}

.navbtn.sub {
  background: var(--panel);
  border-color: var(--hair);
  color: var(--ink);
}

.navbtn.sub.active {
  background: var(--plot);
  border-color: var(--plot);
  color: #fff;
  font-weight: 600;
  position: relative;
}

.navbtn.sub.active:after {
  content: "";
  background: var(--plot);
  border-radius: 1px;
  height: 2px;
  position: absolute;
  bottom: -5px;
  left: 25%;
  right: 25%;
}

.navbtn.core {
  color: #4a4385;
  background: #e9e7f5;
  border-color: #b7afdd;
}

.navbtn.core.active {
  color: #302a60;
  background: #b7afdd;
  border-color: #948ac2;
  font-weight: 600;
}

.navsep {
  background: var(--hair);
  flex: none;
  align-self: stretch;
  width: 1px;
  margin: 2px 3px;
}

.navspacer {
  flex: auto;
  min-width: 8px;
}

.stages, .substages {
  flex: none;
  gap: 5px;
  display: flex;
}

.nav-sub {
  color: var(--muted);
  white-space: nowrap;
  flex: none;
  margin-left: 14px;
  font-size: 11px;
}

@media (max-width: 880px) {
  .navbtn {
    padding: 3px 7px;
    font-size: 11px;
  }

  .eyebrow {
    padding: 2px 6px;
    font-size: 9px;
  }
}

@media (max-width: 640px) {
  .navbtn {
    padding: 3px 6px;
    font-size: 10.5px;
  }

  .eyebrow {
    letter-spacing: .1em;
    padding: 1px 5px;
    font-size: 8px;
  }

  .navsep {
    margin: 2px 1px;
  }

  .navspacer {
    min-width: 4px;
  }
}

@media (max-width: 420px) {
  .navbtn {
    padding: 2px 5px;
    font-size: 10px;
  }

  .eyebrow {
    display: none;
  }

  .stages, .substages {
    gap: 3px;
  }
}

/* [project]/app/styles/sidebar.css [app-client] (css) */
.sidebar {
  border-right: 1px solid var(--hair);
  flex-direction: column;
  min-width: 0;
  padding: 12px 14px;
  display: flex;
  overflow-y: auto;
}

.par-head {
  text-align: left;
  letter-spacing: .12em;
  text-transform: uppercase;
  width: 100%;
  color: var(--muted);
  background: var(--panel);
  border: 1px solid var(--hair);
  border-radius: var(--r-sm);
  cursor: pointer;
  margin-bottom: 8px;
  padding: 8px 10px;
  font-size: 12px;
  font-weight: 700;
}

.par-head:hover {
  border-color: var(--plot);
  color: var(--plot);
}

.par-head.off {
  opacity: .7;
}

.par-body.hidden {
  display: none;
}

.pgroup {
  margin-bottom: 8px;
}

.pgh {
  text-align: left;
  letter-spacing: .05em;
  text-transform: uppercase;
  width: 100%;
  color: var(--muted);
  border: 1px solid var(--hair);
  cursor: pointer;
  background: #f4f7fa;
  border-radius: 5px;
  justify-content: space-between;
  align-items: center;
  gap: 6px;
  padding: 7px 9px;
  font-size: 11px;
  font-weight: 600;
  display: flex;
}

.pgh:hover {
  border-color: var(--plot);
  color: var(--plot);
}

.pgh:not(.off) {
  border-left: 3px solid var(--plot);
}

.pgh:after {
  content: "▾";
  opacity: .55;
  font-size: 9px;
}

.pgh.off:after {
  content: "▸";
}

.pgb {
  padding: 8px 1px 2px;
}

.pgb.hidden {
  display: none;
}

.navlist {
  flex-direction: column;
  gap: 4px;
  margin-bottom: 6px;
  display: flex;
}

.navlist button {
  text-align: left;
  border: 1px solid var(--hair);
  border-radius: var(--r-sm);
  background: var(--panel);
  transition: border-color var(--ease),color var(--ease),box-shadow var(--ease);
  padding: 6px 10px;
  font-size: 12.5px;
  font-weight: 500;
}

.navlist button:hover {
  border-color: var(--plot);
  color: var(--plot);
  box-shadow: 0 1px 3px #1428460f;
}

.navlist button.on {
  background: var(--plot);
  color: #fff;
  border-color: var(--plot);
  border-left: 3px solid #fff;
  box-shadow: inset 0 0 6px #2b6cb033;
}

.navlist .plot-rename {
  border: 1px solid var(--plot);
  border-radius: var(--r-sm);
  background: var(--panel);
  color: var(--ink);
  box-sizing: border-box;
  outline: none;
  width: 100%;
  padding: 6px 9px;
  font-size: 12.5px;
  font-weight: 500;
}

.navlist .empty {
  color: var(--muted);
  padding: 3px 2px;
  font-size: 11.5px;
}

.confirm-ov {
  z-index: 1000;
  background: #141e2d59;
  justify-content: center;
  align-items: center;
  display: flex;
  position: fixed;
  inset: 0;
}

.confirm-box {
  background: var(--panel);
  border: 1px solid var(--hair);
  border-radius: var(--r-md);
  box-shadow: var(--sh-dialog);
  max-width: 340px;
  padding: 18px 20px;
}

.confirm-msg {
  color: var(--ink);
  margin-bottom: 16px;
  font-size: 14px;
  line-height: 1.45;
}

.confirm-acts {
  justify-content: flex-end;
  gap: 10px;
  display: flex;
}

.confirm-yes {
  color: #b23b3b;
  background: #fbeeee;
  border-color: #b23b3b;
  font-weight: 600;
}

.confirm-yes:hover {
  color: #fff;
  background: #b23b3b;
  border-color: #b23b3b;
}

.secbtns-side {
  margin-bottom: 6px;
  flex-wrap: wrap !important;
  justify-content: flex-start !important;
  overflow: visible !important;
}

@media (max-width: 880px) {
  .sidebar {
    border-right: none;
    border-bottom: 1px solid var(--hair);
    overflow: visible;
  }
}

@media (max-width: 640px) {
  .sidebar {
    padding: 10px;
  }

  .confirm-box {
    max-width: calc(100vw - 32px);
    margin: 0 16px;
  }
}

@media (max-width: 420px) {
  .sidebar {
    padding: 8px 6px;
  }
}

/* [project]/app/styles/genplan.css [app-client] (css) */
.stage {
  flex-direction: row;
  min-width: 0;
  min-height: 0;
  display: flex;
  overflow: hidden;
}

.cell {
  flex-direction: column;
  min-width: 0;
  min-height: 0;
  padding: 8px 18px;
  display: flex;
}

.cell.plan {
  border-right: 1px solid var(--hair);
  flex: 7;
}

.cell.view {
  flex: 1.9;
  grid-template-rows: 1.19fr 1.81fr;
  grid-template-columns: minmax(0, 1fr);
  min-width: 0;
  min-height: 0;
  padding: 8px 10px;
  display: grid;
  overflow: hidden;
}

.mstrip {
  border-top: 1px solid var(--hair);
  flex-direction: column;
  gap: 8px;
  min-height: 0;
  margin-top: 10px;
  padding-top: 10px;
  display: flex;
  overflow: auto;
}

.mitem {
  flex-direction: column;
  gap: 1px;
  min-width: 0;
  display: flex;
}

.mitem .ml {
  letter-spacing: .02em;
  text-transform: uppercase;
  color: var(--muted);
  font-size: 10px;
  line-height: 1.2;
}

.mitem .mv {
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
  font-size: 15px;
  font-weight: 650;
}

.mitem .mv .unit {
  color: var(--muted);
  margin-left: 3px;
  font-size: 10px;
  font-weight: 400;
}

.cmp-head {
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  display: flex;
}

.cmp-head .grp {
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .08em;
  font-size: 10px;
}

.cmp-sel {
  color: var(--muted);
  align-items: center;
  font-size: 11px;
  display: flex;
}

.cmp-sel select {
  border: 1px solid var(--hair);
  background: var(--panel);
  color: var(--ink);
  cursor: pointer;
  border-radius: 5px;
  padding: 3px 7px;
  font-size: 12px;
}

table.cmp {
  border-collapse: collapse;
  font-variant-numeric: tabular-nums;
  width: 100%;
}

table.cmp td {
  white-space: nowrap;
  border-bottom: 1px solid #edf1f5;
  padding: 2px 4px;
  font-size: 10.5px;
}

table.cmp td:first-child {
  white-space: normal;
}

table.cmp tr.head td {
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .02em;
  border-bottom: 1px solid var(--hair);
  font-size: 9px;
  font-weight: 600;
}

table.cmp td:nth-child(2), table.cmp td:nth-child(3), table.cmp td:nth-child(4) {
  text-align: right;
}

table.cmp tr.headline td {
  font-size: 12px;
  font-weight: 700;
}

table.cmp tr.headline td:first-child {
  border-left: 3px solid var(--plot);
  padding-left: 6px;
}

table.cmp tr.sub td:first-child {
  color: var(--muted);
  padding-left: 12px;
  font-size: 10.5px;
  font-weight: 400;
}

table.cmp .ok {
  color: #2e7d32;
  background: #2e7d3214;
  border-radius: 3px;
  padding: 1px 4px;
}

table.cmp .bad {
  color: #b23b3b;
  background: #b23b3b14;
  border-radius: 3px;
  padding: 1px 4px;
}

table.cmp .na {
  color: var(--hair);
}

.cmp-info {
  color: var(--muted);
  font-size: 11px;
}

.canvas-wrap {
  flex: 1;
  min-height: 0;
  position: relative;
}

.canvas-wrap-3d {
  width: 100%;
  min-width: 0;
  max-width: 100%;
  min-height: 0;
  position: relative;
  overflow: hidden;
}

.canvas-wrap-3d > div:not(.compass):not(.measread) {
  width: 100% !important;
  height: 100% !important;
}

.canvas-wrap-3d canvas {
  width: 100% !important;
  height: 100% !important;
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
}

.vhead {
  flex-wrap: wrap;
  align-items: baseline;
  gap: 16px;
  margin-bottom: 8px;
  display: flex;
}

.vhead h2 {
  margin: 0;
}

.fsbtn {
  z-index: 3;
  border: 1px solid var(--hair);
  border-radius: var(--r-sm);
  width: 30px;
  height: 30px;
  color: var(--muted);
  background: #ffffffd9;
  justify-content: center;
  align-items: center;
  padding: 0;
  font-size: 16px;
  line-height: 1;
  display: flex;
  position: absolute;
  top: 8px;
  right: 8px;
}

.fsbtn:hover {
  border-color: var(--plot);
  color: var(--plot);
  cursor: pointer;
}

.meas-btns {
  z-index: 3;
  flex-direction: column;
  gap: 4px;
  display: flex;
  position: absolute;
  top: 8px;
  right: 8px;
}

.meas-btns .fsbtn {
  position: static;
}

.fsbtn svg {
  display: block;
}

.fsbtn.on {
  border-color: var(--plot);
  color: var(--plot);
  background: #eaf1f9;
}

.fsbtn.act {
  border-color: var(--plot);
  color: var(--plot);
}

.meas-dist, .meas-area {
  display: none;
}

.canvas-wrap-3d.fs .meas-dist, .canvas-wrap-3d.fs .meas-area {
  display: flex;
}

.measread {
  z-index: 3;
  border: 1px solid var(--hair);
  border-radius: var(--r-sm);
  color: var(--ink);
  pointer-events: none;
  white-space: nowrap;
  text-overflow: ellipsis;
  background: #ffffffeb;
  max-width: 94%;
  padding: 4px 11px;
  font-size: 11px;
  font-weight: 600;
  position: absolute;
  bottom: 8px;
  left: 50%;
  overflow: hidden;
  transform: translateX(-50%);
}

.canvas-wrap-3d:fullscreen {
  background: linear-gradient(#f7fafc, #e6ecf2);
  padding: 0;
}

.canvas-wrap-3d:-webkit-full-screen {
  background: linear-gradient(#f7fafc, #e6ecf2);
}

.planhead {
  flex-wrap: nowrap;
  justify-content: space-between;
  align-items: center;
  gap: 14px;
  margin-bottom: 6px;
  display: flex;
}

.ph-left {
  flex-wrap: wrap;
  flex: none;
  align-items: center;
  gap: 8px;
  display: flex;
}

.ph-right {
  flex: auto;
  justify-content: flex-end;
  align-items: center;
  gap: 6px;
  min-width: 0;
  display: flex;
}

.plan-foot {
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin-top: 5px;
  display: flex;
}

.plan-foot .hint, .planhead h2 {
  margin: 0;
}

.seg {
  border: 1px solid var(--hair);
  border-radius: var(--r-sm);
  display: inline-flex;
  overflow: hidden;
}

.seg button {
  background: var(--panel);
  border: none;
  border-radius: 0;
  padding: 6px 14px;
  font-size: 12.5px;
}

.seg button.on {
  background: var(--plot);
  color: #fff;
}

.secbtns {
  flex-wrap: nowrap;
  justify-content: flex-end;
  align-items: center;
  gap: 5px;
  display: flex;
  overflow-x: auto;
}

.secbtns .grp {
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .08em;
  flex: none;
  margin-right: 3px;
  font-size: 10px;
}

.secbtns button {
  text-align: center;
  border-radius: 5px;
  flex: none;
  min-width: 28px;
  padding: 5px 9px;
  font-size: 12px;
  font-weight: 600;
}

.secbtns button:hover {
  border-color: var(--build);
  color: var(--build);
}

.secbtns button.on {
  background: var(--build);
  color: #fff;
  border-color: var(--build);
}

.bldbtns {
  flex-wrap: wrap;
  gap: 6px;
  display: flex;
}

.bldbtns button {
  border-radius: 5px;
  padding: 5px 10px;
  font-size: 12px;
  font-weight: 600;
}

.bldbtns button:hover {
  border-color: var(--plot);
  color: var(--plot);
}

.bldbtns button.on {
  background: var(--plot);
  color: #fff;
  border-color: var(--plot);
}

.hint {
  color: var(--muted);
  min-height: 0;
  margin: 0 0 5px;
  font-size: 12px;
  line-height: 1.35;
}

.svgbox {
  background: var(--panel);
  border: 1px solid var(--hair);
  border-radius: var(--r-sm);
  flex: 1;
  min-height: 0;
  position: relative;
  overflow: hidden;
}

.lmap {
  z-index: 0;
  background: none;
  position: absolute;
  inset: 0;
}

.svgbox > svg {
  z-index: 1;
  position: relative;
}

.svgbox.hasmap g:first-child line {
  stroke: #9fb2c4;
  stroke-opacity: .35;
}

.bgbar {
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-bottom: 5px;
  display: flex;
  position: relative;
}

.bgbar #districtSel {
  border: 1px solid var(--hair);
  background: var(--panel);
  color: var(--ink);
  cursor: pointer;
  border-radius: 5px;
  max-width: 230px;
  padding: 5px 9px;
  font-size: 12.5px;
}

.bgbar .grp {
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .08em;
  flex: none;
  font-size: 10px;
}

.bgbar .opac {
  color: var(--muted);
  align-items: center;
  gap: 6px;
  font-size: 11px;
  display: flex;
}

.bgbar .opac input {
  width: 70px;
}

.bgbar #bgHint {
  color: var(--plot);
  font-size: 11.5px;
}

.lbtn {
  background: var(--panel);
  border: 1px solid var(--hair);
  border-radius: var(--r-sm);
  width: 30px;
  height: 30px;
  color: var(--muted);
  cursor: pointer;
  justify-content: center;
  align-items: center;
  padding: 0;
  display: flex;
}

.lbtn:hover, .lbtn.on {
  border-color: var(--plot);
  color: var(--plot);
}

.layers-pop {
  z-index: 20;
  background: var(--panel);
  border: 1px solid var(--hair);
  border-radius: var(--r-md);
  box-shadow: var(--sh-popup);
  flex-direction: column;
  gap: 9px;
  width: 196px;
  max-height: calc(100vh - 124px);
  padding: 10px 12px;
  display: flex;
  position: absolute;
  top: 114px;
  right: 8px;
  overflow: hidden auto;
}

.layers-pop select, .layers-pop .lay-sub input[type="range"] {
  box-sizing: border-box;
  width: 100%;
  max-width: 100%;
}

.layers-pop .opac {
  flex-direction: column;
  align-items: flex-start;
  gap: 3px;
  width: 100%;
  display: flex;
}

.layers-pop .opac input {
  width: 100%;
}

.lay-row {
  cursor: pointer;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  display: flex;
}

.lay-row b {
  font-weight: 600;
}

.lay-row input {
  cursor: pointer;
  width: 15px;
  height: 15px;
}

.lay-sub {
  color: var(--muted);
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
  padding-left: 23px;
  font-size: 11.5px;
  display: flex;
}

.lay-sub.muted {
  opacity: .85;
  font-style: italic;
}

.lay-sep {
  background: var(--hair);
  height: 1px;
  margin: 2px 0;
}

.lay-head {
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .07em;
  flex-direction: column;
  align-items: flex-start;
  gap: 3px;
  font-size: 10px;
  font-weight: 700;
  display: flex;
}

.lay-head .lay-note {
  text-transform: none;
  letter-spacing: 0;
  color: var(--plot);
  font-size: 9.5px;
  font-weight: 400;
}

.lay-head .lay-note.warn {
  color: #b23b3b;
}

.lay-mini {
  color: var(--muted);
  padding-left: 2px;
  font-size: 10px;
}

.lay-row2 {
  cursor: pointer;
  align-items: center;
  gap: 7px;
  padding-left: 12px;
  font-size: 12px;
  display: flex;
}

.lay-row2 input {
  cursor: pointer;
  width: 14px;
  height: 14px;
}

.scalebar {
  z-index: 3;
  pointer-events: none;
  border: 1px solid var(--hair);
  text-align: center;
  background: #ffffffb8;
  border-radius: 4px;
  padding: 3px 6px 4px;
  position: absolute;
  bottom: 8px;
  right: 8px;
}

.scalebar .sb-lab {
  color: var(--ink);
  font-size: 10px;
  font-weight: 600;
  line-height: 1.1;
  font-family: var(--font-sans, Inter),-apple-system,Arial,sans-serif;
  margin-bottom: 2px;
  display: block;
}

.scalebar .sb-bar {
  border: 1.5px solid var(--ink);
  box-sizing: border-box;
  border-top: none;
  min-width: 20px;
  height: 5px;
  margin: 0 auto;
  display: block;
}

.compass {
  pointer-events: none;
  z-index: 3;
  width: 52px;
  height: 52px;
  position: absolute;
  top: 8px;
  left: 8px;
}

.compass svg {
  width: 100%;
  height: 100%;
}

.compass text {
  text-anchor: middle;
  dominant-baseline: central;
  font-size: 8px;
  font-weight: 700;
  font-family: var(--font-sans, Inter),-apple-system,Arial,sans-serif;
}

.acts {
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 6px;
  display: flex;
}

.view-3d {
  border: 1px solid var(--hair);
  border-radius: var(--r-sm);
  touch-action: none;
  cursor: grab;
  background: linear-gradient(#f7fafc, #e6ecf2);
  width: 100%;
  height: 100%;
  display: block;
  box-shadow: inset 0 2px 8px #14284614, inset 0 0 2px #1428460a;
}

.legend {
  color: var(--muted);
  flex-wrap: wrap;
  gap: 16px;
  font-size: 12px;
  display: flex;
}

.legend i {
  vertical-align: middle;
  border-radius: 2px;
  width: 14px;
  height: 3px;
  margin-right: 6px;
  display: inline-block;
}

.controls {
  gap: 13px;
  margin-top: 6px;
  display: grid;
}

.ctl label {
  justify-content: space-between;
  align-items: baseline;
  gap: 10px;
  margin-bottom: 5px;
  font-size: 13px;
  display: flex;
}

.ctl label b {
  font-weight: 600;
}

.ctl .val {
  font-variant-numeric: tabular-nums;
  color: var(--plot);
  white-space: nowrap;
}

.dseg {
  gap: 6px;
  margin-top: 4px;
  display: flex;
}

.dseg button {
  flex: 1;
  padding: 6px 0;
  font-size: 12.5px;
}

.dseg button.on {
  border-color: var(--build);
  color: var(--build);
  font-weight: 600;
}

.addbtns {
  gap: 8px;
  margin: 14px 0 2px;
  display: flex;
}

.addbtns button {
  border-style: dashed;
  flex: 1;
}

.addbtns button:hover {
  border-style: solid;
}

.delbtn {
  color: #b23b3b;
  border-color: #d98a8a;
  width: 100%;
  margin-top: 10px;
}

.delbtn:hover {
  color: #b23b3b;
  background: #fbeeee;
  border-color: #b23b3b;
}

.subhead {
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--muted);
  margin: 16px 0 2px;
  font-size: 11px;
  font-weight: 600;
}

.metrics {
  border-top: 1px solid var(--hair);
  margin-top: auto;
  padding-top: 14px;
}

.metrics table {
  border-collapse: collapse;
  width: 100%;
}

.metrics td {
  border-bottom: 1px solid #edf1f5;
  padding: 6px 0;
  font-size: 13.5px;
}

.metrics td:last-child {
  text-align: right;
  font-variant-numeric: tabular-nums;
  font-weight: 600;
}

.metrics tr.head td {
  color: var(--muted);
  letter-spacing: .1em;
  text-transform: uppercase;
  border-bottom: none;
  padding-bottom: 2px;
  font-size: 11px;
}

.metrics .unit {
  color: var(--muted);
  margin-left: 3px;
  font-size: 11px;
  font-weight: 400;
}

.editnote {
  color: var(--build);
  min-height: 14px;
  margin-top: 8px;
  font-size: 12px;
  line-height: 1.4;
}

.warn {
  color: #b23b3b;
  min-height: 16px;
  margin-top: 8px;
  font-size: 12.5px;
}

@media (max-width: 1024px) {
  .cell.view {
    grid-template-rows: 1fr 1fr;
  }
}

@media (max-width: 880px) {
  .stage {
    flex-direction: column;
  }

  .cell.plan {
    border-right: none;
    border-bottom: 1px solid var(--hair);
  }

  .cell.view {
    flex-direction: column;
    display: flex;
  }

  .svgbox {
    flex: none;
    height: 300px;
  }

  .canvas-wrap, .canvas-wrap-3d {
    flex: none;
    height: 260px;
  }

  .mstrip {
    grid-template-columns: repeat(2, 1fr);
    display: grid;
  }

  .planhead, .bgbar {
    flex-wrap: wrap;
  }

  .layers-pop {
    top: auto;
    bottom: 40px;
    right: 8px;
  }
}

@media (max-width: 640px) {
  .cell {
    padding: 6px 10px;
  }

  .mstrip {
    grid-template-columns: 1fr 1fr;
  }

  .svgbox {
    height: 240px;
  }

  .canvas-wrap, .canvas-wrap-3d {
    height: 200px;
  }

  .acts {
    gap: 6px;
  }

  .acts button {
    padding: 4px 8px;
    font-size: 11.5px;
  }

  .bldbtns {
    gap: 4px;
  }

  .bldbtns button {
    padding: 4px 8px;
    font-size: 11px;
  }

  .secbtns button {
    min-width: 24px;
    padding: 4px 7px;
    font-size: 11px;
  }

  .controls {
    gap: 10px;
  }

  .ctl label, .metrics td {
    font-size: 12px;
  }

  table.cmp {
    display: block;
    overflow-x: auto;
  }
}

@media (max-width: 420px) {
  .cell {
    padding: 4px 6px;
  }

  .planhead {
    gap: 6px;
  }

  .ph-left, .ph-right {
    flex-wrap: wrap;
  }

  .seg button {
    padding: 5px 10px;
    font-size: 11.5px;
  }

  .svgbox {
    height: 200px;
  }

  .canvas-wrap, .canvas-wrap-3d {
    height: 170px;
  }

  .mstrip {
    grid-template-columns: 1fr;
  }
}

/* [project]/app/styles/ird.css [app-client] (css) */
.ird-view {
  z-index: 50;
  background: var(--paper);
  display: flex;
  position: absolute;
  inset: 0;
}

.ird-left {
  flex: 0 0 var(--left-w);
  width: var(--left-w);
  border-right: 1px solid var(--hair);
  background: var(--panel);
  flex-direction: column;
  min-width: 0;
  max-width: none;
  display: flex;
  overflow: auto;
}

.ird-center {
  border-right: 1px solid var(--hair);
  flex-direction: column;
  flex: 2 1 0;
  min-width: 0;
  display: flex;
}

.ird-right {
  background: var(--panel);
  flex-direction: column;
  flex: 1.125 1 0;
  min-width: 0;
  padding-left: 30px;
  display: flex;
  position: relative;
}

.ird-right.collapsed {
  flex: 0 0 30px !important;
  min-width: 30px !important;
}

.ird-right.collapsed > :not(.llm-tab) {
  display: none;
}

.resize-handle {
  cursor: col-resize;
  z-index: 12;
  width: 10px;
  transition: background var(--ease);
  background: none;
  justify-content: center;
  align-items: center;
  display: flex;
  position: absolute;
  top: 0;
  bottom: 0;
  left: -5px;
}

.resize-handle:after {
  content: "";
  background: var(--muted);
  opacity: .3;
  width: 6px;
  height: 32px;
  transition: opacity var(--ease),background var(--ease);
  border-radius: 3px;
}

.resize-handle:hover:after, .resize-handle:active:after {
  background: var(--plot);
  opacity: .7;
}

.llm-tab {
  cursor: pointer;
  background: var(--panel);
  border-right: 1px solid var(--hair);
  width: 30px;
  color: var(--muted);
  letter-spacing: .06em;
  writing-mode: vertical-rl;
  text-orientation: mixed;
  -webkit-user-select: none;
  user-select: none;
  white-space: nowrap;
  justify-content: center;
  align-items: center;
  font-size: 11px;
  display: flex;
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
}

.llm-tab:hover {
  color: var(--plot);
  background: #f6f9fc;
}

.ird-lhead {
  border-bottom: 1px solid var(--hair);
  flex: none;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  padding: 10px 12px;
  display: flex;
}

.ird-lhead select {
  border: 1px solid var(--hair);
  background: var(--panel);
  color: var(--ink);
  cursor: pointer;
  border-radius: 5px;
  max-width: 62%;
  padding: 4px 7px;
  font-size: 12px;
}

.ird-count {
  color: var(--muted);
  white-space: nowrap;
  font-size: 11px;
}

.ird-tree {
  flex-direction: column;
  flex: 1;
  gap: 6px;
  padding: 8px 10px;
  display: flex;
  overflow: auto;
}

.ird-grpb {
  flex-direction: column;
  gap: 4px;
  padding: 4px 0 2px;
  display: flex;
}

.ird-grpb.hidden {
  display: none;
}

.ird-row {
  border: 1px solid var(--hair);
  border-radius: var(--r-sm);
  background: var(--panel);
  cursor: pointer;
  transition: border-color var(--ease),box-shadow var(--ease);
  flex-wrap: wrap;
  align-items: center;
  gap: 7px;
  padding: 6px 8px;
  font-size: 12px;
  display: flex;
}

.ird-row:hover {
  border-color: var(--plot);
  box-shadow: 0 1px 4px #14284614;
}

.ird-row.active {
  border-color: var(--plot);
  box-shadow: 0 0 0 1px var(--plot) inset;
  border-left: 3px solid var(--plot);
}

.ird-row.m {
  background: #eef4fa;
}

.ird-chip {
  color: var(--muted);
  white-space: nowrap;
  text-overflow: ellipsis;
  background: #eef1f4;
  border-radius: 4px;
  flex: none;
  max-width: 150px;
  padding: 2px 6px;
  font-size: 10.5px;
  overflow: hidden;
}

.ird-chip.ok {
  color: #2b5e2b;
  background: #ddf3dd;
}

.ird-lab {
  min-width: 0;
  color: var(--ink);
  flex: 120px;
}

.ird-badge {
  text-transform: uppercase;
  letter-spacing: .04em;
  color: #4a4385;
  background: #e9e7f5;
  border: 1px solid #b7afdd;
  border-radius: 4px;
  flex: none;
  padding: 1px 5px;
  font-size: 9px;
}

.ird-mini {
  border: 1px solid var(--hair);
  background: var(--panel);
  color: var(--ink);
  cursor: pointer;
  border-radius: 5px;
  flex: none;
  padding: 3px 7px;
  font-size: 11px;
}

.ird-mini:hover {
  border-color: var(--plot);
  color: var(--plot);
}

.ird-mini.danger:hover {
  color: #c0392b;
  border-color: #c0392b;
}

.ird-x {
  border: 1px solid var(--hair);
  background: var(--panel);
  color: var(--muted);
  cursor: pointer;
  border-radius: 5px;
  flex: none;
  padding: 3px 6px;
  font-size: 12px;
  line-height: 1;
}

.ird-x:hover {
  color: #c0392b;
  border-color: #c0392b;
}

.ird-add {
  border-top: 1px solid var(--hair);
  flex: none;
  gap: 6px;
  padding: 10px 12px;
  display: flex;
}

.ird-add input {
  border: 1px solid var(--hair);
  background: var(--panel);
  color: var(--ink);
  border-radius: 5px;
  flex: 1;
  min-width: 0;
  padding: 5px 8px;
  font-size: 12px;
}

.ird-btn {
  border: 1px solid var(--hair);
  background: var(--panel);
  color: var(--ink);
  cursor: pointer;
  white-space: nowrap;
  border-radius: 5px;
  padding: 5px 10px;
  font-size: 12px;
}

.ird-btn:hover {
  border-color: var(--plot);
  color: var(--plot);
}

.ird-vhead {
  border-bottom: 1px solid var(--hair);
  background: var(--panel);
  flex-wrap: wrap;
  flex: none;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  padding: 10px 14px;
  display: flex;
}

.ird-vname {
  color: var(--ink);
  text-overflow: ellipsis;
  flex: auto;
  min-width: 0;
  font-size: 13px;
  font-weight: 600;
  overflow: hidden;
}

.ird-fmt {
  flex: none;
}

.ird-fmt button {
  cursor: pointer;
}

.ird-fmt button.muted {
  opacity: .4;
}

.ird-fmtnote {
  color: var(--build);
  flex: none;
  min-height: 14px;
  font-size: 11px;
}

.ird-vbody {
  background: var(--paper);
  flex: 1;
  justify-content: center;
  align-items: center;
  min-height: 0;
  display: flex;
  position: relative;
  overflow: auto;
}

.ird-vbody iframe {
  background: #fff;
  border: none;
  width: 100%;
  height: 100%;
}

.ird-vbody img {
  object-fit: contain;
  max-width: 100%;
  max-height: 100%;
}

.ird-empty {
  color: var(--muted);
  text-align: center;
  padding: 20px;
  font-size: 13px;
}

.ird-vfoot {
  border-top: 1px solid var(--hair);
  background: var(--panel);
  flex: none;
  justify-content: flex-end;
  align-items: center;
  gap: 10px;
  padding: 8px 14px;
  display: flex;
  position: relative;
}

.ird-dlnote {
  color: var(--build);
  margin-right: auto;
  font-size: 11px;
}

.ird-dl {
  position: relative;
}

.ird-dl-menu {
  background: var(--panel);
  border: 1px solid var(--hair);
  border-radius: var(--r-sm);
  box-shadow: var(--sh-popup);
  z-index: 5;
  flex-direction: column;
  gap: 2px;
  min-width: 150px;
  margin-bottom: 4px;
  padding: 4px;
  display: flex;
  position: absolute;
  bottom: 100%;
  right: 0;
}

.ird-dl-menu button {
  text-align: left;
  color: var(--ink);
  cursor: pointer;
  background: none;
  border: none;
  border-radius: 4px;
  padding: 6px 9px;
  font-size: 12px;
}

.ird-dl-menu button:hover {
  background: #eef4fa;
}

.ird-dl-menu button.muted {
  color: var(--muted);
}

.ird-rhead {
  border-bottom: 1px solid var(--hair);
  flex-wrap: wrap;
  flex: none;
  align-items: center;
  gap: 8px;
  padding: 10px 12px;
  display: flex;
}

.ird-rhead select {
  border: 1px solid var(--hair);
  background: var(--panel);
  color: var(--ink);
  cursor: pointer;
  border-radius: 5px;
  padding: 4px 7px;
  font-size: 12px;
}

.ird-note {
  color: var(--muted);
  font-size: 10.5px;
}

.ird-out {
  color: var(--ink);
  flex: 2 1 0;
  min-height: 0;
  padding: 12px 14px;
  font-size: 12.5px;
  line-height: 1.5;
  overflow: auto;
}

.ird-out-intro {
  color: var(--muted);
}

.ird-msg-q {
  color: var(--plot);
  white-space: pre-wrap;
  margin-top: 12px;
  font-weight: 600;
}

.ird-msg-a {
  color: var(--ink);
  white-space: pre-wrap;
  margin-top: 3px;
}

.ird-msg-streaming {
  color: var(--muted);
  animation: 1.2s ease-in-out infinite pulse;
}

@keyframes pulse {
  0%, 100% {
    opacity: .4;
  }

  50% {
    opacity: 1;
  }
}

.ird-ask {
  border-top: 1px solid var(--hair);
  flex-direction: column;
  flex: none;
  gap: 6px;
  min-height: 0;
  padding: 10px 12px;
  display: flex;
}

.ird-ask-row {
  align-items: flex-end;
  gap: 6px;
  display: flex;
}

.ird-ask textarea {
  resize: none;
  font: inherit;
  border: 1px solid var(--hair);
  border-radius: var(--r-sm);
  background: var(--panel);
  color: var(--ink);
  box-sizing: border-box;
  flex: 1;
  min-height: 44px;
  max-height: 120px;
  padding: 8px;
  font-size: 12.5px;
}

.ird-icon-btn {
  border: 1px solid var(--hair);
  background: var(--panel);
  width: 40px;
  height: 40px;
  color: var(--muted);
  cursor: pointer;
  transition: border-color var(--ease),color var(--ease),background var(--ease);
  border-radius: 50%;
  flex: none;
  justify-content: center;
  align-items: center;
  display: flex;
}

.ird-icon-btn svg {
  pointer-events: none;
}

.ird-icon-btn:hover:not(:disabled) {
  border-color: var(--plot);
  color: var(--plot);
}

.ird-icon-btn:disabled {
  opacity: .35;
  cursor: default;
}

.ird-icon-btn.send {
  border-color: var(--plot);
  background: var(--plot);
  color: #fff;
}

.ird-icon-btn.send:hover:not(:disabled) {
  opacity: .85;
}

.ird-icon-btn.send:disabled {
  opacity: .3;
}

.ird-icon-btn.recording {
  color: #fff;
  background: #c0392b;
  border-color: #c0392b;
  animation: 1.2s infinite ird-pulse;
}

.ird-icon-btn.transcribing {
  border-color: var(--plot);
  color: var(--plot);
  animation: 1.2s infinite ird-pulse;
}

.ird-dots {
  font-size: 14px;
  line-height: 1;
}

@keyframes ird-pulse {
  0%, 100% {
    opacity: 1;
  }

  50% {
    opacity: .5;
  }
}

.ird-attach-badge {
  background: var(--plot-soft, #4682b41a);
  border: 1px solid var(--plot);
  border-radius: var(--r-sm);
  color: var(--ink);
  align-items: center;
  gap: 6px;
  padding: 4px 8px;
  font-size: 11.5px;
  display: flex;
}

.ird-attach-badge span {
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 180px;
  overflow: hidden;
}

.ird-attach-badge button {
  color: var(--muted);
  cursor: pointer;
  background: none;
  border: none;
  padding: 0 2px;
  font-size: 16px;
  line-height: 1;
}

.ird-attach-badge button:hover {
  color: var(--ink);
}

@media (max-width: 1024px) {
  .ird-view {
    flex-direction: column;
  }

  .ird-left {
    border-right: none;
    border-bottom: 1px solid var(--hair);
    flex: none;
    width: 100%;
    max-width: none;
    max-height: 220px;
  }

  .ird-center {
    border-right: none;
    border-bottom: 1px solid var(--hair);
    flex: auto;
  }

  .ird-right {
    border-top: 1px solid var(--hair);
    flex: none;
    width: 100%;
    min-width: 0;
    padding-left: 0;
  }

  .ird-right.collapsed {
    flex: 0 0 30px !important;
    min-width: 0 !important;
  }

  .llm-tab {
    writing-mode: horizontal-tb;
    border-right: none;
    border-bottom: 1px solid var(--hair);
    width: 100%;
    height: 30px;
    position: static;
  }

  .resize-handle {
    display: none;
  }
}

@media (max-width: 640px) {
  .ird-left {
    max-height: 180px;
  }

  .ird-row {
    gap: 5px;
    padding: 5px 6px;
    font-size: 11px;
  }

  .ird-chip {
    max-width: 100px;
    font-size: 9.5px;
  }

  .ird-ask textarea {
    min-height: 44px;
  }
}

@media (max-width: 420px) {
  .ird-vhead {
    gap: 8px;
    padding: 8px 10px;
  }

  .ird-vname {
    font-size: 12px;
  }

  .ird-add {
    padding: 8px 10px;
  }

  .ird-add input {
    font-size: 11px;
  }
}

/* [project]/app/styles/upravlenie.css [app-client] (css) */
.upravlenie-view {
  z-index: 50;
  background: var(--paper);
  display: flex;
  position: absolute;
  inset: 0;
}

.upr-left {
  flex: 0 0 var(--left-w);
  width: var(--left-w);
  border-right: 1px solid var(--hair);
  background: var(--panel);
  flex-direction: column;
  min-width: 0;
  max-width: none;
  display: flex;
  overflow: auto;
}

.upr-center {
  border-right: 1px solid var(--hair);
  flex-direction: column;
  flex: 2.2 1 0;
  min-width: 0;
  display: flex;
}

.upr-lhead {
  border-bottom: 1px solid var(--hair);
  flex-direction: column;
  flex: none;
  gap: 3px;
  padding: 10px 12px;
  display: flex;
}

.upr-h {
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

.upr-tag {
  color: var(--build);
  font-size: 10px;
}

.upr-list {
  flex-direction: column;
  flex: 1;
  gap: 5px;
  padding: 8px 10px;
  display: flex;
  overflow: auto;
}

.upr-row {
  border: 1px solid var(--hair);
  border-radius: var(--r-sm);
  background: var(--panel);
  cursor: pointer;
  transition: border-color var(--ease),box-shadow var(--ease);
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  font-size: 12.5px;
  display: flex;
  position: relative;
}

.upr-row:hover {
  border-color: var(--plot);
  box-shadow: 0 1px 4px #14284614;
}

.upr-row.active {
  border-color: var(--plot);
  box-shadow: 0 0 0 1px var(--plot) inset;
  border-left: 3px solid var(--plot);
}

.upr-dot {
  border-radius: 50%;
  flex: none;
  width: 9px;
  height: 9px;
}

.upr-dot.ok {
  background: #4a9a4a;
}

.upr-dot.watch {
  background: #d99a2b;
}

.upr-dot.risk {
  background: #c0392b;
}

.upr-name {
  min-width: 0;
  color: var(--ink);
  text-overflow: ellipsis;
  white-space: nowrap;
  flex: auto;
  overflow: hidden;
}

.upr-phase {
  color: var(--muted);
  white-space: nowrap;
  background: #eef1f4;
  border-radius: 4px;
  flex: none;
  padding: 2px 6px;
  font-size: 10px;
}

.upr-foot {
  color: var(--muted);
  border-top: 1px solid var(--hair);
  flex: none;
  padding: 8px 12px;
  font-size: 10.5px;
  line-height: 1.35;
}

.upr-vhead {
  border-bottom: 1px solid var(--hair);
  background: var(--panel);
  flex: none;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  display: flex;
}

.upr-objname {
  color: var(--ink);
  text-overflow: ellipsis;
  min-width: 0;
  font-size: 14px;
  font-weight: 650;
  overflow: hidden;
}

.upr-blocks {
  flex-wrap: wrap;
  flex: none;
  gap: 5px;
  margin: 10px 14px 0;
  display: flex;
}

.upr-blk {
  border: 1px solid var(--hair);
  border-radius: var(--r-sm);
  background: var(--panel);
  color: var(--ink);
  cursor: pointer;
  white-space: nowrap;
  transition: border-color var(--ease),color var(--ease),background var(--ease);
  padding: 4px 9px;
  font-size: 11.5px;
}

.upr-blk:hover {
  border-color: var(--plot);
  color: var(--plot);
  box-shadow: 0 1px 3px #1428460f;
}

.upr-blk.on {
  background: var(--plot);
  color: #fff;
  border-color: var(--plot);
}

.upr-blk.stub {
  opacity: .5;
}

.upr-blk.stub.on {
  opacity: 1;
}

.upr-body {
  flex: 1;
  min-height: 0;
  padding: 14px;
  overflow: hidden auto;
}

.upr-card {
  border: 1px solid var(--hair);
  border-radius: var(--r-md);
  background: var(--panel);
  margin-bottom: 12px;
  padding: 12px 14px;
}

.upr-card h4 {
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--muted);
  margin: 0 0 8px;
  font-size: 12px;
  font-weight: 700;
}

.upr-line {
  border-top: 1px solid var(--hair);
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  padding: 8px 0;
  font-size: 12.5px;
  display: flex;
}

.upr-line.first {
  border-top: none;
}

.upr-linetxt {
  min-width: 0;
}

.upr-sub {
  color: var(--muted);
  margin-top: 3px;
  font-size: 11.5px;
  line-height: 1.4;
}

.upr-stages {
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 6px;
  display: flex;
}

.upr-stage-chip {
  border: 1px solid var(--hair);
  color: var(--ink);
  background: #f4f7fa;
  border-radius: 5px;
  padding: 3px 8px;
  font-size: 11px;
}

.upr-tile {
  border: 1px solid var(--hair);
  border-radius: var(--r-md);
  background: #eef4fa;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin-bottom: 12px;
  padding: 12px 14px;
  display: flex;
}

.upr-tile .tval {
  color: var(--plot);
  white-space: nowrap;
  font-size: 20px;
  font-weight: 700;
}

.upr-tile .tlab {
  color: var(--muted);
  font-size: 12px;
}

.upr-stub-body {
  color: var(--muted);
  text-align: center;
  padding: 26px;
  font-size: 13px;
}

.upr-aff {
  color: var(--muted);
  font-size: 12px;
}

@media (max-width: 1024px) {
  .upravlenie-view {
    flex-direction: column;
  }

  .upr-left {
    border-right: none;
    border-bottom: 1px solid var(--hair);
    flex: none;
    width: 100%;
    max-width: none;
    max-height: 220px;
  }

  .upr-center {
    border-right: none;
    border-bottom: 1px solid var(--hair);
    flex: auto;
  }
}

@media (max-width: 640px) {
  .upr-left {
    max-height: 180px;
  }

  .upr-blocks {
    gap: 4px;
    margin: 8px 10px 0;
  }

  .upr-blk {
    padding: 3px 7px;
    font-size: 10.5px;
  }

  .upr-body, .upr-card {
    padding: 10px;
  }

  .upr-line {
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
  }

  .upr-tile {
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
    padding: 10px;
  }

  .upr-tile .tval {
    font-size: 17px;
  }
}

@media (max-width: 420px) {
  .upr-objname {
    font-size: 12px;
  }

  .upr-vhead {
    padding: 8px 10px;
  }

  .upr-blocks {
    margin: 6px 10px 0;
  }
}

/* [project]/app/styles/kd.css [app-client] (css) */
.kd-map-head {
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
  margin-bottom: 10px;
  display: flex;
}

.kd-cap {
  color: var(--muted);
  max-width: 74%;
  font-size: 11px;
  line-height: 1.4;
}

.kd-mask {
  color: var(--ink);
  cursor: pointer;
  -webkit-user-select: none;
  user-select: none;
  white-space: nowrap;
  flex: none;
  align-items: center;
  gap: 6px;
  font-size: 11.5px;
  display: flex;
}

.kd-mask input {
  cursor: pointer;
}

.kd-tabs {
  flex-wrap: wrap;
  gap: 5px;
  margin-bottom: 10px;
  display: flex;
}

.kd-tab {
  border: 1px solid var(--hair);
  border-radius: var(--r-sm);
  background: var(--panel);
  color: var(--ink);
  cursor: pointer;
  white-space: nowrap;
  transition: border-color var(--ease),color var(--ease),background var(--ease);
  padding: 4px 9px;
  font-size: 11.5px;
}

.kd-tab:hover {
  border-color: var(--plot);
  color: var(--plot);
  box-shadow: 0 1px 3px #1428460f;
}

.kd-tab.on {
  background: var(--plot);
  color: #fff;
  border-color: var(--plot);
}

.kd-table {
  border-collapse: collapse;
  width: 100%;
  font-size: 12px;
}

.kd-table.kd-fixed {
  table-layout: fixed;
}

.kd-table td {
  border: 1px solid var(--hair);
  vertical-align: top;
  color: var(--ink);
  white-space: normal;
  word-break: normal;
  overflow-wrap: anywhere;
  padding: 2px 5px;
}

.kd-table tr.kd-ver td {
  background: #eef4fa;
  font-weight: 600;
}

.kd-table td.kd-itg {
  text-align: right;
}

.kd-table tr.kd-beige td {
  background: #fbf3e6;
}

.kd-table tr.kd-accent td {
  background: #e4dccb;
}

.kd-table tr.kd-accent td.kd-itg {
  font-weight: 700;
}

.kd-table tr.kd-orange td {
  background: #e8a87c;
}

.kd-table tr.kd-orange td.kd-itg {
  font-weight: 700;
}

.kd-table tr.kd-red td {
  background: #d9d9d9;
}

.kd-table tr.kd-red td.kd-itg {
  color: #c00000;
  font-weight: 700;
}

.kd-table tr.kd-row:hover td {
  background: #f6f9fc;
}

.kd-stagerow td {
  border: none;
  padding: 0;
}

.kd-stagerow .pgh {
  border-radius: 5px;
  width: 100%;
  margin: 8px 0 2px;
}

.kd-num {
  text-align: right;
  white-space: nowrap;
}

.kd-table td.kd-calc {
  color: var(--muted);
  cursor: default;
  background: #f0f2f5;
}

.kd-table td.kd-off {
  background: #f7f8fa;
}

.kd-table td.kd-neg, .kd-table td.kd-neg .kd-val {
  color: #c0392b;
}

.kd-table input.kd-in {
  width: 100%;
  font: inherit;
  border: 1px solid var(--hair);
  background: var(--panel);
  color: var(--ink);
  text-align: right;
  box-sizing: border-box;
  border-radius: 3px;
  padding: 1px 2px;
  font-size: 11px;
}

.kd-table input.kd-in:focus {
  border-color: var(--plot);
  outline: none;
}

.kd-table input.kd-in.kd-subin {
  width: 44px;
}

.kd-table input.kd-in.kd-kin {
  width: 26px;
}

.kd-table .kd-k {
  color: var(--muted);
  margin: 0 1px;
  font-size: 10px;
}

.kd-table input[type="number"] {
  -moz-appearance: textfield;
}

.kd-table input[type="number"]::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

.kd-table input[type="number"]::-webkit-outer-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

.kd-table select.kd-sel {
  font: inherit;
  border: 1px solid var(--hair);
  background: var(--panel);
  color: var(--ink);
  cursor: pointer;
  border-radius: 3px;
  padding: 1px 3px;
  font-size: 11px;
}

.kd-head-right {
  flex-wrap: wrap;
  flex: none;
  align-items: center;
  gap: 10px;
  display: flex;
}

.kd-approve-btn {
  border-radius: var(--r-sm);
  color: #4a4385;
  cursor: pointer;
  white-space: nowrap;
  background: #e9e7f5;
  border: 1px solid #8f86c9;
  padding: 5px 10px;
  font-size: 12px;
  font-weight: 600;
}

.kd-approve-btn:hover {
  background: #ddd8f2;
}

.kd-tab.kd-tab-approved {
  color: #4a4385;
  background: #e9e7f5;
  border-color: #8f86c9;
  font-weight: 600;
}

.kd-tab.kd-tab-approved:hover {
  color: #302a60;
  border-color: #6a5fb0;
}

.kd-tab.kd-tab-approved.on {
  color: #fff;
  background: #7a6fc0;
  border-color: #6a5fb0;
}

.kd-approved-bar {
  border-radius: var(--r-sm);
  color: #4a4385;
  background: #edebf8;
  border: 1px solid #b7afdd;
  margin-bottom: 10px;
  padding: 8px 12px;
  font-size: 12px;
  font-weight: 600;
}

.kd-kpi {
  border: 1px solid var(--hair);
  border-radius: var(--r-sm);
  color: var(--muted);
  background: #f2f4f7;
  margin-bottom: 12px;
  padding: 10px 12px;
  font-size: 12px;
}

.kd-approved-empty {
  color: var(--muted);
  text-align: center;
  padding: 26px;
  font-size: 13px;
}

.kd-f {
  color: var(--plot);
  border: 1px solid var(--plot);
  cursor: help;
  vertical-align: top;
  border-radius: 3px;
  margin-left: 4px;
  padding: 0 3px;
  font-size: 9px;
  font-style: italic;
  line-height: 1.4;
  display: inline-block;
}

@media (max-width: 1024px) {
  .kd-table {
    font-size: 11px;
  }

  .kd-cap {
    max-width: 100%;
  }
}

@media (max-width: 640px) {
  .kd-table {
    display: block;
    overflow-x: auto;
  }
}

/* [project]/app/styles/kp.css [app-client] (css) */
.kp-sep {
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--muted);
  border-top: 1px solid var(--hair);
  margin-top: 6px;
  padding: 12px 10px 6px;
  font-size: 10px;
  font-weight: 700;
}

.upr-dot.kp {
  border: 2px solid var(--muted);
  background: none;
}

.upr-dot.kp-assembled {
  border-color: var(--plot);
}

.upr-dot.kp-sent {
  border-color: var(--build);
}

.upr-dot.kp-accepted {
  background: #4a9a4a;
  border-color: #4a9a4a;
}

.upr-dot.kp-rejected {
  background: #c0392b;
  border-color: #c0392b;
}

.kp-add-btn {
  border: 1px dashed var(--hair);
  border-radius: var(--r-sm);
  width: 100%;
  color: var(--build);
  cursor: pointer;
  transition: border-color var(--ease),background var(--ease);
  background: none;
  margin-top: 8px;
  padding: 8px;
  font-size: 12px;
  font-weight: 600;
}

.kp-add-btn:hover {
  border-color: var(--build);
  background: #c4793a0f;
  border-style: solid;
}

.kp-del-btn {
  border-radius: var(--r-sm);
  color: #c0392b;
  cursor: pointer;
  opacity: 0;
  width: 20px;
  height: 20px;
  transition: opacity var(--ease),background var(--ease);
  background: #c83c3c0f;
  border: 1px solid #c83c3c40;
  flex: none;
  justify-content: center;
  align-items: center;
  margin-left: 2px;
  font-size: 13px;
  font-weight: 700;
  line-height: 1;
  display: flex;
}

.upr-row:hover .kp-del-btn {
  opacity: 1;
}

.kp-del-btn:hover {
  background: #c83c3c26;
  border-color: #c83c3c80;
}

.kp-form {
  flex-direction: column;
  gap: 12px;
  padding: 14px;
  display: flex;
  overflow-y: auto;
}

.kp-vhead {
  border-bottom: 1px solid var(--hair);
  background: var(--panel);
  flex: none;
  align-items: baseline;
  gap: 10px;
  padding: 10px 14px;
  display: flex;
}

.kp-vhead .kp-title {
  color: var(--ink);
  font-size: 14px;
  font-weight: 650;
}

.kp-vhead .kp-sub {
  color: var(--muted);
  font-size: 11px;
}

.kp-body {
  flex: 1;
  min-height: 0;
  padding: 14px;
  overflow: hidden auto;
}

.kp-prov {
  border: 1px solid var(--hair);
  color: var(--ink);
  background: #eef4fa;
  border-radius: 8px;
  margin-bottom: 12px;
  padding: 10px 12px;
  font-size: 12px;
  line-height: 1.45;
}

.kp-sec-h {
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--muted);
  margin: 16px 0 8px;
  font-size: 11px;
  font-weight: 700;
}

.kp-comp-row {
  border-top: 1px solid var(--hair);
  align-items: center;
  gap: 8px;
  padding: 5px 0;
  font-size: 12.5px;
  display: flex;
}

.kp-comp-row .kp-cname {
  flex: 1;
  min-width: 0;
}

.kp-share {
  width: 56px;
  font: inherit;
  border: 1px solid var(--hair);
  text-align: right;
  background: var(--panel);
  color: var(--ink);
  border-radius: 4px;
  padding: 2px 5px;
  font-size: 12px;
}

.kp-share::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

.kp-share::-webkit-outer-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

.kp-cprice {
  text-align: right;
  color: var(--muted);
  white-space: nowrap;
  flex: none;
  margin-left: auto;
}

.kp-sharesum {
  margin-top: 8px;
  font-size: 12px;
  font-weight: 600;
}

.kp-sharesum.bad {
  color: #c0392b;
}

.kp-sharesum.ok {
  color: #2b7a2b;
}

.kp-legend {
  color: var(--muted);
  flex-wrap: wrap;
  gap: 16px;
  margin: 10px 0 4px;
  font-size: 11.5px;
  display: flex;
}

.kp-legend .kp-lg {
  align-items: center;
  gap: 5px;
  display: flex;
}

.kp-coef {
  color: var(--muted);
  font-size: 11px;
}

.kp-left-body {
  flex-direction: column;
  flex: 1;
  gap: 14px;
  padding: 10px 12px;
  display: flex;
  overflow: auto;
}

.kp-wbtn {
  text-align: left;
  white-space: normal;
  width: 100%;
  line-height: 1.35;
}

.kp-lgroup {
  flex-direction: column;
  gap: 5px;
  display: flex;
}

.kp-lh {
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--muted);
  font-size: 11px;
  font-weight: 600;
}

.kp-pult {
  border-top: 1px solid var(--hair);
  background: var(--panel);
  flex-direction: column;
  flex: none;
  gap: 8px;
  padding: 10px 12px;
  display: flex;
}

.kp-pult-total {
  color: var(--ink);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.35;
}

.kp-pult-total.warn {
  color: #c0392b;
}

.kp-toolbar {
  border-bottom: 1px solid var(--hair);
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-bottom: 12px;
  padding: 10px 0;
  display: flex;
}

.kp-panels-row {
  flex-wrap: wrap;
  gap: 20px;
  margin-bottom: 12px;
  display: flex;
}

.kp-panels-row .kp-lgroup {
  flex: 1 1 0;
  min-width: 200px;
}

.kp-formbtn {
  text-align: center;
  background: var(--plot);
  color: #fff;
  border-color: var(--plot);
  white-space: nowrap;
  height: auto;
  padding: 8px;
  font-size: 10px;
  font-weight: 600;
  line-height: 1.25;
}

.kp-formbtn[disabled] {
  opacity: .6;
  cursor: not-allowed;
}

.kp-badge {
  text-transform: uppercase;
  letter-spacing: .04em;
  color: #4a4385;
  background: #e9e7f5;
  border: 1px solid #b7afdd;
  border-radius: 4px;
  padding: 1px 5px;
  font-size: 9px;
}

.kp-totals {
  border-top: 2px solid var(--hair);
  margin-top: 16px;
  padding-top: 12px;
  font-size: 13px;
  line-height: 1.6;
}

.kp-total-main {
  color: var(--ink);
  font-size: 16px;
  font-weight: 700;
}

.kp-form-head {
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  display: flex;
}

.kp-name-input {
  font: inherit;
  color: var(--ink);
  border-radius: var(--r-sm);
  min-width: 0;
  transition: border-color var(--ease),background var(--ease);
  background: none;
  border: 1px solid #0000;
  flex: auto;
  padding: 4px 8px;
  font-size: 14px;
  font-weight: 650;
}

.kp-name-input:hover {
  border-color: var(--hair);
}

.kp-name-input:focus {
  border-color: var(--plot);
  background: var(--panel);
  outline: none;
}

.kp-status {
  text-transform: uppercase;
  letter-spacing: .04em;
  white-space: nowrap;
  border-radius: 4px;
  padding: 3px 8px;
  font-size: 10px;
  font-weight: 600;
}

.kp-status.draft {
  color: var(--muted);
  background: #eef1f4;
}

.kp-status.assembled {
  background: var(--plot-soft);
  color: var(--plot);
}

.kp-status.sent {
  color: var(--build);
  background: #c4793a1f;
}

.kp-status.accepted {
  color: #2b5e2b;
  background: #ddf3dd;
}

.kp-status.rejected {
  color: #b23b3b;
  background: #fbeeee;
}

.kp-obj-add {
  width: 100%;
  margin-top: 4px;
}

.kp-excl-row {
  border-top: 1px solid var(--hair);
  align-items: center;
  gap: 8px;
  padding: 4px 6px;
  font-size: 12px;
  display: flex;
}

.kp-excl-row .kp-en {
  flex: 1;
  min-width: 0;
}

.kp-excl-row.upsell {
  background: #fbf3e6;
}

.kp-warn {
  color: var(--build);
  margin-top: 4px;
  font-size: 11px;
}

.kp-readonly .kp-name-input, .kp-readonly .kd-in, .kp-readonly .kp-share, .kp-readonly .kp-rate, .kp-readonly select, .kp-readonly input[type="checkbox"], .kp-readonly input[type="radio"], .kp-readonly textarea {
  pointer-events: none;
  opacity: .6;
}

.kp-readonly .kp-add-btn, .kp-readonly .kp-obj-add, .kp-readonly .ird-x {
  display: none;
}

.kp-upload-wrap {
  flex-direction: column;
  align-items: center;
  gap: 8px;
  display: flex;
}

.kp-dropzone {
  border: 2px dashed var(--hair);
  border-radius: var(--r-lg);
  background: var(--paper);
  text-align: center;
  cursor: pointer;
  width: 100%;
  transition: border-color var(--ease),background var(--ease);
  padding: 40px 20px;
}

.kp-dropzone:hover, .kp-dropzone.over {
  border-color: var(--plot);
  background: var(--plot-soft);
}

.kp-drop-icon {
  margin-bottom: 8px;
  font-size: 32px;
}

.kp-drop-text {
  color: var(--ink);
  font-size: 14px;
  font-weight: 600;
}

.kp-drop-sub {
  color: var(--muted);
  margin-top: 2px;
  font-size: 12px;
}

.kp-drop-or {
  color: var(--muted);
  justify-content: center;
  align-items: center;
  gap: 6px;
  margin-top: 10px;
  font-size: 12px;
  display: flex;
}

.kp-upload-progress {
  color: var(--plot);
  text-align: center;
  padding: 20px;
  font-size: 13px;
}

.kp-parse-log {
  border: 1px solid var(--hair);
  border-radius: var(--r-md);
  background: var(--panel);
  flex-direction: column;
  gap: 6px;
  width: 100%;
  padding: 12px 14px;
  display: flex;
}

.kp-parse-step {
  align-items: flex-start;
  gap: 8px;
  font-size: 12.5px;
  line-height: 1.4;
  display: flex;
}

.kp-step-icon {
  flex: none;
  font-size: 13px;
}

.kp-parse-step.found {
  color: #2e7d32;
}

.kp-parse-step.warning {
  color: var(--build);
}

.kp-parse-step.error {
  color: #b23b3b;
}

.kp-parse-step.reading, .kp-parse-step.extracting {
  color: var(--plot);
}

.kp-chat {
  flex-direction: column;
  height: 100%;
  min-height: 0;
  display: flex;
}

.kp-chat-messages {
  flex-direction: column;
  flex: .9;
  gap: 12px;
  min-height: 0;
  padding: 16px;
  display: flex;
  overflow-y: auto;
}

.kp-chat-msg {
  align-items: flex-start;
  gap: 8px;
  max-width: 85%;
  display: flex;
}

.kp-chat-msg.user {
  flex-direction: row-reverse;
  align-self: flex-end;
}

.kp-chat-msg.ai {
  align-self: flex-start;
}

.kp-chat-msg.system {
  align-self: center;
  max-width: 100%;
}

.kp-chat-msg.system .kp-chat-bubble {
  color: #b23b3b;
  background: #c83c3c14;
  border: 1px solid #c83c3c33;
  font-size: 12px;
}

.kp-chat-avatar {
  background: var(--plot);
  color: #fff;
  border-radius: 50%;
  flex: none;
  justify-content: center;
  align-items: center;
  width: 28px;
  height: 28px;
  font-size: 11px;
  font-weight: 700;
  display: flex;
}

.kp-chat-bubble {
  white-space: pre-wrap;
  word-break: break-word;
  border-radius: 12px;
  padding: 10px 14px;
  font-size: 13px;
  line-height: 1.5;
}

.kp-chat-msg.ai .kp-chat-bubble {
  background: var(--panel);
  border: 1px solid var(--hair);
  color: var(--ink);
}

.kp-chat-msg.user .kp-chat-bubble {
  background: var(--plot);
  color: #fff;
  border: none;
}

.kp-chat-file {
  border-radius: 8px;
  align-items: center;
  gap: 6px;
  margin-bottom: 6px;
  padding: 6px 10px;
  font-size: 12px;
  display: flex;
}

.kp-chat-msg.user .kp-chat-file {
  background: #ffffff26;
}

.kp-chat-msg.ai .kp-chat-file {
  background: #0000000a;
}

.kp-chat-file-icon {
  font-size: 16px;
}

.kp-chat-file-size {
  color: #ffffffb3;
  font-size: 11px;
}

.kp-chat-msg.ai .kp-chat-file-size {
  color: var(--muted);
}

.kp-chat-typing {
  animation: 1.2s infinite kp-pulse;
}

@keyframes kp-pulse {
  0%, 100% {
    opacity: 1;
  }

  50% {
    opacity: .3;
  }
}

.kp-chat-actions {
  border-top: 1px solid var(--hair);
  background: var(--panel);
  gap: 8px;
  padding: 8px 16px;
  display: flex;
}

.kp-chat-actions .primary {
  flex: 1;
}

.kp-chat-actions .ghost {
  flex: none;
}

.kp-chat-input {
  border-top: 1px solid var(--hair);
  background: var(--paper);
  align-items: flex-end;
  gap: 6px;
  padding: 10px 16px;
  display: flex;
}

.kp-chat-attach {
  border: 1px solid var(--hair);
  background: var(--panel);
  cursor: pointer;
  width: 36px;
  height: 36px;
  transition: border-color var(--ease),background var(--ease);
  border-radius: 50%;
  flex: none;
  justify-content: center;
  align-items: center;
  font-size: 18px;
  display: flex;
}

.kp-chat-attach:hover {
  border-color: var(--plot);
  background: var(--plot-soft);
}

.kp-chat-attach:disabled {
  opacity: .4;
  cursor: default;
}

.kp-chat-textarea {
  border: 1px solid var(--hair);
  background: var(--panel);
  resize: none;
  min-height: 36px;
  max-height: 120px;
  color: var(--ink);
  transition: border-color var(--ease);
  border-radius: 18px;
  outline: none;
  flex: 1;
  padding: 8px 12px;
  font-family: inherit;
  font-size: 13px;
  line-height: 1.4;
}

.kp-chat-textarea:focus {
  border-color: var(--plot);
}

.kp-chat-send {
  background: var(--plot);
  color: #fff;
  cursor: pointer;
  width: 36px;
  height: 36px;
  transition: opacity var(--ease);
  border: none;
  border-radius: 50%;
  flex: none;
  justify-content: center;
  align-items: center;
  font-size: 16px;
  display: flex;
}

.kp-chat-send:disabled {
  opacity: .3;
  cursor: default;
}

.kp-chat-send:hover:not(:disabled) {
  opacity: .85;
}

.kp-chat-skip {
  border: none;
  border-top: 1px solid var(--hair);
  background: var(--paper);
  width: 100%;
  color: var(--muted);
  cursor: pointer;
  transition: color var(--ease);
  padding: 8px;
  font-size: 12px;
}

.kp-chat-skip:hover {
  color: var(--plot);
}

.kp-files-bar {
  flex-wrap: wrap;
  gap: 6px;
  display: flex;
}

.kp-file-badge {
  border: 1px solid var(--hair);
  border-radius: var(--r-sm);
  background: var(--panel);
  color: var(--ink);
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  font-size: 12px;
  display: inline-flex;
}

.kp-file-icon {
  font-size: 14px;
}

.kp-cell-wrap {
  align-items: center;
  gap: 3px;
  width: 100%;
  display: flex;
}

.kp-cell-wrap .kd-in {
  flex: 1;
  min-width: 0;
}

.kp-auto-badge {
  cursor: help;
  opacity: .7;
  flex: none;
  font-size: 12px;
}

.kp-baserow {
  flex-wrap: wrap;
  align-items: center;
  gap: 14px;
  margin-bottom: 12px;
  font-size: 12.5px;
  display: flex;
}

.kp-baserow label {
  cursor: pointer;
  align-items: center;
  gap: 5px;
  display: flex;
}

.kp-rate {
  width: 78px;
  font: inherit;
  border: 1px solid var(--hair);
  text-align: right;
  background: var(--panel);
  color: var(--ink);
  border-radius: 5px;
  padding: 3px 6px;
  font-size: 12px;
}

.kp-rate:focus {
  border-color: var(--plot);
  outline: none;
}

.kp-typerow {
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 10px;
  margin: 14px 0 4px;
  font-size: 12.5px;
  display: flex;
}

.kp-sel {
  font: inherit;
  border: 1px solid var(--hair);
  background: var(--panel);
  color: var(--ink);
  border-radius: 5px;
  padding: 3px 8px;
  font-size: 12.5px;
}

.kp-sel:focus {
  border-color: var(--plot);
  outline: none;
}

.kp-type-note {
  color: var(--muted);
  font-size: 11.5px;
}

.kp-type-warn {
  color: #9a2b1e;
  background: #f5d9d3;
  border: 1px solid #d99a8b;
  border-radius: 4px;
  padding: 1px 7px;
}

.kp-type-area {
  color: var(--muted);
  margin-left: 4px;
  font-size: 12px;
}

.kp-muted {
  color: var(--muted);
  font-size: 12px;
}

.kp-dis {
  opacity: .5;
  cursor: not-allowed;
}

.kp-status-badge {
  white-space: nowrap;
  border-radius: 4px;
  flex: none;
  padding: 1px 6px;
  font-size: 10.5px;
}

.kp-status-badge.excl {
  color: var(--muted);
  background: #eef1f4;
}

.kp-status-badge.upsell {
  color: #7a5a1e;
  background: #e4dccb;
}

.kp-inc {
  border: 1px solid var(--hair);
  background: var(--panel);
  color: var(--ink);
  cursor: pointer;
  border-radius: 5px;
  flex: none;
  padding: 2px 8px;
  font-size: 11px;
}

.kp-inc:hover {
  border-color: var(--plot);
  color: var(--plot);
}

.kp-tree-head {
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  padding: 4px 0 4px 26px;
  display: flex;
}

.kp-treebtn {
  border: 1px solid var(--hair);
  background: var(--panel);
  color: var(--ink);
  cursor: pointer;
  border-radius: 5px;
  padding: 2px 8px;
  font-size: 12px;
}

.kp-treebtn:hover {
  border-color: var(--plot);
  color: var(--plot);
}

.kp-tree-count {
  color: var(--muted);
  font-size: 12px;
}

.kp-tree-note {
  color: #7a5a1e;
  background: #f6e9c9;
  border: 1px solid #d9b96b;
  border-radius: 4px;
  padding: 1px 7px;
  font-size: 11.5px;
}

.kp-tree {
  border: 1px solid var(--hair);
  border-radius: var(--r-sm);
  background: #fcfdfe;
  max-height: 320px;
  margin: 4px 0 6px 26px;
  padding: 6px 8px;
  overflow: auto;
}

.kp-tree-sec {
  color: var(--ink);
  border-top: 1px solid var(--hair);
  align-items: center;
  gap: 7px;
  padding: 5px 0 3px;
  font-size: 12px;
  font-weight: 600;
  display: flex;
}

.kp-tree-sec:first-child {
  border-top: none;
}

.kp-tree-grp {
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .03em;
  padding: 3px 0 1px 22px;
  font-size: 10.5px;
}

.kp-tree-part {
  color: var(--ink);
  cursor: pointer;
  align-items: center;
  gap: 7px;
  padding: 2px 0 2px 22px;
  font-size: 12px;
  display: flex;
}

.kp-tree-part .kp-pc {
  color: var(--plot);
  flex: none;
  font-weight: 600;
}

.kp-tree-hours {
  color: var(--muted);
  white-space: nowrap;
  margin-left: auto;
  font-size: 11px;
}

.kp-meth-row {
  border-top: 1px solid var(--hair);
  align-items: center;
  gap: 8px;
  padding: 5px 0;
  font-size: 12.5px;
  display: flex;
}

.kp-meth-row:first-child {
  border-top: none;
}

.kp-meth-row input[type="checkbox"] {
  cursor: pointer;
  flex: none;
  width: 15px;
  height: 15px;
}

.kp-meth-name {
  flex: auto;
  min-width: 0;
}

.kp-mbadge {
  white-space: normal;
  border-radius: 4px;
  flex: none;
  padding: 1px 5px;
  font-size: 9px;
  line-height: 1.2;
}

.kp-mbadge.ok {
  color: #2b5e2b;
  background: #ddf3dd;
  border: 1px solid #8fcf8f;
}

.kp-mbadge.warn {
  color: #7a5a1e;
  background: #f6e9c9;
  border: 1px solid #d9b96b;
}

.kp-mbadge.risk {
  color: #9a2b1e;
  background: #f5d9d3;
  border: 1px solid #d99a8b;
}

.kp-methform {
  border: 1px solid var(--hair);
  border-radius: var(--r-sm);
  background: #f4f7fa;
  flex-direction: column;
  gap: 5px;
  margin-top: 8px;
  padding: 8px 10px;
  display: flex;
}

.kp-methform input[type="text"] {
  font: inherit;
  border: 1px solid var(--hair);
  background: var(--panel);
  color: var(--ink);
  border-radius: 5px;
  padding: 4px 6px;
  font-size: 12px;
}

.kp-mf-h {
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--muted);
  margin-top: 3px;
  font-size: 10.5px;
  font-weight: 600;
}

.kp-reqcard {
  background: #f0f8f0;
  border: 1px solid #8fcf8f;
  border-radius: 8px;
  margin-bottom: 12px;
  padding: 10px 12px;
  font-size: 12px;
  line-height: 1.45;
}

.kp-rc-h {
  justify-content: space-between;
  align-items: center;
  display: flex;
}

.kp-rc-title {
  color: #2b5e2b;
  font-weight: 600;
}

.kp-rc-toggle {
  cursor: pointer;
  color: var(--muted);
  font-size: 11px;
}

.kp-rc-toggle:hover {
  color: var(--plot);
}

.kp-rc-body {
  margin-top: 6px;
}

.kp-thumbs {
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 8px;
  display: flex;
}

.kp-thumb {
  object-fit: cover;
  border: 1px solid var(--hair);
  cursor: pointer;
  background: #e8ece8;
  border-radius: 5px;
  width: 120px;
  height: 150px;
}

.kp-thumb:hover {
  border-color: var(--plot);
}

.kp-rc-cap {
  color: var(--muted);
  margin-top: 6px;
  font-size: 10.5px;
}

.kp-rc-actions {
  align-items: center;
  gap: 10px;
  margin-top: 10px;
  display: flex;
}

.kp-confirm-btn {
  color: #fff;
  cursor: pointer;
  background: #2b5e2b;
  border: none;
  border-radius: 6px;
  padding: 6px 20px;
  font-size: 13px;
}

.kp-confirm-btn:hover {
  background: #1e4a1e;
}

.kp-preview-btn {
  background: var(--panel);
  color: var(--ink);
  border: 1px solid var(--hair);
  cursor: pointer;
  border-radius: 6px;
  padding: 6px 16px;
  font-size: 13px;
}

.kp-preview-btn:hover {
  border-color: var(--plot);
  color: var(--plot);
}

.kp-preview-link {
  color: var(--muted);
  cursor: pointer;
  background: none;
  border: none;
  margin-top: 8px;
  padding: 0;
  font-size: 11.5px;
  text-decoration: underline;
}

.kp-preview-link:hover {
  color: var(--plot);
}

.kp-preview-overlay {
  z-index: 9000;
  background: #00000073;
  justify-content: center;
  align-items: center;
  display: flex;
  position: fixed;
  inset: 0;
}

.kp-preview-modal {
  background: var(--paper);
  border-radius: 10px;
  flex-direction: column;
  width: 95vw;
  max-width: 1600px;
  max-height: 90vh;
  display: flex;
  overflow: hidden;
  box-shadow: 0 8px 32px #00000040;
}

.kp-preview-header {
  border-bottom: 1px solid var(--hair);
  justify-content: space-between;
  align-items: center;
  padding: 14px 20px;
  font-size: 15px;
  font-weight: 600;
  display: flex;
}

.kp-preview-header-actions {
  align-items: center;
  gap: 10px;
  display: flex;
}

.kp-preview-close {
  cursor: pointer;
  color: var(--muted);
  background: none;
  border: none;
  font-size: 22px;
  line-height: 1;
}

.kp-preview-close:hover {
  color: var(--ink);
}

.kp-preview-body {
  flex: 1;
  padding: 16px 20px;
  overflow-y: auto;
}

.kp-preview-body h4 {
  text-transform: uppercase;
  letter-spacing: .08em;
  color: var(--muted);
  margin: 16px 0 8px;
  font-size: 13px;
  font-weight: 600;
}

.kp-preview-body h4:first-child {
  margin-top: 0;
}

.kp-preview-tbl {
  border-collapse: collapse;
  width: 100%;
  margin-bottom: 16px;
  font-size: 12.5px;
}

.kp-preview-tbl th {
  text-align: left;
  background: var(--panel);
  border: 1px solid var(--hair);
  color: var(--muted);
  white-space: nowrap;
  padding: 6px 10px;
  font-size: 11.5px;
  font-weight: 600;
}

.kp-preview-tbl td {
  border: 1px solid var(--hair);
  vertical-align: top;
  padding: 6px 10px;
}

.kp-preview-tbl tr.empty td {
  background: #c832320a;
}

.kp-preview-tbl.obj td {
  white-space: nowrap;
}

.kp-preview-tbl.obj td:nth-child(2) {
  white-space: normal;
  min-width: 140px;
}

.kp-preview-scroll {
  overflow-x: auto;
}

.kp-pv-empty {
  color: var(--muted);
  font-style: italic;
}

.kp-pv-missing {
  color: #c0392b;
  font-size: 11.5px;
}

.kp-pv-input {
  border: 1px solid var(--hair);
  width: 100%;
  font: inherit;
  background: var(--paper);
  color: var(--ink);
  box-sizing: border-box;
  border-radius: 4px;
  min-width: 60px;
  padding: 3px 6px;
  font-size: 12px;
}

.kp-pv-input:focus {
  border-color: var(--plot);
  outline: none;
}

.kp-pv-textarea {
  resize: vertical;
  line-height: 1.4;
}

.kp-pv-input[type="number"] {
  width: 90px;
  min-width: 70px;
}

.kp-preview-tbl td:has(.kp-pv-input) {
  padding: 3px 4px;
}

.kp-imgov {
  z-index: 200;
  background: #141e2ddb;
  justify-content: center;
  align-items: center;
  display: flex;
  position: fixed;
  inset: 0;
}

.kp-imgov img {
  border-radius: 4px;
  max-width: 94%;
  max-height: 94%;
  box-shadow: 0 12px 40px #00000080;
}

.kp-imgov .kp-imgclose {
  color: #fff;
  cursor: pointer;
  background: none;
  border: none;
  font-size: 30px;
  position: absolute;
  top: 14px;
  right: 20px;
}

.kp-verlist {
  color: var(--muted);
  border: 1px solid var(--hair);
  background: #f4f7fa;
  border-radius: 5px;
  margin-top: 6px;
  padding: 6px 10px;
  font-size: 12px;
}

.kp-ver-item {
  cursor: pointer;
  border-radius: 3px;
  padding: 4px 6px;
}

.kp-ver-item:hover {
  background: var(--hair);
}

.kp-ver-item.active {
  color: var(--plot);
  font-weight: 600;
}

.kp-version-banner {
  color: #856404;
  background: #fff3cd;
  border: 1px solid #ffeaa7;
  border-radius: 6px;
  align-items: center;
  margin-bottom: 10px;
  padding: 8px 14px;
  font-size: 13px;
  display: flex;
}

.kp-res {
  border: 1px solid var(--hair);
  background: #fbfcfe;
  border-radius: 8px;
  margin-top: 8px;
  padding: 10px 12px;
}

.kp-res-frame {
  color: var(--muted);
  margin: 2px 0 10px;
  font-size: 11.5px;
  line-height: 1.45;
}

.kp-res-rates {
  color: var(--ink);
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 10px;
  margin-bottom: 8px;
  font-size: 12.5px;
  display: flex;
}

.kp-rate-s {
  width: 56px;
}

.kp-res-flags {
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 4px 14px;
  margin-bottom: 6px;
  display: flex;
}

.kp-res-fh {
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--muted);
  flex: 0 0 100%;
  font-size: 11px;
  font-weight: 700;
}

.kp-res-flag {
  color: var(--ink);
  align-items: center;
  gap: 5px;
  font-size: 12px;
  display: inline-flex;
}

.kp-res-hours {
  border: 1px solid var(--hair);
  background: #fff;
  border-radius: 6px;
  max-height: 340px;
  margin: 2px 0 4px;
  padding: 4px 8px;
  overflow: auto;
}

.kp-res-stg {
  color: var(--ink);
  border-top: 1px solid var(--hair);
  align-items: center;
  gap: 8px;
  padding: 4px 0;
  font-size: 12.5px;
  display: flex;
}

.kp-res-stg:first-child {
  border-top: none;
}

.kp-res-sn {
  color: var(--plot);
  text-align: right;
  flex: 0 0 22px;
  font-weight: 600;
}

.kp-res-snm {
  flex: 1;
  min-width: 0;
}

.kp-res-sh {
  text-align: right;
  font-variant-numeric: tabular-nums;
  color: var(--muted);
  flex: none;
}

.kp-res-pos {
  color: var(--muted);
  align-items: center;
  gap: 8px;
  padding: 1px 0 1px 30px;
  font-size: 11.5px;
  display: flex;
}

.kp-res-pc {
  color: var(--plot);
  flex: 0 0 46px;
}

.kp-res-pn {
  flex: 1;
  min-width: 0;
}

.kp-res-ph {
  text-align: right;
  font-variant-numeric: tabular-nums;
  flex: none;
}

.kp-res-cb {
  cursor: pointer;
  flex: none;
  margin: 0 2px 0 0;
}

.kp-res-stg.off, .kp-res-pos.off {
  color: #b9c0c8;
}

.kp-res-stg.off .kp-res-sh, .kp-res-pos.off .kp-res-ph {
  font-style: italic;
}

.kp-res-stg.off .kp-res-sn, .kp-res-pos.off .kp-res-pc {
  color: #c9ced4;
}

.kp-res-tot {
  color: var(--ink);
  margin-top: 8px;
  font-size: 12.5px;
  line-height: 1.5;
}

.kp-kd-btn {
  margin-top: 10px;
}

.kp-kd-rent {
  color: var(--muted);
  white-space: nowrap;
  flex: none;
  margin-right: 8px;
  font-size: 12px;
}

.kp-kd-edited {
  color: #8a6d3b;
  background: #fcf8e3;
  border: 1px solid #e3d9b8;
  border-radius: 3px;
  flex: none;
  padding: 0 4px;
  font-size: 9.5px;
}

.kp-kd-diff {
  max-height: 400px;
  margin: 10px 0;
  overflow-y: auto;
}

.kp-kd-diff table {
  border-collapse: collapse;
  width: 100%;
  font-size: 12px;
}

.kp-kd-diff th, .kp-kd-diff td {
  border: 1px solid var(--hair);
  text-align: left;
  padding: 3px 8px;
}

.kp-kd-diff th {
  background: var(--panel2, #f5f5f0);
  font-weight: 600;
}

.kp-kd-diff .old {
  color: #c0392b;
  text-decoration: line-through;
}

.kp-kd-diff .new {
  color: #2b7a2b;
  font-weight: 600;
}

.kp-budget-lbl {
  align-items: center;
  gap: 5px;
  display: flex;
}

.kp-budget {
  width: 128px;
}

.kp-delta {
  text-align: center;
  color: #2b6a2b;
  background: #e8f1e6;
  border: 1px solid #a9d3a0;
  border-radius: 8px;
  margin: 12px 0 6px;
  padding: 8px 12px;
  font-size: 13.5px;
  font-weight: 600;
}

.kp-delta.over {
  color: #9a2b1e;
  background: #f7e2dd;
  border-color: #e0a99b;
}

.kp-pult-delta {
  color: #2b6a2b;
  background: #e8f1e6;
  border-radius: 5px;
  margin-top: 4px;
  padding: 3px 6px;
  font-size: 11.5px;
  font-weight: 600;
}

.kp-pult-delta.over {
  color: #9a2b1e;
  background: #f7e2dd;
}

.kp-disc-row {
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 12px;
  margin: 8px 0 4px;
  font-size: 12.5px;
  display: flex;
}

.kp-disc-row label {
  align-items: center;
  gap: 5px;
  display: flex;
}

.kp-disc-note {
  color: var(--muted);
  font-size: 11px;
}

.kp-margin {
  color: #2b6a2b;
  background: #eef5ec;
  border: 1px solid #bedcb6;
  border-radius: 6px;
  flex: 0 0 100%;
  padding: 5px 9px;
  font-size: 12px;
  line-height: 1.45;
}

.kp-margin.neg {
  color: #9a2b1e;
  background: #f7e2dd;
  border-color: #e0a99b;
}

.kp-prov2 {
  color: var(--muted);
  margin-top: 6px;
  font-size: 11.5px;
}

.ird-doc-icon {
  opacity: .35;
  border-radius: 3px;
  flex-shrink: 0;
  margin-left: 4px;
  padding: 2px;
  line-height: 1;
  transition: opacity .15s, background .15s;
  cursor: default !important;
}

.ird-doc-icon svg {
  pointer-events: none;
}

.ird-doc-icon:hover {
  opacity: .85;
  background: var(--sel-bg, #e8f0fe);
}

.kp-fv-overlay {
  z-index: 9000;
  background: #00000080;
  justify-content: center;
  align-items: center;
  display: flex;
  position: fixed;
  inset: 0;
}

.kp-fv-modal {
  background: var(--paper);
  border-radius: 10px;
  flex-direction: column;
  width: 90vw;
  max-width: 1200px;
  height: 85vh;
  display: flex;
  overflow: hidden;
  box-shadow: 0 8px 32px #00000040;
}

.kp-fv-header {
  border-bottom: 1px solid var(--hair);
  flex: none;
  justify-content: space-between;
  align-items: center;
  padding: 12px 20px;
  display: flex;
}

.kp-fv-title {
  color: var(--ink);
  text-overflow: ellipsis;
  white-space: nowrap;
  flex: 1;
  min-width: 0;
  font-size: 14px;
  font-weight: 600;
  overflow: hidden;
}

.kp-fv-actions {
  flex: none;
  align-items: center;
  gap: 10px;
  display: flex;
}

.kp-fv-close {
  cursor: pointer;
  color: var(--muted);
  background: none;
  border: none;
  padding: 0 4px;
  font-size: 22px;
  line-height: 1;
}

.kp-fv-close:hover {
  color: var(--ink);
}

.kp-fv-body {
  flex: 1;
  min-height: 0;
  overflow: auto;
}

.kp-fv-pdf {
  border: none;
  width: 100%;
  height: 100%;
}

.kp-fv-text {
  white-space: pre-wrap;
  word-break: break-word;
  color: var(--ink);
  margin: 0;
  padding: 20px;
  font-family: inherit;
  font-size: 13px;
  line-height: 1.6;
}

.kp-fv-loading {
  text-align: center;
  color: var(--muted);
  padding: 40px;
  font-size: 14px;
}

.kp-fv-docx {
  color: var(--ink);
  max-width: 800px;
  margin: 0 auto;
  padding: 40px 60px;
  font-family: Segoe UI, system-ui, sans-serif;
  font-size: 14px;
  line-height: 1.7;
}

.kp-fv-docx h1 {
  margin: 24px 0 12px;
  font-size: 22px;
  font-weight: 700;
}

.kp-fv-docx h2 {
  margin: 20px 0 10px;
  font-size: 18px;
  font-weight: 700;
}

.kp-fv-docx h3 {
  margin: 16px 0 8px;
  font-size: 16px;
  font-weight: 600;
}

.kp-fv-docx p {
  margin: 0 0 10px;
}

.kp-fv-docx ul, .kp-fv-docx ol {
  margin: 0 0 10px;
  padding-left: 28px;
}

.kp-fv-docx li {
  margin: 0 0 4px;
}

.kp-fv-docx table {
  border-collapse: collapse;
  width: 100%;
  margin: 12px 0;
  font-size: 13px;
}

.kp-fv-docx th, .kp-fv-docx td {
  border: 1px solid var(--hair);
  text-align: left;
  padding: 6px 10px;
}

.kp-fv-docx th {
  background: var(--panel);
  font-weight: 600;
}

.kp-fv-docx strong, .kp-fv-docx b {
  font-weight: 700;
}

.kp-fv-docx em, .kp-fv-docx i {
  font-style: italic;
}

.kp-agentv {
  color: var(--muted);
  border-top: 1px dashed var(--hair);
  margin-top: 8px;
  padding-top: 6px;
  font-size: 11.5px;
  line-height: 1.45;
}

/* [project]/app/styles/login.css [app-client] (css) */
.login-wrap {
  background: linear-gradient(160deg,var(--paper) 0%,#e4eaf2 100%);
  justify-content: center;
  align-items: center;
  min-height: 100vh;
  padding: 16px;
  display: flex;
  position: relative;
}

.login-wrap:before {
  content: "";
  background-image: linear-gradient(var(--hair) 1px,transparent 1px),linear-gradient(90deg,var(--hair) 1px,transparent 1px);
  opacity: .25;
  pointer-events: none;
  background-size: 40px 40px;
  position: absolute;
  inset: 0;
}

.login-card {
  border: 1px solid var(--hair);
  border-radius: var(--r-lg);
  background: var(--panel);
  width: 100%;
  max-width: 320px;
  box-shadow: var(--sh-card);
  flex-direction: column;
  gap: 14px;
  padding: 32px 28px;
  display: flex;
  position: relative;
  overflow: hidden;
}

.login-card:before {
  content: "";
  background: linear-gradient(90deg,var(--plot),var(--build));
  height: 3px;
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
}

.login-logo {
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--build);
  font-size: 11px;
  font-weight: 600;
}

.login-title {
  color: var(--ink);
  margin: 0;
  font-size: 18px;
  font-weight: 650;
}

.login-input {
  font: inherit;
  border: 1px solid var(--hair);
  border-radius: var(--r-sm);
  background: var(--paper);
  color: var(--ink);
  transition: border-color var(--ease),box-shadow var(--ease);
  outline: none;
  padding: 10px 12px;
  font-size: 14px;
}

.login-input:focus {
  border-color: var(--plot);
  box-shadow: 0 0 0 3px #2b6cb01f;
}

.login-btn {
  font: inherit;
  border-radius: var(--r-sm);
  background: var(--plot);
  color: #fff;
  cursor: pointer;
  transition: background var(--ease),box-shadow var(--ease);
  border: none;
  padding: 10px;
  font-size: 14px;
  font-weight: 600;
}

.login-btn:hover {
  background: #245a8f;
  box-shadow: 0 2px 8px #2b6cb040;
}

.login-btn:active {
  box-shadow: none;
  transform: translateY(1px);
}

.login-btn:disabled {
  opacity: .6;
  cursor: default;
}

.login-error {
  color: #c0392b;
  margin: 0;
  font-size: 12px;
}

@media (max-width: 640px) {
  .login-card {
    padding: 24px 20px;
  }

  .login-title {
    font-size: 16px;
  }

  .login-input {
    padding: 9px 10px;
    font-size: 13px;
  }
}

@media (max-width: 420px) {
  .login-card {
    gap: 12px;
    padding: 20px 16px;
  }

  .login-logo {
    font-size: 10px;
  }

  .login-title {
    font-size: 15px;
  }
}

/* [project]/app/globals.css [app-client] (css) */


/*# sourceMappingURL=%5Broot-of-the-server%5D__022m39m._.css.map*/