/* Varv: business portal, owner requests, yard directory. Loaded by varvPage() (worker/src/varv-model.js).
   Uses brygga.css tokens only. Class vocabulary is the contract for every varv-*.js module. */
.varv{padding-bottom:var(--space-7)}
.varv-head{margin:var(--space-5) 0 var(--space-4)}
.varv-head h1{margin:0 0 var(--space-3)}
.varv-tabs{display:flex;flex-wrap:wrap;gap:var(--space-2);margin:0 0 var(--space-5);padding:0;border-bottom:1px solid var(--rule)}
.varv-tabs a{padding:var(--space-2) var(--space-3);color:var(--ink-2);text-decoration:none;border-bottom:3px solid transparent;margin-bottom:-1px}
.varv-tabs a[aria-current="page"]{color:var(--navy);border-bottom-color:var(--navy);font-weight:600}
.varv-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:var(--space-4)}
.varv-card{display:block;padding:var(--space-4);border:1px solid var(--rule);border-radius:var(--radius);background:var(--white);color:inherit;text-decoration:none}
a.varv-card:hover{border-color:var(--navy)}
.varv-card h2,.varv-card h3{margin:0 0 var(--space-2);font-size:var(--fs-h3)}
.varv-card p{margin:0 0 var(--space-2)}
.varv-meta{color:var(--ink-2);font-size:var(--fs-small)}
.varv-stat{display:flex;flex-wrap:wrap;gap:var(--space-4);margin:0 0 var(--space-5);padding:0;list-style:none}
.varv-stat li{min-width:140px;padding:var(--space-3) var(--space-4);border:1px solid var(--rule);border-radius:var(--radius);background:var(--white)}
.varv-stat b{display:block;font-size:var(--fs-h2);color:var(--navy)}
.varv-section{margin:0 0 var(--space-6)}
.varv-section>h2{margin:0 0 var(--space-3)}
.varv-table{width:100%;border-collapse:collapse;background:var(--white)}
.varv-table th,.varv-table td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--rule-soft);text-align:left;vertical-align:top}
.varv-table th{font-size:var(--fs-small);color:var(--ink-2);font-weight:600}
.varv-table td.num,.varv-table th.num{text-align:right;font-variant-numeric:tabular-nums}
.varv-scroll{overflow-x:auto}
.varv-form{display:grid;gap:var(--space-3);max-width:720px}
.varv-form label{display:grid;gap:var(--space-1);font-weight:600}
.varv-form input,.varv-form select,.varv-form textarea{font:inherit;padding:var(--space-2) var(--space-3);border:1px solid var(--rule);border-radius:var(--radius);background:var(--white);color:var(--ink)}
.varv-form textarea{min-height:120px}
.varv-form small{font-weight:400;color:var(--ink-2)}
.varv-form fieldset{border:1px solid var(--rule);border-radius:var(--radius);padding:var(--space-3) var(--space-4)}
.varv-form legend{font-weight:600;padding:0 var(--space-1)}
.varv-checks{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:var(--space-2)}
.varv-checks label{display:flex;gap:var(--space-2);align-items:flex-start;font-weight:400}
.varv-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,160px),1fr));gap:var(--space-3);align-items:end}
.varv-row>button{justify-self:start}
.varv-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center}
.varv-actions form{margin:0}
.varv-chip{display:inline-block;padding:2px 10px;border-radius:var(--radius-pill);font-size:var(--fs-small);background:var(--rule-soft);color:var(--ink);white-space:nowrap}
.varv-chip--new,.varv-chip--open,.varv-chip--pending,.varv-chip--bokad,.varv-chip--erbjuden{background:var(--yellow)}
.varv-chip--quoted,.varv-chip--sent,.varv-chip--pagar,.varv-chip--mottagen,.varv-chip--aktiv{background:var(--sky)}
.varv-chip--vantar{background:var(--orange);color:var(--white)}
.varv-chip--won,.varv-chip--accepted,.varv-chip--klar,.varv-chip--levererad,.varv-chip--verified,.varv-chip--tilldelad,.varv-chip--ja{background:var(--mint)}
.varv-chip--declined,.varv-chip--lost,.varv-chip--cancelled,.varv-chip--expired,.varv-chip--avbruten,.varv-chip--rejected,.varv-chip--fullt,.varv-chip--inaktiv{background:var(--rule);color:var(--ink-2)}
.varv-board{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(220px,1fr);gap:var(--space-3);overflow-x:auto;padding-bottom:var(--space-2)}
.varv-col{background:var(--paper);border:1px solid var(--rule-soft);border-radius:var(--radius);padding:var(--space-3);min-height:120px}
.varv-col h3{margin:0 0 var(--space-3);font-size:var(--fs-body)}
.varv-col .varv-card{padding:var(--space-3);margin-bottom:var(--space-2)}
.varv-thread{display:grid;gap:var(--space-2);margin:0 0 var(--space-3);padding:0;list-style:none}
.varv-thread li{max-width:80%;padding:var(--space-2) var(--space-3);border-radius:var(--radius);background:var(--rule-soft)}
.varv-thread li.mine{justify-self:end;background:var(--sky)}
.varv-thread time{display:block;font-size:var(--fs-small);color:var(--ink-2)}
.varv-compare{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:var(--space-4)}
.varv-compare .varv-card.best{border-color:var(--navy);border-width:2px}
.varv-price{font-size:var(--fs-h2);font-weight:700;color:var(--navy);margin:0}
.varv-timeline{margin:0;padding:0 0 0 var(--space-4);border-left:2px solid var(--rule)}
.varv-timeline li{list-style:none;margin:0 0 var(--space-3);position:relative}
.varv-timeline li::before{content:"";position:absolute;left:calc(-1 * var(--space-4) - 6px);top:6px;width:10px;height:10px;border-radius:50%;background:var(--navy)}
.varv-cal{display:grid;gap:var(--space-3)}
.varv-day h3{margin:0 0 var(--space-2);font-size:var(--fs-body)}
.varv-slot{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);align-items:center;justify-content:space-between;padding:var(--space-3);border:1px solid var(--rule);border-radius:var(--radius);background:var(--white)}
.varv-slot.full{opacity:.7}
.varv-meter{display:inline-block;width:120px;height:8px;border-radius:4px;background:var(--rule-soft);overflow:hidden;vertical-align:middle}
.varv-meter i{display:block;height:100%;background:var(--navy)}
.varv-note{padding:var(--space-3) var(--space-4);border-left:4px solid var(--yellow);background:var(--paper);margin:0 0 var(--space-4)}
.varv-empty{color:var(--ink-2);padding:var(--space-4);border:1px dashed var(--rule);border-radius:var(--radius);text-align:center}
.varv-stars{color:var(--orange);letter-spacing:2px}
.varv-cta{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center;margin:var(--space-4) 0}
.varv-block{margin:var(--space-6) 0;padding:var(--space-4) var(--space-5);border:1px solid var(--rule);border-radius:var(--radius);background:var(--white)}
.varv-table th[scope="row"]{font-size:var(--fs-body);color:var(--ink);font-weight:400}
.varv-table .varv-price{font-size:var(--fs-body);font-weight:600;text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.varv-table tr:last-child th.varv-price{font-size:var(--fs-h3)}
.varv-table tr:last-child th{color:var(--ink);font-size:var(--fs-body)}
dl.varv-meta{display:grid;grid-template-columns:max-content 1fr;gap:var(--space-1) var(--space-4);margin:0 0 var(--space-3)}
dl.varv-meta dt{font-weight:600;color:var(--ink-2)}
dl.varv-meta dd{margin:0;color:var(--ink)}
/* Klubb: member, contract, invoice and duty states; flash messages; logs; invoice print. */
.varv-chip--sokande,.varv-chip--ansokt,.varv-chip--obetald,.varv-chip--byte,.varv-chip--kanske{background:var(--yellow)}
.varv-chip--fast,.varv-chip--sasong,.varv-chip--delbetald{background:var(--sky)}
.varv-chip--betald,.varv-chip--utford{background:var(--mint)}
.varv-chip--forfallen,.varv-chip--uteblev{background:var(--orange);color:var(--white)}
.varv-chip--andrahand,.varv-chip--vilande{background:var(--paper);border:1px solid var(--rule)}
.varv-chip--uttradd,.varv-chip--nekad,.varv-chip--uppsagd,.varv-chip--avslutad,.varv-chip--makulerad,.varv-chip--avbokad,.varv-chip--nej{background:var(--rule);color:var(--ink-2)}
.varv-flash{padding:var(--space-3) var(--space-4);border-left:4px solid var(--mint);background:var(--paper);margin:0 0 var(--space-4)}
.varv-flash--fel{border-left-color:var(--orange)}
.varv-log{list-style:none;margin:0;padding:0;font-size:var(--fs-small);color:var(--ink-2)}
.varv-log li{padding:var(--space-1) 0;border-bottom:1px solid var(--rule-soft)}
.varv-qr svg{width:160px;height:160px;display:block}
@media print{.varv-invoice{border:0;padding:0}.varv-invoice .btn{display:none}}
@media print{.varv-tabs,.varv-actions,.breadcrumbs,header.site,footer{display:none!important}.varv-slot{break-inside:avoid}}
@media(max-width:650px){.varv-board{grid-auto-flow:row;grid-auto-columns:auto}.varv-thread li{max-width:100%}}
