/* App layout on top of the Stille Welle tokens (stille-welle.css). Text uses brand tokens only;
   --warn-edge/--warn-bg tint backgrounds and borders for "overdue", never text. */
:root{--gutter:clamp(1rem,2.4vw,2rem);--warn-edge:#9A5B13;--warn-bg:#FBF1E3}
body{background:var(--mist);font-size:15px;line-height:1.5}
button,input,select,textarea{font:inherit;color:inherit}
a:focus-visible,button:focus-visible,input:focus-visible{outline:3px solid var(--teal);outline-offset:2px}
html,body{overflow-x:clip}
.skip{position:absolute;left:-999px;top:0;background:var(--paper);padding:.5rem 1rem;z-index:10}
.skip:focus{left:0}
.small{font-size:.82rem}

.app{display:grid;grid-template-columns:232px minmax(0,1fr);min-height:100vh}
.side{background:var(--paper);border-right:1px solid var(--hairline);padding:1.2rem 1rem;display:flex;flex-direction:column;gap:1.4rem;position:sticky;top:0;height:100vh}
.side .brand{display:flex;align-items:center;gap:.6rem;border:0}
.side .brand img{height:36px;width:auto}
.side .brand span{font-family:var(--display);font-weight:700;font-size:.78rem;line-height:1.1;color:var(--ink)}
.side nav{display:grid;gap:.15rem}
.side nav a{display:flex;align-items:center;gap:.65rem;padding:.55rem .75rem;border:0;border-radius:12px;color:var(--slate);font-weight:500}
.side nav a::before{content:"";width:9px;height:9px;border:2px solid var(--mint-deep);border-radius:50%;flex:none}
.side nav a:hover{background:var(--mist)}
.side nav a[aria-current="page"]{background:var(--mist);color:var(--teal-deep);font-weight:600}
.side nav a[aria-current="page"]::before{border-color:var(--teal);background:var(--teal)}
@media(max-width:900px){
  .app{grid-template-columns:minmax(0,1fr)}
  .side{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;padding:.8rem 1rem;gap:.6rem 1.2rem}
  /* one horizontally scrollable row; the padding keeps focus outlines (3px + 2px offset)
     inside the scroll box, which would otherwise clip them */
  .side nav{display:flex;flex-wrap:nowrap;flex:1 1 100%;min-width:0;overflow-x:auto;overscroll-behavior-x:contain;padding:6px;margin:-6px;scrollbar-width:thin}
  .side nav a{flex:none;white-space:nowrap}
  .who span:last-child{display:none}
}

.main{padding:1rem var(--gutter) 3rem;min-width:0}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.4rem 0 1.1rem;border-bottom:1px solid var(--hairline);margin-bottom:1.3rem}
.topbar .links{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}
.who{display:flex;align-items:center;gap:.6rem;font-size:.88rem;color:var(--slate)}
.avatar{width:36px;height:36px;border-radius:50%;background:var(--teal);color:#fff;display:grid;place-items:center;font-family:var(--display);font-weight:700;font-size:.85rem}
.btn{font-size:.9rem;padding:.6em 1.2em;cursor:pointer}
.btn.ghost{background:#fff;color:var(--teal-deep);border:1px solid var(--hairline)}
.main h1{font-size:clamp(1.5rem,2.6vw,2.1rem);max-width:none;margin-bottom:.2rem}
.main h2{font-size:1.1rem;max-width:none;letter-spacing:-.02em}
.sub{color:var(--slate)}
.notice{background:var(--warn-bg);border:1px solid var(--warn-edge);border-radius:12px;padding:.6rem .9rem;margin-bottom:1rem;color:var(--ink)}
.auth{max-width:28rem;margin:4rem auto;padding:0 1rem}
.auth .error{background:var(--warn-bg);border:1px solid var(--warn-edge);border-radius:12px;padding:.6rem .9rem;color:var(--ink)}
.auth input,.auth button{padding:.5rem}

.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.8rem;margin:1.2rem 0 1.4rem}
@media(max-width:1000px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
.kpi{background:#fff;border:1px solid var(--hairline);border-radius:16px;padding:.8rem 1rem}
.kpi span{display:block;font-size:.68rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--slate)}
.kpi b{font-family:var(--display);font-size:1.7rem;letter-spacing:-.03em}
.kpi small{display:block;color:var(--slate);font-size:.8rem}
.kpi.warn{border-color:var(--warn-edge);background:var(--warn-bg)}

.grid2{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:1.1rem}
@media(max-width:1100px){.grid2{grid-template-columns:minmax(0,1fr)}}
.stack{display:grid;gap:1.1rem;align-content:start}
.panel{background:#fff;border:1px solid var(--hairline);border-radius:20px;padding:1.1rem 1.25rem;min-width:0}
.panel .hd{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:.6rem}
.owner{font-size:.72rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--teal-deep);margin:.8rem 0 .2rem}
.item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.3rem .9rem;align-items:center;padding:.7rem 0;border-top:1px solid var(--mist)}
.item b{font-weight:600;display:block;overflow-wrap:anywhere}
.item b a{color:var(--ink);border:0}
.item b a:hover{color:var(--teal)}
.item small{color:var(--slate);font-size:.82rem}
.date{font-size:.78rem;font-weight:600;color:var(--teal-deep);background:var(--mist);border-radius:8px;padding:.25rem .5rem;white-space:nowrap}
.date.over{color:var(--ink);background:var(--warn-bg);box-shadow:inset 0 0 0 1px var(--warn-edge)}
.tag{white-space:nowrap;font-size:.7rem;font-weight:600;border-radius:999px;padding:2px 8px;background:var(--mist);color:var(--teal-deep)}
@media(max-width:480px){.item{grid-template-columns:auto minmax(0,1fr)}.item .tag{grid-column:2;justify-self:start}}

.sugg{border:1.5px dashed var(--mint-deep);border-radius:14px;padding:.75rem .9rem;margin-top:.6rem;font-size:.9rem}
.sugg .k{font-size:.66rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--teal-deep)}
.sugg p{margin:.2rem 0 .5rem;color:var(--slate);overflow-wrap:anywhere}
.sugg b{color:var(--ink)}
.link{background:none;border:0;border-bottom:2px solid var(--teal);color:var(--teal);font-weight:600;font-size:.85rem;cursor:pointer;padding:0}

