/* Shared styles. tokens.css owns identity; home.css owns the homepage composition. */
/* Reset and document */
* {
  box-sizing:border-box;
}
/* Document behavior */
html {
  scroll-behavior:smooth;
  scroll-padding-top:var(--space-lg);
  scrollbar-color:var(--muted) var(--canvas);
}
body {
  margin:0;
  color:var(--ink);
  background:var(--canvas);
  font-family:var(--font);
  font-size:var(--text-body);
  line-height:1.6;
}
::selection {
  background:#bedee7;
  color:var(--ink);
}
/* Native inputs */
input,textarea {
  caret-color:var(--accent);
}
/* Editorial input */
textarea {
  width:100%;
  padding:10px var(--space-sm);
  border:1px solid var(--field-border);
  border-radius:var(--radius-sm);
  font:inherit;
  resize:vertical;
}
.editorial-row {
  padding:var(--space-lg) 0;
  border-bottom:1px solid var(--line);
}
.editorial-row form {
  display:flex;
  flex-wrap:wrap;
  gap:var(--space-xs);
}
.reading {
  overflow-wrap:anywhere;
  max-width:760px;
  margin:20px auto;
}
.reading h2,.reading h3 {
  margin-top:var(--space-xl);
}
.reading pre {
  overflow:auto;
}
[hidden] {
  display:none!important;
}
/* Typography and links */
a {
  color:var(--accent);
  text-underline-offset:.22em;
}
a:hover {
  color:var(--accent-dark);
}
h1,h2,h3,p {
  margin-top:0;
}
h1,h2,h3 {
  line-height:1.16;
  text-wrap:balance;
}
h1 {
  font-size:clamp(2rem,4.5vw,3.6rem);
  letter-spacing:-.035em;
  font-weight:var(--weight-heading);
  margin-bottom:var(--space-lg);
}
h2 {
  font-size:var(--text-title);
  letter-spacing:-.02em;
  margin-bottom:var(--space-md);
  font-weight:var(--weight-heading);
}
h3 {
  font-size:1.1rem;
  margin-bottom:var(--space-sm);
}
p {
  max-width:72ch;
  margin-bottom:20px;
}
.lead {
  font-size:1.2rem;
  color:var(--muted);
  max-width:54ch;
}
.fine-print {
  font-size:var(--text-small);
  color:var(--muted);
}
:focus-visible {
  outline:3px solid var(--accent);
  outline-offset:4px;
}
/* Shared navigation and shell */
.skip-link {
  position:absolute;
  top:-100px;
  left:16px;
  z-index:10;
  background:var(--paper);
  padding:var(--space-sm);
}
.skip-link:focus {
  top:10px;
}
.site-header {
  background:var(--paper);
  border-bottom:1px solid var(--line);
  border-color:#e4f0f6;
}
.header-inner {
  max-width:1440px;
  margin:auto;
  min-height:76px;
  padding:14px var(--space-2xl);
  display:flex;
  align-items:center;
  gap:56px;
}
.brand {
  display:inline-flex;
  align-items:center;
  gap:10px;
  color:var(--ink);
  font-size:1.8rem;
  font-weight:var(--weight-heading);
  text-decoration:none;
  letter-spacing:-.04em;
}
.brand span {
  color:var(--brand);
  margin-left:-10px;
}
.site-header nav {
  display:flex;
  gap:var(--space-xl);
  align-items:center;
  flex:1;
}
.site-header nav a {
  color:var(--ink);
  font-size:.9rem;
  text-decoration:none;
  padding:var(--space-xs) 0;
  font-weight:600;
  min-height:44px;
  display:flex;
  align-items:center;
}
.site-header nav a:hover {
  text-decoration:underline;
}
.review-label {
  color:var(--muted);
  font-size:var(--text-caption);
}
.page {
  max-width:1280px;
  margin:0 auto;
  padding:52px var(--space-2xl) 80px;
}
.page-heading {
  max-width:850px;
  margin-bottom:var(--space-xl);
}
/* Actions */
.button,button,.secondary-button {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:var(--space-lg);
  min-height:48px;
  border:1px solid var(--accent);
  border-radius:var(--radius);
  padding:11px 22px;
  background:linear-gradient(115deg,var(--button-start),var(--button-end));
  color:var(--paper);
  font:600 1rem/1.4 var(--font);
  text-decoration:none;
  cursor:pointer;
  transition:background-color var(--motion-fast) var(--ease),box-shadow var(--motion-fast) var(--ease);
}
.button:hover,button:hover {
  background:linear-gradient(115deg,var(--button-hover-start),var(--button-hover-end));
  color:var(--paper);
}
.button:disabled,button:disabled {
  opacity:.6;
  cursor:wait;
}
.secondary-button,.small-button {
  background:var(--paper);
  color:var(--accent);
}
.secondary-button:hover,.small-button:hover {
  background:var(--soft);
  color:var(--accent-dark);
}
.small-button {
  font-size:.85rem;
  padding:var(--space-xs) var(--space-sm);
  min-height:40px;
}
.text-link {
  display:block;
  margin-top:18px;
  font-size:.95rem;
}
.plain-section {
  margin-top:56px;
}
.notice,.demo-notice {
  padding:18px var(--space-lg);
  background:var(--warn-bg);
  color:var(--warn);
  border-radius:var(--radius);
  margin-bottom:var(--space-lg);
  max-width:none;
}
.demo-notice {
  background:var(--soft);
  color:var(--ink);
}
/* Tool layout */
.workspace {
  display:grid;
  grid-template-columns:minmax(0,1fr) 260px;
  gap:var(--space-2xl);
  margin-top:var(--space-xl);
}
.workspace-main {
  min-width:0;
}
.workspace-aside {
  color:var(--muted);
  font-size:.95rem;
}
.aside-content {
  position:sticky;
  top:24px;
}
.workspace-aside h2 {
  font-size:1.25rem;
  color:var(--ink);
}
.workspace-aside hr {
  border:0;
  border-top:1px solid var(--line);
  margin:28px 0;
}
/* Forms and validation */
.field-with-action {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:var(--space-xs);
}
.field-with-action > input {
  grid-column:1;
  grid-row:1;
}
.field-with-action > .field-validation-error {
  grid-column:1/-1;
}
.field-with-action > .icon-button {
  grid-column:2;
  grid-row:1;
  width:46px;
  min-height:46px;
  padding:var(--space-xs);
  display:grid;
  place-items:center;
}
.form-section {
  padding:var(--space-xl);
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:var(--radius);
  margin-bottom:var(--space-lg);
}
.form-section>p {
  color:var(--muted);
  font-size:.95rem;
}
.section-title {
  display:flex;
  gap:var(--space-md);
  justify-content:space-between;
  align-items:start;
}
.fields {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:22px var(--space-lg);
}
.fields .wide {
  grid-column:1/-1;
}
label {
  display:block;
  font-weight:600;
  font-size:.9rem;
  line-height:1.4;
  margin-bottom:var(--space-xs);
}
input,select {
  width:100%;
  min-height:46px;
  border:1px solid var(--field-border);
  border-radius:var(--radius-sm);
  background:var(--paper);
  color:var(--ink);
  padding:10px var(--space-sm);
  font:1rem var(--font);
}
select {
  padding-right:28px;
}
input[type=file] {
  font-size:.85rem;
  padding:var(--space-xs);
  max-width:100%;
}
input[type=checkbox] {
  width:20px;
  min-height:20px;
  flex-shrink:0;
  accent-color:var(--accent);
  margin:2px 0 0;
}
.check-label {
  display:flex;
  gap:var(--space-sm);
  font-weight:400;
  margin:var(--space-lg) 0 0;
  color:var(--muted);
}
details {
  border-top:1px solid var(--line);
  margin-top:var(--space-lg);
  padding-top:var(--space-md);
}
summary {
  cursor:pointer;
  color:var(--accent);
  font-weight:600;
  padding:4px 0;
  min-height:36px;
}
details[open] summary {
  margin-bottom:var(--space-md);
}
details p {
  font-size:.9rem;
  color:var(--muted);
}
.submit-row {
  display:flex;
  gap:var(--space-lg);
  align-items:center;
  margin-bottom:var(--space-2xl);
}
.submit-row span {
  font-size:var(--text-small);
  color:var(--muted);
}
.validation:empty,.validation-summary-valid {
  display:none;
}
.validation {
  background:var(--error-bg);
  border:1px solid var(--error);
  border-radius:var(--radius);
  padding:var(--space-md) var(--space-lg);
  color:var(--error);
  margin-bottom:var(--space-lg);
}
.validation ul {
  margin:0;
  padding-left:20px;
}
.input-validation-error {
  border:2px solid var(--error);
}
.field-validation-error {
  display:block;
  color:var(--error);
  margin-block:var(--space-xs);
  overflow-wrap:anywhere;
}
/* Results and tables */
.results {
  padding-top:var(--space-xl);
  border-top:3px solid var(--accent);
  animation:result-in .3s ease-out;
}
.table-scroll {
  overflow-x:auto;
  border:1px solid var(--line);
  border-radius:var(--radius);
  background:var(--paper);
  margin:var(--space-lg) 0 var(--space-md);
}
table {
  border-collapse:collapse;
  width:100%;
  font-variant-numeric:tabular-nums;
  font-size:.95rem;
}
caption {
  text-align:left;
  padding:var(--space-md) 20px;
  color:var(--muted);
  font-size:var(--text-small);
}
th,td {
  padding:14px 20px;
  text-align:right;
  border-bottom:1px solid var(--line);
  vertical-align:top;
  min-width:135px;
}
th:first-child {
  text-align:left;
  min-width:190px;
}
thead {
  background:var(--soft);
}
thead th {
  font-weight:var(--weight-heading);
}
tbody th {
  font-weight:400;
}
.subtotal {
  background:var(--soft);
  font-weight:700;
}
.subtotal th {
  font-weight:700;
}
.local-controls {
  display:grid;
  gap:var(--space-sm);
}
.local-controls label {
  margin:4px 0 0;
}
.local-controls button {
  width:100%;
}
.saved-list {
  list-style:none;
  padding:0;
  margin:4px 0;
}
.saved-list li {
  border-bottom:1px solid var(--line);
  padding:var(--space-sm) 0;
}
.saved-list strong {
  display:block;
  overflow-wrap:anywhere;
  margin-bottom:var(--space-xs);
}
.saved-actions {
  display:flex;
  gap:6px;
  flex-wrap:wrap;
}
.saved-actions button {
  width:auto;
  font-size:var(--text-caption);
  padding:6px;
  min-height:36px;
}
/* Price filters and empty states */
.filter-bar {
  display:flex;
  flex-wrap:wrap;
  align-items:end;
  gap:var(--space-lg);
  background:var(--paper);
  padding:var(--space-lg);
  border:1px solid var(--line);
  border-radius:var(--radius);
  margin-bottom:var(--space-xl);
}
.filter-bar>div {
  flex:1;
  min-width:180px;
}
.empty-state {
  background:var(--paper);
  border:1px solid var(--line);
  padding:48px;
  border-radius:var(--radius);
}
.empty-state h2 {
  max-width:650px;
  font-size:1.9rem;
}
.status-label {
  display:inline-block;
  background:var(--warn-bg);
  color:var(--warn);
  font-size:var(--text-small);
  font-weight:600;
  padding:5px 10px;
  border-radius:var(--radius-sm);
  margin-bottom:20px;
}
.facts {
  margin:var(--space-xl) 0;
  display:grid;
  gap:var(--space-md);
}
.facts>div {
  display:grid;
  grid-template-columns:220px 1fr;
  gap:20px;
  border-bottom:1px solid var(--line);
  padding-bottom:var(--space-sm);
}
.facts dt {
  color:var(--muted);
}
.facts dd {
  margin:0;
}
.reading h2 {
  margin-top:var(--space-2xl);
}
/* Footer */
.site-footer {
  max-width:1360px;
  margin:auto;
  border-top:1px solid var(--line);
  padding:28px 0;
  display:flex;
  justify-content:space-between;
  gap:var(--space-xl);
  color:var(--muted);
  font-size:var(--text-caption);
}
.site-footer .brand {
  font-size:1.2rem;
}
.site-footer p {
  margin-top:var(--space-xs);
}
.site-footer>div:last-child {
  display:flex;
  flex-direction:column;
  align-items:end;
  gap:var(--space-xs);
}
/* Shared price summaries and simulator layout */
.home-heading {
  max-width:100%;
  margin-bottom:var(--space-xl);
}
.home-heading h1 {
  font-size:clamp(2.2rem,4vw,3.4rem);
  margin-bottom:var(--space-md);
}
.simulator-intro {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:48px;
  padding:var(--space-2xl) 0 0;
}
.simulator-intro p:last-child {
  margin-bottom:0;
}
.home-news {
  margin-top:48px;
  padding-top:var(--space-xl);
  border-top:1px solid var(--line);
}
.home-news .section-title {
  flex-wrap:wrap;
}
.day-navigation {
  display:flex;
  flex-wrap:wrap;
  gap:var(--space-xs);
  margin:0 0 var(--space-lg);
}
.day-navigation a {
  min-width:52px;
  padding:9px var(--space-sm);
  border:1px solid var(--line);
  text-align:center;
  border-radius:var(--radius-sm);
  text-decoration:none;
  background:var(--paper);
}
.day-navigation a[aria-current=date],
.day-navigation a[aria-current=page] {
  background:var(--accent);
  color:var(--paper);
  border-color:var(--accent);
}
.simulator-workspace {
  display:block;
  max-width:900px;
  margin:var(--space-lg) auto 0;
}
.simulator-workspace .form-section {
  padding:var(--space-lg);
  margin-bottom:20px;
}
.simulator-workspace .fields {
  gap:var(--space-md) var(--space-lg);
}
.simulator-workspace details {
  margin-top:var(--space-md);
  padding-top:var(--space-sm);
}
.simulator-workspace .aside-content {
  position:static;
}
.simulator-workspace .workspace-aside {
  margin-top:var(--space-xl);
}
.offer-actions {
  display:flex;
  flex-wrap:wrap;
  gap:var(--space-xs);
  margin-bottom:var(--space-sm);
}
.add-offer-row {
  display:flex;
  gap:20px;
  align-items:center;
  margin:0 0 var(--space-lg);
}
.add-offer-row span {
  font-size:var(--text-small);
  color:var(--muted);
}
/* Secondary pill actions */
.pill-link {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  min-height:44px;
  padding:10px 18px;
  border-radius:var(--radius-pill);
  background:#eff6fc;
  font-size:.8rem;
  font-weight:700;
  text-decoration:none;
}
.pill-link svg {
  width:18px;
  height:18px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.8;
}
.pill-link:hover {
  background:#dfeff8;
  color:var(--accent-dark);
}
/* Prominent invitation */
.button-prominent {
  font-weight:var(--weight-heading);
  border:0;
  border-radius:18px;
  box-shadow:var(--shadow-action);
  min-height:54px;
  font-size:1.05rem;
  padding:14px var(--space-lg);
}
.button-prominent:hover {
  box-shadow:var(--shadow-action-hover);
}
.button svg {
  width:24px;
  height:24px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.8;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.form-section,.empty-state {
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow-panel);
}
:disabled {
  cursor:not-allowed;
}
@keyframes result-in {
from {
    box-shadow:var(--shadow-panel);
}
to {
  box-shadow:0 0 0 transparent;
}
}
@media(max-width:1000px) {
.header-inner {
  gap:var(--space-lg);
}
.review-label {
  display:none;
}
.workspace {
  grid-template-columns:minmax(0,1fr) 220px;
  gap:var(--space-lg);
}
.form-section {
  padding:var(--space-lg);
}
.site-footer {
  margin:0 var(--space-2xl);
}
}
@media(max-width:760px) {
.header-inner {
  padding:18px 20px;
  flex-wrap:wrap;
  gap:var(--space-sm);
}
.site-header nav {
  width:100%;
  flex-basis:100%;
  gap:var(--space-lg);
  flex-wrap:wrap;
}
.site-header nav a {
  font-size:var(--text-small);
}
.page {
  padding:var(--space-xl) 20px 48px;
}
.workspace {
  grid-template-columns:1fr;
}
.workspace-aside {
  border-top:1px solid var(--line);
  padding-top:var(--space-lg);
}
.aside-content {
  position:static;
}
.fields {
  grid-template-columns:1fr;
  gap:20px;
}
.section-title {
  display:block;
}
.section-title .small-button {
  margin-bottom:var(--space-md);
}
.form-section {
  padding:var(--space-lg) 20px;
}
.submit-row {
  align-items:stretch;
  flex-direction:column;
  gap:var(--space-sm);
}
.notice,.demo-notice {
  padding:var(--space-md);
}
.empty-state {
  padding:28px var(--space-lg);
}
.empty-state h2 {
  font-size:1.55rem;
}
.facts>div {
  grid-template-columns:1fr;
  gap:4px;
}
.site-footer {
  margin:0 20px;
  display:block;
}
.site-footer>div:last-child {
  align-items:start;
  margin-top:var(--space-lg);
}
.table-scroll th,.table-scroll td {
  padding:var(--space-sm);
  min-width:120px;
}
.table-scroll th:first-child {
  min-width:155px;
}
.page-heading h1 {
  font-size:2.3rem;
}
.filter-bar {
  padding:20px;
}
.filter-bar button {
  width:100%;
}
.simulator-intro {
  grid-template-columns:1fr;
  gap:var(--space-lg);
}
.add-offer-row {
  align-items:stretch;
  flex-direction:column;
  gap:var(--space-sm);
}
.simulator-workspace .form-section {
  padding:20px;
}
}
@media(prefers-reduced-motion:reduce) {
html {
  scroll-behavior:auto;
}
*,*::before,*::after {
  animation:none!important;
  transition:none!important;
}
}
@media(max-width:1150px) {
.header-inner {
  gap:36px;
}
}
@media(max-width:900px) {
.header-inner {
  padding:var(--space-sm) var(--space-lg);
  gap:30px;
}
.site-header nav {
  gap:20px;
}
}
@media(max-width:600px) {
.header-inner {
  padding:var(--space-sm) 20px 0;
  gap:5px;
  min-height:initial;
}
.brand {
  font-size:1.55rem;
}
.brand img {
  width:34px;
  height:34px;
}
.site-header nav {
  flex-wrap:wrap;
  justify-content:space-between;
  gap:0 var(--space-md);
}
.site-header nav a {
  font-size:.78rem;
  padding:10px 0;
}
.site-footer {
  margin:0 20px;
  font-size:.7rem;
}
}

.simulator-workspace .form-section > h3 {
  margin-top:var(--space-lg);
  margin-bottom:var(--space-sm);
}
