:root{--sans:Geist,"Segoe UI",Aptos,sans-serif;--ink:#122238;--orange:#f2673a;--orange-text:#b9461a;--orange-fill:#c4471c;--paper:#f5f3ee;--line:#dce1e6;--muted:#556274;--green:#25745c;--purple:#6d4b91}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--paper);font-family:Geist,"Segoe UI",Aptos,sans-serif;font-size:16px}button,input,select,textarea{font:inherit}[hidden]{display:none!important}main{width:min(1240px,calc(100% - 48px));margin:auto;padding-bottom:64px;line-height:1.5}.owner-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:30px;padding:34px 0 24px}.owner-hero small{color:var(--orange-text);font-size:13px;font-weight:800;letter-spacing:.08em}.owner-hero h1{margin:10px 0 12px;font:400 clamp(34px,3.4vw,50px)/1.1 Georgia,serif;letter-spacing:-.03em}.owner-hero h1 em{color:var(--orange);font-weight:400}.owner-hero p{max-width:70ch;margin:0;color:var(--muted);font-size:16px;line-height:1.6}.portfolio-count{display:flex;align-items:center;gap:14px;flex:0 0 auto}.portfolio-count strong{font:700 56px/1 var(--sans);font-variant-numeric:tabular-nums;letter-spacing:-.02em}.portfolio-count span{color:var(--muted);font-size:13px;font-weight:800;line-height:1.4;letter-spacing:.08em}.portfolio-tools{display:grid;grid-template-columns:minmax(260px,1fr) minmax(220px,280px) auto auto;gap:12px 14px;align-items:end;padding:18px 20px;border:1px solid var(--line);border-radius:16px;background:#fff}.portfolio-tools label{display:flex;flex-direction:column;gap:8px}.portfolio-tools label span{color:var(--ink);font-size:14px;font-weight:700;line-height:1.3}.portfolio-tools input,.portfolio-tools select{min-height:48px;padding:10px 14px;border:1px solid #c9d1d9;border-radius:10px;color:var(--ink);background:#fbfcfd;font-size:16px}.portfolio-tools input::placeholder{color:#6b7787;opacity:1}.portfolio-tools input:focus-visible,.portfolio-tools select:focus-visible{border-color:var(--ink);outline:3px solid var(--orange);outline-offset:2px}.portfolio-tools button,.portfolio-tools a{display:inline-flex;min-height:48px;align-items:center;justify-content:center;padding:0 20px;border:1px solid #c9d1d9;border-radius:10px;color:var(--ink);background:#fff;font-size:15px;font-weight:700;line-height:1.2;text-align:center;text-decoration:none;cursor:pointer}.portfolio-tools button:hover{border-color:var(--ink)}.portfolio-tools a{border-color:var(--ink);color:#fff;background:var(--ink);font-size:16px}.portfolio-tools a:hover{background:#1d3352}.portfolio{display:grid;gap:18px;margin-top:20px}.portfolio-empty{display:grid;min-height:320px;place-items:center;padding:40px 24px;border:1px solid var(--line);border-radius:18px;background:#fff;text-align:center}.portfolio-empty b{display:grid;width:72px;height:72px;place-items:center;margin:auto;border-radius:50%;color:var(--green);background:#e4f3ed;font:700 30px/1 var(--sans);font-variant-numeric:tabular-nums}.portfolio-empty h2{margin:18px 0 10px;font:400 30px/1.2 Georgia,serif}.portfolio-empty p{max-width:560px;margin:0 auto 20px;color:var(--muted);font-size:16px;line-height:1.6}.portfolio-empty a{display:inline-flex;min-height:44px;align-items:center;color:var(--orange-text);font-size:16px;font-weight:800;text-decoration:none}.portfolio-empty a:hover{text-decoration:underline}.idea-card{overflow:hidden;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:0 10px 35px rgba(18,34,56,.04)}.idea-card__head{display:grid;grid-template-columns:1fr minmax(300px,380px);gap:24px;padding:28px;border-bottom:1px solid var(--line)}.idea-card__title small{color:var(--orange-text);font-size:13px;font-weight:800;line-height:1.4;letter-spacing:.06em;text-transform:uppercase}.idea-card__title small span{display:inline-block}.idea-card__title h2{margin:8px 0 14px;font:400 30px/1.2 Georgia,serif;text-wrap:balance}.idea-card__meta{display:flex;flex-wrap:wrap;gap:8px}.idea-card__meta span,.status-pill{display:inline-flex;min-height:26px;align-items:center;gap:7px;padding:4px 11px;border-radius:14px;color:#33445b;background:#eef2f4;font-size:13px;font-weight:700;line-height:1.3;letter-spacing:.02em;text-transform:uppercase}.idea-card__meta .status-pill{min-height:26px;padding:4px 11px;border-radius:999px;color:#2b3d55;background:#e9eef4;font-size:13px;font-weight:700;line-height:1.25;letter-spacing:normal;text-transform:none}.idea-card__meta .status-pill:before{flex:0 0 7px;width:7px;height:7px;border-radius:50%;background:currentColor;content:""}.idea-card__meta .status-pill.approved{color:#2f6f58;background:#e8f3ee}.idea-card__meta .status-pill.rejected{color:#9b3934;background:#fde6e4}.idea-card__meta .status-pill.hold{color:#8a5f12;background:#fff5d9}.idea-card__meta .status-pill.info{color:#b9461a;background:#fff0e8}.idea-card__meta .status-pill.info:before{background:#c4471c}.evaluator{display:grid;grid-template-columns:52px 1fr;gap:14px;align-items:center;padding:18px;border:1px solid #cfd8df;border-radius:14px;background:#f8fafb}.evaluator>span{display:grid;width:52px;height:52px;place-items:center;border-radius:50%;color:#fff;background:var(--ink);font-size:14px;font-weight:800}.evaluator small{display:block;color:var(--orange-text);font-size:13px;font-weight:800;letter-spacing:.08em}.evaluator strong{display:block;margin-top:4px;font-size:17px;line-height:1.3}.evaluator p{margin:4px 0 0;color:var(--muted);font-size:14px;line-height:1.5}.workflow{position:relative;display:grid;grid-template-columns:repeat(7,1fr);gap:6px;padding:22px 28px;border-bottom:1px solid var(--line);background:#fafbfc}.workflow span{position:relative;z-index:1;display:flex;align-items:center;flex-direction:column;gap:8px;color:#687384;text-align:center}.workflow span:not(:first-child):before{position:absolute;z-index:-1;top:17px;right:calc(50% + 18px);width:calc(100% - 30px);height:2px;background:#dfe4e8;content:""}.workflow span.done:before{background:#9fcdb9}.workflow i{display:grid;width:36px;height:36px;place-items:center;border:2px solid #cfd6dc;border-radius:50%;background:#fff;font-size:14px;font-style:normal;font-weight:800}.workflow b{font-size:13px;font-weight:700;line-height:1.3}.workflow .done{color:var(--green)}.workflow .done i{border-color:var(--green);color:#fff;background:var(--green)}.workflow .current{color:var(--ink)}.workflow .current b{font-weight:800}.workflow .current i{border-color:var(--orange);background:#fff;box-shadow:0 0 0 5px rgba(242,103,58,.13)}.workflow .skip{opacity:.45}.idea-card__body{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(320px,.8fr);gap:28px;padding:28px}.section-label{display:block;margin-bottom:12px;color:var(--orange-text);font-size:13px;font-weight:800;letter-spacing:.08em}.change-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;container:change/inline-size}.change-card{min-width:0;padding:16px 18px;border:1px solid var(--line);border-radius:12px;background:#fbfcfd}.change-card>small{display:block;color:#33445b;font-size:13px;font-weight:800;letter-spacing:.06em}.change-values{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);grid-template-rows:auto auto;gap:4px 10px;align-items:start;margin-top:10px}.change-values span{display:grid;min-width:0;grid-row:span 2;grid-template-rows:subgrid;align-content:start}.change-values span:first-child{grid-column:1}.change-values span:last-child{grid-column:3}.change-values small{display:block;color:#5d6979;font-size:12px;font-weight:700;letter-spacing:.04em}.change-values b{display:block;overflow-wrap:break-word;font-size:16px;font-weight:700;line-height:1.4;font-variant-numeric:tabular-nums}.change-values>i{grid-column:2;grid-row:2;padding-top:1px;color:var(--orange);font-size:20px;font-style:normal;line-height:1}.change-state{display:block;width:fit-content;max-width:100%;margin-top:10px;padding:3px 8px;border-radius:6px;color:var(--green);background:#e4f3ed;font-size:12px;font-weight:800;line-height:1.35;letter-spacing:.04em}.change-card.changed{border-color:#f2baa6;background:#fff9f6}.change-card.changed .change-state{color:var(--orange-text);background:#fff0e8}.change-card.pending .change-state{color:#4f5b6b;background:#eef2f4}.finance-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.finance-grid span{min-width:0;padding:14px 16px;border-radius:12px;background:#eef2f4}.finance-grid small{display:block;color:var(--muted);font-size:12px;font-weight:800;letter-spacing:.04em}.finance-grid b{display:block;overflow-wrap:break-word;margin-top:6px;font:700 21px/1.25 var(--sans);font-variant-numeric:tabular-nums}.decision-notes{display:grid;gap:10px;margin-top:28px}.decision-notes article{padding:14px 18px;border-left:3px solid #b8c1ca;border-radius:0 10px 10px 0;background:#f7f8f9}.decision-notes article small{display:block;color:#4f5b6b;font-size:14px;font-weight:700;line-height:1.4}.decision-notes p{margin:6px 0 0;font-size:16px;line-height:1.55}.history{margin-top:28px}.history-list{display:grid;gap:0;margin-left:5px;border-left:2px solid var(--line)}.history-list article{position:relative;padding:0 0 20px 22px}.history-list article:last-child{padding-bottom:4px}.history-list article:before{position:absolute;top:6px;left:-6px;width:10px;height:10px;border-radius:50%;background:var(--orange);content:""}.history-list b{font-size:16px;line-height:1.4}.history-list small{display:block;margin-top:2px;color:var(--muted);font-size:14px;line-height:1.45}.history-list small span{display:inline-block}.history-list p{margin:6px 0 0;color:#33445b;font-size:15px;line-height:1.5}.clarification-panel{margin-top:16px;padding:24px;border-radius:14px;background:#122238;color:#fff}.clarification-panel h3{margin:0;font:400 26px/1.2 Georgia,serif}.clarification-panel__ask>p{margin:10px 0 16px;color:#d3dae1;font-size:15px;line-height:1.55}.clarification-list{display:grid;gap:10px;margin-bottom:16px}.clarification-list article{padding:14px 16px;border-radius:10px;color:var(--ink);background:#fff}.clarification-list b{font-size:15px}.clarification-list small{display:block;margin-top:2px;color:var(--muted);font-size:14px}.clarification-list p{margin:8px 0 0;font-size:15px;line-height:1.5}.clarification-form label,.appeal-form label{display:block;color:#fff;font-size:14px;font-weight:700;line-height:1.3}.clarification-form textarea,.appeal-form textarea{display:block;width:100%;min-height:128px;margin-top:8px;padding:12px 14px;border:1px solid #556274;border-radius:10px;color:var(--ink);background:#fff;font-size:16px;font-weight:400;letter-spacing:0;line-height:1.5;resize:vertical}.clarification-form textarea::placeholder,.appeal-form textarea::placeholder{color:#6b7787;opacity:1}.clarification-form textarea:focus-visible,.appeal-form textarea:focus-visible{outline:3px solid var(--orange);outline-offset:2px}.appeal-form{margin-top:16px}.clarification-form footer,.appeal-form footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-top:12px}.form-message{margin:0;color:#ffb094;font-size:14px;line-height:1.45}.clarification-form button,.appeal-form button,.appeal-toggle{display:inline-flex;min-height:46px;align-items:center;justify-content:center;margin-left:auto;padding:0 20px;border:0;border-radius:10px;color:var(--ink);background:#fff;font-size:15px;font-weight:800;line-height:1.2;text-align:center;cursor:pointer}.appeal-toggle{margin-left:0;border:1px solid #8a97a8;color:#fff;background:transparent}.appeal-toggle:hover{border-color:#fff;background:rgba(255,255,255,.08)}.clarification-form button:hover,.appeal-form button:hover{background:#ffe7dc}.info-request{margin-bottom:16px;padding:14px 16px;border-radius:10px;color:#73351f;background:#ffe7dc;font-size:15px;line-height:1.5}.info-request b{display:block;font-size:14px;font-weight:800;line-height:1.4}.appeal-block{margin-top:18px;padding-top:18px;border-top:1px solid #3b4a5e}.appeal-state{margin-top:18px;padding:14px 16px;border-radius:10px;color:#38294a;background:#efe8f7}.appeal-state b{font-size:13px;letter-spacing:.06em}.appeal-state p{margin:6px 0 0;font-size:15px;line-height:1.5}.owner-toast{position:fixed;right:24px;bottom:24px;z-index:50;width:min(400px,calc(100% - 48px));padding:16px 18px;border-radius:12px;color:#fff;background:var(--green);box-shadow:0 18px 45px rgba(18,34,56,.3);font-size:15px;font-weight:700;line-height:1.45}@media(max-width:900px){.portfolio-tools{grid-template-columns:1fr 1fr}.idea-card__head,.idea-card__body{grid-template-columns:1fr}.workflow{overflow-x:auto;grid-template-columns:repeat(7,minmax(78px,1fr));padding:20px}}@media(max-width:720px){main{width:calc(100% - 32px)}.owner-hero{align-items:flex-start;flex-direction:column;gap:0;padding:18px 0 14px}.owner-hero h1{margin:6px 0 0;font-size:30px}.owner-hero p,.portfolio-count{display:none}.portfolio-tools{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px 10px;padding:14px}.portfolio-tools label{flex:1 1 130px;min-width:0}.portfolio-tools label:first-child{flex:1.5 1 140px}.portfolio-tools input,.portfolio-tools select{min-height:46px;padding:10px 12px}.portfolio-tools input{text-overflow:ellipsis}.portfolio-tools button,.portfolio-tools a{min-height:44px;padding:0 16px;font-size:15px}.portfolio-tools a{margin-left:auto}.workflow{overflow:visible;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(4,auto);grid-auto-flow:column;gap:12px 14px;padding:18px 16px}.workflow span{flex-direction:row;gap:10px;text-align:left}.workflow span:not(:first-child):before{display:none}.workflow i{flex:0 0 34px;width:34px;height:34px}.workflow b{font-size:14px}}@media(max-width:620px){.idea-card__head,.idea-card__body{padding:20px 16px}.idea-card__title h2{font-size:26px}.finance-grid{grid-template-columns:1fr 1fr}.finance-grid b{font-size:20px}.clarification-panel{padding:20px 16px}.clarification-form button,.appeal-form button,.appeal-toggle{width:100%}.portfolio-empty{min-height:280px;padding:32px 18px}.portfolio-empty h2{font-size:26px}}

/* v3.0.0: server data states, filters, feedback and readable long text */
.portfolio-tools.has-workshop-filter{grid-template-columns:minmax(220px,1fr) minmax(180px,230px) minmax(180px,230px) auto auto}
/* Long option labels (workshop name · location · dates) must not widen the filter grid beyond a phone screen. */
.portfolio-tools input,.portfolio-tools select{width:100%;min-width:0}
.portfolio-empty button{min-height:46px;padding:0 22px;border:0;border-radius:10px;color:#fff;background:var(--ink);font-size:15px;font-weight:800;cursor:pointer}
.portfolio-empty button:disabled{opacity:.6;cursor:progress}
.decision-notes p,.history-list p,.clarification-list p,.appeal-state p,.info-request__note{white-space:pre-line;overflow-wrap:anywhere}
.info-request__note{display:block;margin-top:6px}
.appeal-response{margin-top:12px;padding-top:12px;border-top:1px solid #d6c9e6}
.appeal-response small{display:block;color:#5d4677;font-size:14px;font-weight:700;line-height:1.4}
.appeal-note{margin:0;color:#d3dae1;font-size:14px;line-height:1.5}
.clarification-form button:disabled,.appeal-form button:disabled{opacity:.6;cursor:progress}
.clarification-form[aria-busy="true"],.appeal-form[aria-busy="true"],.attachment-form[aria-busy="true"]{cursor:progress}
.attachment-form .form-message{color:#a13e34;font-weight:800;line-height:1.45;overflow-wrap:anywhere}
.attachment-form .form-message.is-progress{color:var(--muted)}
.attachment-form .form-message:empty{display:none}
.owner-toast.is-info{background:var(--ink)}
.owner-toast.is-error{background:#9b3934}
@media(max-width:900px){.portfolio-tools.has-workshop-filter{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.portfolio-tools.has-workshop-filter{grid-template-columns:1fr}}

/* Round 2: an idea waiting for the owner's answer. my-ideas.js marks the card (.idea-card--action) and renders the
   question and reply box (.idea-card__answer) right under the progress steps, before the evidence block. */
.idea-card--action{border-color:var(--orange);box-shadow:0 0 0 1px var(--orange),0 10px 35px rgba(18,34,56,.06)}
.idea-card__answer{margin:24px 28px 0}
.idea-card__answer .clarification-panel{margin:0;border-top:4px solid var(--orange)}
.clarification-panel--request .clarification-panel__ask>:last-child{margin-bottom:0}
.clarification-panel--request .clarification-form{margin-top:16px}
@media(min-width:901px){
  .idea-card__answer .clarification-panel{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 32px;align-items:start;padding:26px 28px 28px}
  .idea-card__answer .clarification-panel>*{min-width:0}
  .idea-card__answer .clarification-panel>.appeal-block,.idea-card__answer .clarification-panel>.appeal-state{grid-column:1/-1}
  .idea-card__answer .clarification-form{margin-top:0}
}
@media(max-width:620px){.idea-card__answer{margin:18px 16px 0}}

/* Owner forecast vs current evaluation: one comparison per row (.change-grid is the "change" container), so a value
   such as "€0.25 / vehicle · < €1" is not broken mid-value. Wide rows put the caption on the left; narrow rows
   (phones) are compact two-line rows, see Round 3 below. */
.change-values b{text-wrap:pretty}
@container change (min-width:600px){
  .change-card{display:grid;grid-template-columns:minmax(150px,190px) minmax(0,1fr);grid-template-rows:auto 1fr;gap:6px 24px;align-items:start}
  .change-card>small{grid-column:1;grid-row:1;line-height:1.35}
  .change-card>.change-state{grid-column:1;grid-row:2;margin-top:0}
  .change-card>.change-values{grid-column:2;grid-row:1/span 2;margin-top:0}
}
/* Round 3, narrow rows (phones): one compact row per comparison. Line 1: the caption with the state chip on the
   right; line 2: "owner forecast → current evaluation" as one line of text that wraps only between words (the
   section title above names both sides; the small OWNER FORECAST / CURRENT EVALUATION captions stay in the
   page for screen readers). The owner's forecast is muted, the current evaluation is the strong value. */
@container change (max-width:599.98px){
  .change-card{position:relative;display:grid;grid-template-columns:minmax(min(45%,9em),1fr) minmax(0,auto);gap:8px 12px;align-items:start;padding:12px 14px}
  .change-card>small{grid-column:1;grid-row:1;align-self:center;line-height:1.35}
  .change-card>.change-state{grid-column:2;grid-row:1;justify-self:end;margin:0;text-align:center;text-wrap:balance}
  .change-card>.change-values{display:block;grid-column:1/-1;grid-row:2;margin:0;line-height:1.45}
  .change-values span,.change-values b{display:inline}
  .change-values span:first-child b{color:#4f5b6b;font-weight:700}
  .change-values small{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
  .change-values>i{display:inline;margin:0 6px;padding:0;font-size:17px;line-height:1}
}
@media(max-width:720px){.change-grid{gap:8px}}

/* Round 3: one focus ring on every control (3px bright orange, 2px away from the control). */
main :is(a,button,input,select,textarea,summary):focus-visible{outline:3px solid var(--orange);outline-offset:2px}

/* Round 4, phones: an idea waiting for the owner's answer. The reply box comes sooner without moving anything:
   the expanded head drops its title block (reference, title and chips repeat the summary right above it), and
   the 7-step progress becomes one line of numbered dots with only the current step named. The other step names
   stay in the page for screen readers. */
@media(max-width:720px){
  .idea-card--action .idea-card__title{display:none}
  .idea-card--action .workflow{display:flex;flex-wrap:wrap;align-items:center;gap:8px 4px;padding:12px 16px}
  .idea-card--action .workflow span{flex:0 0 auto;gap:6px}
  .idea-card--action .workflow i{flex:0 0 26px;width:26px;height:26px;font-size:12px}
  .idea-card--action .workflow .current i{box-shadow:0 0 0 3px rgba(242,103,58,.16)}
  .idea-card--action .workflow span:not(.current) b{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
  .idea-card--action .workflow .current b{margin-right:2px;font-size:14px;white-space:nowrap}
}