.funnel{display:grid;gap:.45rem;margin-top:.4rem}
.bar{display:grid;grid-template-columns:minmax(0,110px) minmax(0,1fr) auto;gap:.6rem;align-items:center;font-size:.85rem}
.bar i{display:block;height:12px;border-radius:999px;background:var(--mint)}
.bar i.won{background:var(--teal)}
.bar b{text-align:right;font-weight:600;white-space:nowrap}

.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.muted{color:var(--slate)}
.pagehead{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem}
.pagehead .btn{white-space:nowrap}
.btn:not(.ghost){background:var(--teal);color:#fff;border:1px solid var(--teal);border-radius:999px;display:inline-block;text-decoration:none}
.btn.ghost{border-radius:999px;display:inline-block;text-decoration:none}
.tag.raum{background:#EEF0F7;color:#3B4A7A}
.tag.netzwerk{background:#F3EEF6;color:#6A3F7A}
.err{color:var(--ink);background:var(--warn-bg);border-left:3px solid var(--warn-edge);border-radius:6px;padding:.3rem .6rem;margin:.4rem 0 0;font-size:.85rem}

.board{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(240px,1fr);gap:.8rem;overflow-x:auto;padding-bottom:1rem}
.col{background:rgba(255,255,255,.55);border:1px solid var(--hairline);border-radius:18px;padding:.7rem;min-height:240px}
.col h3{font-size:.82rem;font-weight:700;letter-spacing:.02em;display:flex;justify-content:space-between;margin:.1rem .2rem .6rem}
.col h3 span{color:var(--slate);font-weight:500}
.card{background:#fff;border:1px solid var(--hairline);border-radius:14px;padding:.65rem .75rem;margin-bottom:.55rem;font-size:.86rem}
.card.has-error{border-color:var(--warn-edge)}
.card b{display:block;font-weight:600;line-height:1.25;margin-bottom:.3rem;overflow-wrap:anywhere}
.card b a{color:var(--ink);border:0}
.card .meta{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center}
.card .nx{color:var(--slate);font-size:.78rem;margin:.35rem 0 .5rem;overflow-wrap:anywhere}
.owner-dot{width:22px;height:22px;border-radius:50%;background:var(--teal);color:#fff;display:grid;place-items:center;font-size:.68rem;font-weight:700}
.move{display:flex;flex-wrap:wrap;gap:.35rem}
.move select{flex:1 1 7rem;min-width:0}
.move .reason{flex:1 1 100%}
.move .reason[hidden]{display:none}
.move .btn{padding:.3em .8em;font-size:.8rem}
select,input[type=text],input[type=search],input[type=number],input[type=date]{border:1px solid var(--hairline);background:#fff;border-radius:10px;padding:.4rem .6rem;font-size:.85rem;min-width:0}
.board-foot{margin-top:.2rem}

.filters{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-bottom:1rem}
.filters input[type=search]{flex:1 1 14rem}
.filters .narrow{width:6rem}
.filters .mid{width:9rem}
table.list{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--hairline);border-radius:16px;overflow:hidden;font-size:.88rem}
table.list th,table.list td{text-align:left;padding:.6rem .8rem;border-top:1px solid var(--mist);vertical-align:top}
table.list th{font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--slate);background:var(--paper);border-top:0;font-weight:600}
table.list td small{display:block;color:var(--slate);font-size:.75rem}
table.list a{color:var(--ink);border:0}
table.list a:hover{color:var(--teal)}
@media(max-width:700px){
  table.list,table.list tbody,table.list tr,table.list td{display:block}
  table.list thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  table.list{background:none;border:0}
  table.list tr{background:#fff;border:1px solid var(--hairline);border-radius:14px;padding:.4rem .8rem;margin-bottom:.6rem}
  table.list td{border:0;padding:.25rem 0;overflow-wrap:anywhere}
  table.list td::before{content:attr(data-label);display:block;color:var(--slate);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase}
}

.formgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem 1rem;max-width:44rem}
.formgrid .field{display:grid;gap:.2rem;align-content:start}
.formgrid label{font-size:.82rem;font-weight:600;color:var(--slate)}
.formgrid input,.formgrid select{width:100%;padding:.5rem .6rem}
.formgrid .actions{grid-column:1/-1;display:flex;gap:.6rem;flex-wrap:wrap}
@media(max-width:600px){.formgrid{grid-template-columns:minmax(0,1fr)}}

.dhead{margin-bottom:1.1rem}
.dhead .meta{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.4rem}
.tag.stage{background:var(--teal);color:#fff}
.facts{display:grid;grid-template-columns:minmax(0,8rem) minmax(0,1fr);gap:.35rem 1rem;margin:0 0 .8rem}
.facts dt{color:var(--slate);font-size:.82rem}
.facts dd{margin:0;overflow-wrap:anywhere}
.nx-now{font-weight:600;overflow-wrap:anywhere}
.item.person,.item.draft{grid-template-columns:auto minmax(0,1fr);align-items:start}
.item small{overflow-wrap:anywhere}
.edit{margin-top:.6rem}
.edit summary{cursor:pointer;display:inline-block;list-style:none}
.edit summary::-webkit-details-marker{display:none}
.edit[open] summary{margin-bottom:.8rem}
.qform{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem .8rem}
.qform .field{display:grid;gap:.2rem;align-content:start}
.qform .field.wide,.qform .actions,.qform .err.wide{grid-column:1/-1}
.qform label{font-size:.8rem;font-weight:600;color:var(--slate)}
.qform input,.qform select,.qform textarea{width:100%;border:1px solid var(--hairline);background:#fff;border-radius:10px;padding:.45rem .6rem;font-size:.88rem;min-width:0}
.qform .actions{display:flex;gap:.6rem;flex-wrap:wrap}
@media(max-width:600px){.qform{grid-template-columns:minmax(0,1fr)}.facts{grid-template-columns:minmax(0,1fr)}}
.check{display:flex;align-items:center;gap:.3rem;font-size:.82rem}
.item.draft .move{margin-top:.4rem}
.timeline{list-style:none;margin:1rem 0 0;padding:0;display:grid;gap:.7rem}
.timeline li{display:grid;grid-template-columns:5.5rem minmax(0,1fr);gap:.6rem;align-items:start}
.timeline p{margin:0;overflow-wrap:anywhere}
.timeline small{color:var(--slate)}
.timeline .tag{justify-self:start}
code{overflow-wrap:anywhere}
.panel.danger{margin-top:1.1rem}
.panel.danger summary{cursor:pointer;color:var(--slate);font-weight:600}
.panel.danger .move{margin-top:.6rem}
.panel.danger .move input{flex:1 1 14rem}
.modal{position:fixed;inset:0;background:rgba(10,31,30,.45);display:grid;place-items:center;padding:1rem;z-index:20;overflow-y:auto}
.modal-box{background:#fff;border-radius:20px;padding:1.2rem 1.4rem;max-width:36rem;width:100%;min-width:0}
.invite-text{white-space:pre-wrap;overflow-wrap:anywhere;background:var(--mist);border-radius:12px;padding:.8rem 1rem;font-size:.85rem;max-height:50vh;overflow:auto}
.modal .actions{display:flex;gap:.6rem;flex-wrap:wrap}
.partner-lists .item{grid-template-columns:auto minmax(0,1fr) auto}
@media(max-width:480px){.partner-lists .item{grid-template-columns:auto minmax(0,1fr)}.partner-lists .item .btn{grid-column:1/-1;justify-self:start}}
@media(max-width:480px){.item.person,.item.draft{grid-template-columns:minmax(0,1fr)}.item.person .tag,.item.draft .tag{grid-column:1;justify-self:start}}

/* offers */
.amount{font-weight:600;white-space:nowrap;font-variant-numeric:tabular-nums}
.item.line{align-items:start}
.item.line .move{margin-top:.4rem;align-items:center}
.item.line .qty{width:4.5rem}
.item.line .price{width:6.5rem}
.item.line .date{width:9.5rem}
.item.line .pair{display:inline-flex;align-items:center;gap:.35rem}
.flag{display:inline-block;margin-top:.3rem;color:var(--ink);background:var(--warn-bg);border-left:3px solid var(--warn-edge);border-radius:6px;padding:.1rem .5rem}
.totals{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.2rem 1rem;margin:.6rem 0 .4rem;padding-top:.6rem;border-top:1px solid var(--hairline);font-variant-numeric:tabular-nums}
.totals dt{color:var(--slate);text-align:right}
.totals dd{margin:0;text-align:right;white-space:nowrap}
#lines-form{margin-top:.8rem;padding-top:.8rem;border-top:1px solid var(--mist)}
.qform .check{grid-column:1/-1}
.body-text{font-size:.9rem;color:var(--slate);overflow-wrap:anywhere}
.panel .actions{display:flex;gap:.6rem;flex-wrap:wrap;margin:.6rem 0}
.status-line{margin:.4rem 0 .6rem}
.offer-new{margin-top:.8rem}
.qform textarea{resize:vertical}
table.list .num{text-align:right;white-space:nowrap}
@media(max-width:700px){table.list .num{text-align:left}}
.qform .check input,.check input{width:auto;flex:none}
#texts .body-text + .muted,#texts > .muted{margin-top:.6rem}
@media(max-width:480px){
  .item.line,.item.offer{grid-template-columns:minmax(0,1fr) auto}
  .item.line .tag,.item.offer .tag{grid-column:1/-1;justify-self:start}
}

.banner{margin:0 0 1rem;padding:.6rem .9rem;border-radius:12px;border:1px solid var(--warn-edge);background:var(--warn-bg);display:flex;flex-wrap:wrap;gap:.4rem 1rem;align-items:center}
.banner.grenze{border-width:2px}
.banner a{color:var(--teal-deep);font-weight:600}
.kpis.finance{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(min-width:1281px){.kpis.finance{grid-template-columns:repeat(5,minmax(0,1fr))}}
@media(max-width:1000px){.kpis.finance{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:480px){.kpis.finance{grid-template-columns:minmax(0,1fr)}}
.finance .kpi b{font-size:1.25rem;overflow-wrap:anywhere}
.budget{margin:.6rem 0 1rem}
.budget-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.2rem .8rem;font-size:.9rem}
.budget-track{height:14px;border-radius:999px;background:var(--mint);margin:.35rem 0 .15rem;overflow:hidden}
.budget-track i{display:block;height:100%;background:var(--teal)}
.budget.warn .budget-track i,.budget.limit .budget-track i{background:var(--warn-edge)}
.budget small{color:var(--slate)}
.anfrage{padding:.6rem 0;border-top:1px solid var(--line,#ddd);display:flex;flex-wrap:wrap;gap:.5rem 1rem;align-items:center;justify-content:space-between}.anfrage form{display:flex;gap:.4rem;align-items:center}
.sub-hd{font-size:.95rem;margin:1rem 0 .5rem}
.partner-actions{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:.8rem}
.partner-actions form{margin:0}
.anfrage-body{flex:1 1 20rem;min-width:0}
.anfrage-body p{margin:0 0 .25rem;overflow-wrap:anywhere}
.anfrage-message{color:var(--ink);white-space:normal}

/* settings */
.crumb{font-size:.78rem;color:var(--slate);margin-bottom:.2rem}
.crumb a{color:var(--teal-deep);border:0}
.settings-nav{display:flex;gap:.3rem;margin:0 0 1.1rem;padding:6px;overflow-x:auto;scrollbar-width:thin;background:#fff;border:1px solid var(--hairline);border-radius:999px;width:max-content;max-width:100%}
.settings-nav a{flex:none;white-space:nowrap;border:0;border-radius:999px;padding:.4rem .9rem;color:var(--slate);font-weight:500;font-size:.88rem}
.settings-nav a:hover{background:var(--mist)}
.settings-nav a[aria-current="page"]{background:var(--teal);color:#fff;font-weight:600}
.settings-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,17rem),1fr));gap:.8rem}
.settings-card{display:flex;gap:.9rem;align-items:flex-start;background:#fff;border:1px solid var(--hairline);border-radius:18px;padding:1rem 1.1rem;color:var(--ink);transition:border-color .15s,box-shadow .15s}
.settings-card:hover{border-color:var(--mint-deep);box-shadow:0 6px 18px -12px rgba(9,86,77,.45)}
.settings-card b{display:block;font-family:var(--display);font-size:1.02rem;letter-spacing:-.015em}
.settings-card small{display:block;color:var(--slate);font-size:.84rem;margin-top:.15rem}
.settings-card.quiet{background:var(--paper)}
.settings-form{display:grid;gap:1rem}
.settings-group{margin:0}
.settings-group legend{font-family:var(--display);font-weight:700;font-size:1.05rem;letter-spacing:-.02em;padding:0 .3rem;margin-left:-.3rem}
.settings-group > .muted{margin:.1rem 0 .7rem;max-width:70ch}
.settings-form input:not([type="checkbox"]),.settings-form select{width:100%;padding:.5rem .65rem;border:1px solid var(--hairline);border-radius:10px;background:#fff}
.settings-save{display:flex;flex-wrap:wrap;gap:.6rem 1rem;align-items:center;position:sticky;bottom:0;background:var(--mist);padding:.7rem 0}
.settings-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,19rem),1fr));gap:1rem;align-items:start}
.settings-cols form{margin-top:.8rem}
.sysfacts{display:grid;gap:.1rem;margin:.6rem 0 0;font-size:.9rem}
.sysfacts dt{color:var(--slate);font-size:.8rem;margin-top:.55rem}
.sysfacts dt:first-child{margin-top:0}
.sysfacts dd{margin:0;overflow-wrap:anywhere}
.accounts{display:grid}
.account{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.4rem 1rem;align-items:center;padding:.9rem 0;border-top:1px solid var(--mist)}
.account:first-child{border-top:0}
.account.blocked .avatar{background:var(--slate)}
.account-main b{display:block;font-weight:600}
.account-main small{display:block;color:var(--slate);font-size:.82rem;overflow-wrap:anywhere}
.account-actions{display:flex;flex-wrap:wrap;gap:.5rem .9rem;align-items:center;justify-content:flex-end}
.account-actions form{margin:0}
.account-edit{grid-column:2/-1}
.account-edit summary{cursor:pointer;color:var(--teal-deep);font-weight:600;font-size:.85rem;width:max-content}
.account-edit form{margin-top:.6rem}
.account-edit input{width:100%;padding:.5rem .65rem;border:1px solid var(--hairline);border-radius:10px}
.state{font-weight:600}
.state.ok{color:var(--teal-deep)}
.state.off{color:var(--ink)}
.shown-link{border-color:var(--teal);margin-bottom:1rem}
.copy-row{display:flex;gap:.5rem;margin-top:.6rem}
.copy-row input{flex:1;min-width:0;font-family:ui-monospace,monospace;font-size:.85rem;padding:.5rem .65rem;border:1px solid var(--hairline);border-radius:10px;background:var(--paper)}
@media(max-width:640px){.account{grid-template-columns:auto minmax(0,1fr)}.account-actions{grid-column:1/-1;justify-content:flex-start}.account-edit{grid-column:1/-1}}
table.list tr.revoked td{color:var(--slate)}
.stackform{display:grid;gap:.7rem;margin-top:.6rem}
.stackform .field{display:grid;gap:.2rem}
.stackform label{font-size:.8rem;font-weight:600;color:var(--slate)}
.stackform input{width:100%;padding:.5rem .65rem;border:1px solid var(--hairline);border-radius:10px;background:#fff}
.stackform .btn{justify-self:start}
.remove-password{margin-top:.9rem}
.remove-password summary{cursor:pointer;color:var(--teal-deep);font-weight:600;font-size:.85rem;width:max-content}
.settings-body{display:grid;gap:1rem;align-content:start}
.settings-body > .err{margin:0}
.settings-card .orb{flex:none}
