Spaces:
Running
Running
| :root { | |
| --bg: #f4f1ea; | |
| --card: #fffef9; | |
| --ink: #18242d; | |
| --muted: #57646d; | |
| --accent: #dd5e2f; | |
| --accent-2: #0c7b73; | |
| --line: #d8d2c4; | |
| --shadow: 0 12px 30px rgba(0, 0, 0, 0.08); | |
| --radius: 14px; | |
| } | |
| * { | |
| box-sizing: border-box; | |
| } | |
| html, | |
| body { | |
| height: auto; | |
| min-height: 100%; | |
| overflow-y: scroll ; | |
| overflow-x: hidden; | |
| -webkit-overflow-scrolling: touch; | |
| scrollbar-gutter: stable both-edges; | |
| } | |
| body { | |
| margin: 0; | |
| font-family: "Avenir Next", "Gill Sans", "Trebuchet MS", sans-serif; | |
| color: var(--ink); | |
| background: radial-gradient(circle at 20% 10%, #fff6df, #f4f1ea 45%), | |
| linear-gradient(120deg, #f4f1ea, #ebf3ef); | |
| min-height: 100vh; | |
| } | |
| .bg-grid { | |
| position: fixed; | |
| inset: 0; | |
| background-image: linear-gradient(rgba(12, 123, 115, 0.07) 1px, transparent 1px), | |
| linear-gradient(90deg, rgba(12, 123, 115, 0.07) 1px, transparent 1px); | |
| background-size: 36px 36px; | |
| pointer-events: none; | |
| z-index: -1; | |
| } | |
| .container { | |
| width: min(1050px, 92vw); | |
| margin: 0 auto; | |
| padding: 28px 0 50px; | |
| } | |
| .top-nav { | |
| margin-bottom: 12px; | |
| } | |
| .top-nav a { | |
| text-decoration: none; | |
| color: var(--accent-2); | |
| font-weight: 700; | |
| } | |
| .hero { | |
| background: var(--card); | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius); | |
| padding: 28px; | |
| box-shadow: var(--shadow); | |
| } | |
| .hero.compact { | |
| padding: 22px 24px; | |
| } | |
| .eyebrow { | |
| margin: 0; | |
| text-transform: uppercase; | |
| letter-spacing: 1.8px; | |
| color: var(--accent); | |
| font-weight: 800; | |
| font-size: 12px; | |
| } | |
| h1 { | |
| margin: 10px 0 8px; | |
| font-size: clamp(1.8rem, 3vw, 2.8rem); | |
| } | |
| h2 { | |
| margin-top: 0; | |
| } | |
| p { | |
| margin: 0; | |
| line-height: 1.6; | |
| color: var(--muted); | |
| } | |
| .cards { | |
| margin-top: 20px; | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); | |
| gap: 16px; | |
| } | |
| .card { | |
| display: block; | |
| background: var(--card); | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius); | |
| padding: 20px; | |
| color: inherit; | |
| text-decoration: none; | |
| box-shadow: var(--shadow); | |
| transition: transform 0.2s ease; | |
| } | |
| .card:hover { | |
| transform: translateY(-4px); | |
| } | |
| .card span { | |
| display: inline-block; | |
| margin-top: 14px; | |
| color: var(--accent-2); | |
| font-weight: 700; | |
| } | |
| .panel { | |
| margin-top: 16px; | |
| background: var(--card); | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius); | |
| padding: 20px; | |
| box-shadow: var(--shadow); | |
| } | |
| .row { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 10px; | |
| align-items: center; | |
| margin-bottom: 14px; | |
| } | |
| label { | |
| font-weight: 700; | |
| min-width: 170px; | |
| } | |
| select, | |
| input, | |
| button { | |
| border-radius: 10px; | |
| border: 1px solid #c7c0b2; | |
| padding: 10px 12px; | |
| font-size: 0.96rem; | |
| } | |
| select, | |
| input { | |
| background: #fff; | |
| flex: 1; | |
| min-width: 220px; | |
| } | |
| button { | |
| background: var(--accent); | |
| color: #fff; | |
| border: none; | |
| font-weight: 700; | |
| cursor: pointer; | |
| transition: filter 0.15s ease; | |
| } | |
| button:hover { | |
| filter: brightness(0.94); | |
| } | |
| .operation-info { | |
| margin: 8px 0 14px; | |
| color: var(--muted); | |
| font-size: 0.95rem; | |
| } | |
| .shape-grid { | |
| display: grid; | |
| gap: 10px; | |
| } | |
| .shape-card { | |
| padding: 12px; | |
| border-radius: 12px; | |
| border: 1px solid var(--line); | |
| background: #fff; | |
| } | |
| .shape-card h3 { | |
| margin: 0 0 8px; | |
| font-size: 1rem; | |
| } | |
| .shape-card input { | |
| width: 100%; | |
| } | |
| .options-card { | |
| background: #fffaf1; | |
| } | |
| .inline-fields { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| margin-bottom: 8px; | |
| } | |
| .mini-label { | |
| min-width: 70px; | |
| font-weight: 700; | |
| } | |
| input[type="checkbox"] { | |
| width: 18px; | |
| height: 18px; | |
| min-width: 18px; | |
| flex: 0; | |
| } | |
| .code { | |
| margin: 0; | |
| padding: 14px; | |
| border-radius: 12px; | |
| background: #1c252e; | |
| color: #f3f0e6; | |
| overflow-x: auto; | |
| min-height: 120px; | |
| } | |
| .viz-grid { | |
| display: grid; | |
| gap: 14px; | |
| } | |
| .matrix-card { | |
| border: 1px solid var(--line); | |
| border-radius: 12px; | |
| padding: 12px; | |
| background: #fff; | |
| } | |
| .matrix-title { | |
| margin: 0 0 8px; | |
| font-weight: 700; | |
| } | |
| .shape-badge { | |
| display: inline-block; | |
| margin-left: 8px; | |
| color: #fff; | |
| background: var(--accent-2); | |
| border-radius: 999px; | |
| font-size: 0.8rem; | |
| padding: 2px 8px; | |
| } | |
| .matrix-table { | |
| border-collapse: collapse; | |
| width: max-content; | |
| max-width: 100%; | |
| margin-bottom: 10px; | |
| } | |
| .matrix-table td { | |
| border: 1px solid #ddd3c0; | |
| padding: 6px 9px; | |
| text-align: right; | |
| font-family: "Courier New", monospace; | |
| font-size: 0.9rem; | |
| background: #fdfbf5; | |
| } | |
| .matrix-table th { | |
| border: 1px solid #ddd3c0; | |
| padding: 6px 9px; | |
| text-align: right; | |
| font-family: "Courier New", monospace; | |
| font-size: 0.86rem; | |
| background: #f6efdf; | |
| } | |
| .matrix-pick-btn { | |
| width: 100%; | |
| border: 1px solid #ddd3c0; | |
| border-radius: 6px; | |
| padding: 5px 7px; | |
| background: #fff; | |
| color: var(--ink); | |
| font-family: "Courier New", monospace; | |
| font-weight: 700; | |
| } | |
| .matrix-pick-btn.active { | |
| background: var(--accent-2); | |
| color: #fff; | |
| border-color: var(--accent-2); | |
| } | |
| .hl-row { | |
| background: #fff1dc ; | |
| } | |
| .hl-col { | |
| background: #e7f7f4 ; | |
| } | |
| .hl-cell { | |
| background: #ddeafc ; | |
| font-weight: 800; | |
| } | |
| .slice-label { | |
| font-size: 0.85rem; | |
| color: var(--muted); | |
| margin: 6px 0; | |
| } | |
| .formula-line { | |
| margin: 4px 0; | |
| font-family: "Courier New", monospace; | |
| font-size: 0.9rem; | |
| color: #29333a; | |
| } | |
| .slider-row { | |
| display: grid; | |
| grid-template-columns: auto 1fr auto auto auto; | |
| gap: 10px; | |
| align-items: center; | |
| margin: 8px 0 10px; | |
| } | |
| .slider-row label { | |
| min-width: 36px; | |
| } | |
| .error { | |
| color: #a11634; | |
| font-weight: 700; | |
| } | |
| .two-col-row { | |
| align-items: flex-end; | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); | |
| gap: 12px; | |
| } | |
| .control-group { | |
| display: grid; | |
| gap: 6px; | |
| } | |
| .control-group label { | |
| min-width: 0; | |
| } | |
| .gd-slider-row { | |
| grid-template-columns: auto 1fr auto auto auto; | |
| } | |
| #fitCanvas, | |
| #costCanvas { | |
| width: 100%; | |
| border: 1px solid var(--line); | |
| border-radius: 12px; | |
| background: #fff; | |
| } | |
| .landscape-summary { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); | |
| gap: 10px; | |
| margin: 6px 0 12px; | |
| } | |
| .landscape-pill { | |
| border: 1px solid var(--line); | |
| border-radius: 10px; | |
| padding: 8px 10px; | |
| background: #fff; | |
| font-size: 0.9rem; | |
| color: #24323a; | |
| } | |
| .landscape-controls { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 8px; | |
| margin-bottom: 10px; | |
| } | |
| .viz-btn { | |
| padding: 8px 12px; | |
| border-radius: 9px; | |
| border: 1px solid #c7c0b2; | |
| background: #fff; | |
| color: #24323a; | |
| } | |
| .viz-btn:hover { | |
| border-color: var(--accent-2); | |
| } | |
| .landscape-controls.toggles { | |
| margin-bottom: 12px; | |
| } | |
| .viz-toggle { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 8px; | |
| min-width: 0; | |
| font-weight: 600; | |
| border: 1px solid var(--line); | |
| border-radius: 999px; | |
| padding: 6px 10px; | |
| background: #fff; | |
| } | |
| .viz-toggle input { | |
| margin: 0; | |
| } | |
| .landscape-plot-wrap { | |
| width: min(100%, 980px); | |
| height: 620px; | |
| min-width: 320px; | |
| min-height: 320px; | |
| max-width: 1400px; | |
| max-height: 900px; | |
| overflow: hidden; | |
| border: 1px solid var(--line); | |
| border-radius: 12px; | |
| background: #fff; | |
| position: relative; | |
| contain: layout size paint; | |
| min-inline-size: 0; | |
| min-block-size: 0; | |
| } | |
| .landscape-plot { | |
| width: 100%; | |
| height: 100%; | |
| display: block; | |
| overflow: hidden; | |
| min-width: 0; | |
| min-height: 0; | |
| } | |
| .landscape-plot-wrap:fullscreen { | |
| width: 100vw ; | |
| height: 100vh ; | |
| max-width: none; | |
| max-height: none; | |
| border-radius: 0; | |
| border-width: 0; | |
| } | |
| .log-wrap { | |
| overflow: auto; | |
| border: 1px solid var(--line); | |
| border-radius: 12px; | |
| } | |
| .gd-log-table { | |
| border-collapse: collapse; | |
| width: 100%; | |
| min-width: 800px; | |
| font-family: "Courier New", monospace; | |
| font-size: 0.88rem; | |
| } | |
| .gd-log-table th, | |
| .gd-log-table td { | |
| border-bottom: 1px solid #e6dfd2; | |
| padding: 8px 10px; | |
| text-align: left; | |
| white-space: nowrap; | |
| } | |
| .gd-log-table th { | |
| position: sticky; | |
| top: 0; | |
| background: #faf6eb; | |
| z-index: 1; | |
| } | |
| .active-log-row td { | |
| background: #eef8f6; | |
| } | |
| @media (max-width: 680px) { | |
| .container { | |
| width: 94vw; | |
| padding-top: 18px; | |
| } | |
| label { | |
| min-width: 100%; | |
| } | |
| .row { | |
| margin-bottom: 10px; | |
| } | |
| .slider-row { | |
| grid-template-columns: 1fr; | |
| } | |
| .slider-row label { | |
| min-width: 0; | |
| } | |
| .gd-slider-row { | |
| grid-template-columns: 1fr; | |
| } | |
| .landscape-plot-wrap { | |
| width: 100%; | |
| height: 420px; | |
| min-height: 280px; | |
| } | |
| } | |