:root{
  --bg:#10201c; --surface:#172b25; --surface-2:#1e352d;
  --paper:#e8e6dd; --muted:#8ba39a; --line:rgba(232,230,221,.10);
  --ember:#e8894a;   /* schuld / open actie */
  --moss:#7fb069;    /* krijgt geld / afgerond */
  --radius:14px;
  --tabs-sticky-height:67px;
  --plan-nav-height:58px;
}
*{box-sizing:border-box}
html,body{margin:0}
/* default link color: browser-blue is unreadable on the dark green theme */
a{color:var(--moss)}
a:hover{color:#a3cc8f}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible,label.chip:focus-visible,.btn:focus-visible,.mini:focus-visible,.whoami-btn:focus-visible,.logout:focus-visible{outline:2px solid var(--paper);outline-offset:3px}
body{
  background:var(--bg); color:var(--paper);
  font-family:"Inter",system-ui,sans-serif; line-height:1.5; font-size:17px;
  -webkit-font-smoothing:antialiased;
}
.toasts{position:fixed;z-index:100;left:50%;bottom:0;transform:translateX(-50%);width:calc(100% - 24px);display:flex;flex-direction:column;gap:8px;padding-bottom:calc(12px + env(safe-area-inset-bottom));pointer-events:none}
.toast{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:10px;padding:12px;border:1px solid var(--line);border-left:4px solid var(--ember);border-radius:var(--radius);background:var(--surface);color:var(--paper);box-shadow:0 8px 24px var(--bg);overflow-wrap:anywhere;pointer-events:auto;animation:toast-in .2s ease-out}
.toast--ok{border-left-color:var(--moss)}
.toast--info{border-left-color:var(--muted)}
.toast-icon{display:grid;place-items:center;width:22px;height:22px;border:1px solid currentColor;border-radius:50%;font-weight:700;line-height:1}
.toast--ok .toast-icon{color:var(--moss)}
.toast--fout .toast-icon{color:var(--ember)}
.toast--info .toast-icon{color:var(--muted)}
.toast-bericht{min-width:0}
.toast-sluiten{border:0;background:transparent;color:var(--muted);font:24px/18px system-ui,sans-serif;cursor:pointer;padding:1px 0 3px 6px}
.toast-sluiten:hover{color:var(--paper)}
@keyframes toast-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:640px){.toasts{left:auto;right:20px;bottom:0;transform:none;width:calc(100% - 40px);max-width:380px}}
.bevestig-dialoog{width:calc(100% - 32px);max-width:440px;margin:auto;padding:0;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--paper);box-shadow:0 18px 48px rgba(5,8,7,.78)}
.bevestig-dialoog::backdrop{background:rgba(5,8,7,.78)}
.bevestig-inhoud{padding:20px}
.bevestig-inhoud h2{margin:0 0 8px;font-family:"Bricolage Grotesque",sans-serif;font-size:22px;line-height:1.15}
.bevestig-inhoud p{margin:0;color:var(--paper);overflow-wrap:anywhere}
.bevestig-acties{display:flex;justify-content:flex-end;gap:10px;margin-top:20px;flex-wrap:wrap}
.bevestig-acties button{min-height:44px}
.bevestig-annuleer{background:var(--surface-2)}
.bevestig-doorgaan.danger{background:transparent;border:1px solid var(--ember);color:var(--ember)}
.bevestig-annuleer:focus-visible,.bevestig-doorgaan:focus-visible{outline:2px solid var(--paper);outline-offset:3px}
.inline-bewerk{max-width:100%;margin:8px 0;padding:12px;border-radius:var(--radius);background:var(--surface-2)}
.inline-bewerk .field{margin:0 0 10px}
.inline-bewerk .field input{min-height:44px}
.inline-bewerk-fout{margin:0;color:var(--ember);font-size:14px}
.inline-bewerk .saverow{margin-top:10px}
.inline-bewerk .saverow button{min-height:44px}
#app{transition:opacity .15s ease}
#app.trip-switching{opacity:.55;pointer-events:none}
.wrap{max-width:640px;margin:0 auto;padding:0 12px}

/* na-login reisoverzicht — los van de kwetsbare native tripswitch in de reiskop */
.trip-overview{min-height:calc(100dvh - 48px);padding:34px 0 56px;background:var(--bg)}
.trip-overview-shell{width:100%;max-width:640px;margin:0 auto;padding:0 14px;overflow:hidden}
.trip-overview-actions{display:none;justify-content:flex-end;gap:8px;margin-bottom:20px}
.trip-overview-account,.trip-overview-return{border:0;background:transparent;color:var(--muted);font:600 13px "Inter",sans-serif;cursor:pointer}
.trip-overview-account{padding:7px 10px;border:1px solid var(--line);border-radius:999px}
.trip-overview-return{display:block;margin:0 0 11px;padding:0}
.trip-overview-account:hover,.trip-overview-return:hover{color:var(--paper)}
.trip-overview-heading{margin-bottom:24px}
.trip-overview-kicker{margin:0 0 7px;color:var(--moss);font:600 12px "Inter",sans-serif;letter-spacing:.14em}
.trip-overview-heading h1{margin:0;font:800 clamp(38px,12vw,58px)/.95 "Bricolage Grotesque",sans-serif;letter-spacing:-.025em}
.trip-overview-heading > p:last-child{margin:9px 0 0;color:var(--muted);font-size:15px}
.trip-overview-list{display:grid;gap:10px;min-width:0}
.trip-overview-card,.trip-overview-archive-row{width:100%;max-width:100%;min-width:0;border:1px solid var(--line);color:var(--paper);font-family:"Inter",sans-serif;text-align:left;cursor:pointer}
.trip-overview-card{display:flex;flex-direction:column;align-items:flex-start;padding:15px;border-radius:var(--radius);background:var(--surface)}
.trip-overview-card:hover,.trip-overview-archive-row:hover{border-color:var(--muted)}
.trip-overview-card-current{padding:20px;background:var(--surface-2)}
.trip-overview-card-top{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;min-width:0}
.trip-overview-status{display:inline-flex;max-width:100%;padding:3px 9px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font:600 12px "Inter",sans-serif;white-space:nowrap}
.trip-overview-status.current{border-color:var(--moss);color:var(--moss)}
.trip-overview-people{color:var(--muted);font-size:13px;white-space:nowrap}
.trip-overview-current-name{margin-top:23px;font:800 clamp(30px,10vw,46px)/1 "Bricolage Grotesque",sans-serif;letter-spacing:-.02em;overflow-wrap:anywhere}
.trip-overview-meta{display:block;max-width:100%;margin-top:7px;color:var(--muted);font-size:14px;overflow-wrap:anywhere}
.trip-overview-activity{display:block;width:100%;margin-top:18px;padding-top:13px;border-top:1px solid var(--line);font-weight:600;overflow-wrap:anywhere}
.trip-overview-active-row{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;min-width:0;margin-top:13px}
.trip-overview-active-name{min-width:0;font:600 21px/1.15 "Bricolage Grotesque",sans-serif;overflow-wrap:anywhere}
.trip-overview-card-active > .trip-overview-people{margin-top:10px}
.trip-overview-arrow{flex:0 0 auto;color:var(--moss);font-weight:600}
.trip-overview-archived{margin-top:8px;border-top:1px solid var(--line)}
.trip-overview-archive-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 10px;align-items:center;padding:13px 2px;border-width:0 0 1px;background:transparent}
.trip-overview-archive-name{min-width:0;font-weight:600;overflow-wrap:anywhere}
.trip-overview-archive-meta{display:flex;grid-column:1;gap:5px 13px;min-width:0;color:var(--muted);font-size:12px;flex-wrap:wrap}
.trip-overview-archive-row > .trip-overview-arrow{grid-column:2;grid-row:1 / span 2}
.trip-overview-new{width:100%;min-height:48px;margin-top:22px;padding:11px 14px;border:1px dashed var(--moss);border-radius:var(--radius);background:transparent;color:var(--moss);font:600 15px "Inter",sans-serif;cursor:pointer}
.trip-overview-new:hover{background:var(--surface)}
.trip-overview-empty,.trip-overview-error{margin:0;padding:20px 3px;color:var(--muted);overflow-wrap:anywhere}
.trip-overview-error{border:1px solid var(--line);border-left:3px solid var(--ember);border-radius:var(--radius);background:var(--surface)}
@media(max-width:920px){.trip-overview-actions{display:flex}}
@media(max-width:390px){
  .trip-overview{padding-top:18px}
  .trip-overview-card-current{padding:17px}
  .trip-overview-card-top{align-items:flex-start;flex-wrap:wrap}
  .trip-overview-current-name{margin-top:19px}
}

/* header with topographic contour signature */
.topo{position:relative;overflow:hidden;padding:26px 0 30px;background:linear-gradient(160deg,#12241f,#0d1a16)}
.contours{position:absolute;inset:auto 0 0 0;width:100%;height:80px;opacity:.35;z-index:0;pointer-events:none}
.topo .head{position:relative;z-index:1}
.contours path{fill:none;stroke:var(--moss);stroke-width:1;opacity:.5}
.contours path:nth-child(2){stroke:var(--ember);opacity:.35}
.head h1{
  font-family:"Bricolage Grotesque",sans-serif;font-weight:800;
  font-size:clamp(34px,9vw,52px);margin:0;letter-spacing:-.02em;line-height:.95;
}
.head .sub{margin:6px 0 0;color:var(--muted);font-size:15px}
.head .sub span{color:var(--paper)}

/* tabs */
.tabs{display:flex;gap:6px;position:sticky;top:0;z-index:5;
  background:var(--bg);padding-top:12px;padding-bottom:12px;margin-top:0;
  overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.tabs::before{content:"";position:absolute;top:0;bottom:0;left:50%;transform:translateX(-50%);
  width:100vw;background:var(--bg);z-index:-1;pointer-events:none}
.tabs::-webkit-scrollbar{display:none}
.tab-scroll-fade{position:sticky;top:0;z-index:1;flex:0 0 36px;height:44px;align-self:center;opacity:0;pointer-events:none;transition:opacity .15s ease}
.tab-scroll-fade.left{left:0;margin-right:-36px;background:linear-gradient(to right,var(--bg),transparent)}
.tab-scroll-fade.right{right:0;margin-left:-36px;background:linear-gradient(to left,var(--bg),transparent)}
.tabs.can-scroll-left .tab-scroll-fade.left,.tabs.can-scroll-right .tab-scroll-fade.right{opacity:1}
.tabs button{
  flex:0 0 auto;padding:10px 14px;border:1px solid var(--line);background:transparent;
  color:var(--muted);border-radius:999px;font:600 15px "Inter",sans-serif;cursor:pointer;
  white-space:nowrap}
.tabs button.active{background:var(--surface-2);color:var(--paper);border-color:transparent}
.drawer-host{display:contents}
.drawer-host > .drawer-head,#allesbar,.tabs button small{display:none}

@media(max-width:767px), (pointer:coarse){
  body.nav-drawer #allesbar{display:block;position:sticky;top:0;z-index:5;background:var(--bg);padding-top:12px;padding-bottom:12px}
  body.nav-drawer #allesbar::before{content:"";position:absolute;top:0;bottom:0;left:50%;transform:translateX(-50%);
    width:100vw;background:var(--bg);z-index:-1;pointer-events:none}
  body.nav-drawer .all-button{padding:10px 14px;border:1px solid var(--line);background:var(--surface-2);color:var(--paper);
    border-radius:999px;font:600 15px "Inter",sans-serif;cursor:pointer}
  body.nav-drawer .drawer-host{display:block;position:fixed;inset:0 auto 0 0;width:min(330px,88vw);z-index:40;
    background:var(--surface);border-right:1px solid var(--line);padding:14px;overflow-y:auto;transform:translateX(-101%);
    visibility:hidden;transition:transform .22s ease,visibility 0s linear .22s}
  body.nav-drawer .drawer-host.is-open{transform:translateX(0);visibility:visible;transition:transform .22s ease,visibility 0s}
  body.nav-drawer .drawer-host > .drawer-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
  body.nav-drawer .drawer-head h3{margin:0;font-weight:600}
  body.nav-drawer .drawer-head .close{padding:7px 10px;border:1px solid var(--line);background:transparent;color:var(--muted);
    border-radius:999px;font:600 13px "Inter",sans-serif;cursor:pointer}
  body.nav-drawer #tabs{display:grid;gap:0;position:static;overflow:visible;padding:0;margin:0;background:transparent}
  body.nav-drawer #tabs::before,body.nav-drawer .tab-scroll-fade{display:none}
  body.nav-drawer .tabs button{width:100%;text-align:left;border:0;border-bottom:1px solid var(--line);border-radius:0;white-space:normal;font-weight:600}
  body.nav-drawer .tabs button small{display:block;color:var(--muted);font-weight:400;margin-top:3px}
}

/* panels */
main{padding-bottom:60px}
.panel{display:none;animation:fade .2s ease}
.panel.active{display:block}
@keyframes fade{from{opacity:0;transform:translateY(4px)}to{opacity:1}}

.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  padding:12px 14px;margin:10px 0}
#connbanner{margin:10px 0;padding:7px 11px;background:var(--surface-2);border:1px solid var(--line);
  border-left:3px solid var(--ember);border-radius:var(--radius);color:var(--muted);font-size:13px}
details summary{cursor:pointer;font-family:"Bricolage Grotesque",sans-serif;font-weight:600;
  font-size:15px;color:var(--muted);list-style:none}
details summary::-webkit-details-marker{display:none}
details summary::before{content:"▸ ";display:inline-block}
details[open] summary::before{content:"▾ "}
details[open] summary{margin-bottom:10px}
details.card summary{font-size:16px}
details.card[open] summary{margin-bottom:10px}
details.card .card{margin:8px 0 0}
.doneblock summary{font-size:16px;padding:6px 0}
.doneblock[open] summary{margin-bottom:10px}
.card > .doneblock{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
details.card.doneblock{margin-top:18px}
.acct details{margin-top:8px;padding-top:8px;border-top:1px solid var(--line)}
.card h3{margin:0 0 10px;font-family:"Bricolage Grotesque",sans-serif;font-weight:600;font-size:16px;
  text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}

.row{display:flex;justify-content:space-between;align-items:center;padding:7px 0;border-top:1px solid var(--line)}
.row:first-of-type{border-top:none}
.cookrow{display:grid;grid-template-columns:6.5em minmax(0,1fr) auto;gap:10px;align-items:baseline}
.cookdish{display:block}
.name{font-weight:500}
.amount{font-family:"Space Mono",monospace;font-weight:700}
.amount.owe{color:var(--ember)}
.amount.get{color:var(--moss)}
.your-balance{border-color:rgba(127,176,105,.35);background:linear-gradient(135deg,var(--surface),var(--surface-2))}
.your-balance-value{font-family:"Bricolage Grotesque",sans-serif;font-size:clamp(22px,6vw,30px);font-weight:700;line-height:1.15}
.your-balance-value.owe{color:var(--ember)}
.your-balance-value.get{color:var(--moss)}

.settle{display:flex;align-items:center;gap:8px;padding:8px 0;border-top:1px solid var(--line);font-size:16px}
.settle-route{display:flex;align-items:center;gap:8px;flex:1;min-width:0}
.settle-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.settle .arrow{color:var(--muted)}
.settle .amt{flex:0 0 78px;min-width:78px;text-align:right;font-family:"Space Mono",monospace;color:var(--ember)}
.settle .mini{flex:0 0 auto;white-space:nowrap}
.settle-gate{display:flex;justify-content:flex-end;margin-top:10px}
.settle-hint{margin:10px 0 0}

/* votes */
.bar{display:flex;height:8px;border-radius:99px;overflow:hidden;background:var(--surface-2);margin:8px 0}
.bar i{display:block;height:100%}
.bar .yes{background:var(--moss)}
.bar .maybe{background:#c9a24b}
.bar .no{background:var(--ember)}
.tally{display:flex;gap:14px;color:var(--muted);font-size:14px}
.tally b{color:var(--paper)}
.chips{margin-top:6px;font-size:14px;color:var(--muted)}

/* plan tab: calendar overview of scheduled proposals across the trip's dates */
.calrow{display:flex;gap:12px;padding:7px 0;border-top:1px solid var(--line);align-items:baseline}
.calrow:first-child{border-top:none}
.caldate{flex:0 0 84px;color:var(--muted);font-size:13px;text-transform:capitalize}
.calbody{flex:1;min-width:0}
.calitem{display:flex;gap:8px;align-items:baseline;font-size:14px;padding:5px 8px;border-left:3px solid var(--moss);border-radius:0 8px 8px 0;background:var(--surface-2);color:var(--paper)}
.calitem + .calitem{margin-top:5px}
.caltime{flex:0 0 40px;color:var(--muted);font-size:13px;font-variant-numeric:tabular-nums}
.caltitle{flex:1;min-width:0;overflow-wrap:anywhere}
.calempty{color:var(--muted);font-size:13px}
.av-advies{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;
  padding:11px 12px;margin-bottom:10px}
.av-advies p{margin:0 0 8px}
.av-advies strong{font-weight:600}
.av-scroll{overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
.av-grid{border-collapse:collapse;width:max-content;min-width:100%;font-size:13.5px}
.av-grid th,.av-grid td{padding:6px 9px;border-bottom:1px solid var(--line);text-align:center;white-space:nowrap}
.av-grid th{font-weight:600}
.av-grid th:first-child,.av-grid td:first-child{position:sticky;left:0;background:var(--surface);z-index:1;text-align:left}
.av-leeg{color:var(--muted)}
/* the date cell is a fixed 84px column — put the weather chip on its own line
   instead of widening it and squeezing the plans next to it */
.calweer{display:block;white-space:nowrap;font-size:13px}
.weerkaart{min-width:0;overflow:hidden}
.weerstrip{display:flex;gap:8px;min-width:0;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
.weerdag{flex:0 0 auto;min-width:64px;text-align:center;padding:8px 6px;border-radius:10px;background:var(--surface-2)}
.weerdatum{font-size:12px;color:var(--muted)}
.weeremoji{font-size:22px;line-height:1.4}
.weertemp{font-size:14px}
.weerneerslag{font-size:12px;color:var(--muted)}

/* plan tab: sticky section navigation below the main tabs */
.plan-section-nav{display:flex;gap:6px;position:sticky;top:var(--tabs-sticky-height);z-index:4;
  margin:0 0 10px;padding:8px 0;background:var(--bg);overflow-x:auto;
  -webkit-overflow-scrolling:touch;scrollbar-width:none}
.plan-section-nav::before{content:"";position:absolute;inset:0 auto 0 50%;transform:translateX(-50%);
  width:100vw;background:var(--bg);z-index:-1;pointer-events:none}
.plan-section-nav::-webkit-scrollbar{display:none}
.plan-section-nav button{flex:0 0 auto;min-height:36px;padding:6px 11px;border:1px solid var(--line);
  border-radius:999px;background:transparent;color:var(--muted);font:600 13px "Inter",sans-serif;
  white-space:nowrap;cursor:pointer}
.plan-section-nav button.active{background:var(--surface-2);border-color:transparent;color:var(--paper)}
.plan-section{scroll-margin-top:calc(var(--tabs-sticky-height) + var(--plan-nav-height))}

/* decided proposals collapse to one stable, tappable summary row */
details.card.proposal-compact{padding:0 14px}
.proposal-summary{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;
  gap:8px;min-height:44px;color:var(--paper)}
.proposal-summary::before{margin:0}
.proposal-summary-title{min-width:0;overflow-wrap:anywhere}
.proposal-summary-meta{display:flex;align-items:center;justify-content:flex-end;gap:8px;min-width:0}
.proposal-summary .pbadge{margin:0;white-space:nowrap}
.proposal-summary .meta{color:var(--muted);font:400 12px "Inter",sans-serif;white-space:nowrap}
.proposal-summary-key{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0,0,0,0);white-space:nowrap;border:0}
.proposal-body{padding-bottom:12px}
@media(max-width:480px){
  .proposal-summary{grid-template-columns:auto minmax(0,1fr);padding:7px 0}
  .proposal-summary-meta{grid-column:2;justify-content:flex-start;flex-wrap:wrap;gap:5px 8px}
}

/* todos */
.todo{display:flex;gap:10px;align-items:baseline;padding:8px 0;border-top:1px solid var(--line)}
.todo:first-child{border-top:none}
.dot{width:9px;height:9px;border-radius:99px;flex:0 0 auto;margin-top:6px;background:var(--ember)}
.todo.done .dot{background:var(--moss)}
.todo.done .title{color:var(--muted);text-decoration:line-through}
.who{color:var(--muted);font-size:14px}
.login-card a.who{text-decoration:none;text-align:center;cursor:pointer}
.login-card a.who:hover{color:var(--paper)}

/* rhythm */
.rgroup{margin:10px 0}
.rgroup .label{font-family:"Bricolage Grotesque",sans-serif;font-size:15px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.rgroup .people{margin-top:3px}
.tip{margin-top:10px;padding:10px 12px;border-left:3px solid var(--moss);background:var(--surface-2);border-radius:0 8px 8px 0;font-size:15px}

/* itemized split editor */
.itembox{margin-top:10px;border-top:1px solid var(--line);padding-top:10px}
.item{padding:8px 0;border-top:1px solid var(--line)}
.item:first-child{border-top:none}
.item .head{display:flex;justify-content:space-between;font-size:15px}
.item .head .price{font-family:"Space Mono",monospace;color:var(--muted)}
/* Chips nemen anders elkaars hoogte over. */
.people-chips{display:flex;flex-wrap:wrap;align-items:flex-start;gap:6px;margin-top:6px}
.chip{padding:4px 10px;border-radius:10px;border:1px solid var(--line);background:transparent;
  color:var(--muted);font:500 14px "Inter",sans-serif;cursor:pointer}
.chip.on{background:var(--moss);color:#0d1a16;border-color:transparent}
.chip.gone{border-style:dashed;opacity:.75}
/* Binnen een groene chip volgen tekst en knop de donkere chipkleur; de lichte knopvulling maakt het vlak zichtbaar op groen. */
.chip.on .meta{color:inherit;opacity:.75}
.chip.on .mini{color:#0d1a16;border-color:rgba(13,26,22,.45);background:rgba(255,255,255,.35);margin:0}
.chip.all{font-size:13px;color:var(--muted);border-style:dashed}
.chip.ck{display:inline-block;user-select:none}
.todo .title{flex:1;min-width:0;overflow-wrap:anywhere}
.todo .mini{flex:0 0 auto;white-space:nowrap}
.todo.editing{align-items:flex-start}
.todo-editor{flex:1;margin-top:0}
.todo-editor input[data-field="title"]{flex:1 1 180px;max-width:none;padding:7px 10px;border-radius:9px;
  border:1px solid var(--line);background:var(--bg);color:var(--paper);font:400 15px "Inter",sans-serif}
.saverow{display:flex;align-items:center;gap:10px;margin-top:12px;flex-wrap:wrap}
/* hidden-attribuut moet .saverow ook echt verbergen, anders wint display:flex. */
.saverow[hidden]{display:none}
.saverow input{min-width:0}  /* inputs have an intrinsic min width that otherwise pushes buttons out of the card */
.saverow > .btn{min-height:42px}
/* the taken add-row holds input+select+button: without a floor the input collapses
   to ~48px on a 360px phone; this forces the select/button to wrap instead */
#td_new{min-width:150px}
@media(max-width:640px){
  .todo{gap:6px}
  .todo .mini{padding:4px 8px;font-size:13px}
  .mini-label{display:none}
  .acct .top{flex-direction:column;align-items:flex-start;gap:3px}
}
.btn{padding:9px 16px;border:none;border-radius:10px;background:var(--ember);color:#1a0f08;
  font:600 15px "Inter",sans-serif;cursor:pointer}
.btn:disabled{opacity:.45;cursor:not-allowed;filter:grayscale(.5)}
.btn.saved{background:var(--moss);color:#0d1a16}
.split-toggle{background:transparent;border:1px solid var(--line);color:var(--muted);
  padding:6px 12px;border-radius:999px;font:500 14px "Inter",sans-serif;cursor:pointer;margin-top:8px}
.pers-subtotals{margin-top:10px;font-size:14px;color:var(--muted)}
.pers-subtotals span{display:inline-block;margin-right:12px}
.pers-subtotals b{color:var(--paper);font-family:"Space Mono",monospace}

/* Kosten: kop, wisselbare tijdlijn/saldogrid en afrekenacties */
#kosten{min-width:0}
#kosten .kosten-kop{padding:8px 2px 0;min-width:0}
#kosten .kosten-titel{font-family:"Bricolage Grotesque",sans-serif;font-size:21px;font-weight:600;line-height:1.2;overflow-wrap:anywhere}
#kosten .kosten-personen{margin-top:2px;color:var(--muted);font-size:14px}
#kosten .kosten-totalen{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;margin-top:16px}
#kosten .kosten-totalen > div{min-width:0}
#kosten .kosten-totalen span{display:block;color:var(--muted);font-size:13px;overflow-wrap:anywhere}
#kosten .kosten-totalen strong{display:block;margin-top:2px;font-family:"Space Mono",monospace;font-size:clamp(19px,5.5vw,25px);font-weight:600;line-height:1.2;overflow-wrap:anywhere}
#kosten .kosten-positief{color:var(--moss)}
#kosten .kosten-negatief{color:var(--ember)}
#kosten .kosten-neutraal{color:var(--muted)}
#kosten .kosten-schakelaar{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin:18px 0 10px;padding:4px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
#kosten .kosten-schakelaar button{min-width:0;padding:9px 10px;border:0;border-radius:9px;background:transparent;color:var(--muted);font:600 14px "Inter",sans-serif;cursor:pointer}
#kosten .kosten-schakelaar button[aria-pressed="true"]{background:var(--surface-2);color:var(--paper)}
#kosten .kosten-weergave[hidden],#kosten .kosten-afrekening-detail[hidden]{display:none}
#kosten .kosten-weergave{min-width:0;overflow:hidden}
#kosten .kosten-daggroep{margin-top:16px}
#kosten .kosten-daggroep:first-child{margin-top:0}
#kosten .kosten-daglabel{margin-bottom:4px;color:var(--muted);font-family:"Bricolage Grotesque",sans-serif;font-size:13px;font-weight:600;letter-spacing:.03em;text-transform:uppercase}
#kosten .kosten-bon{min-width:0;border-top:1px solid var(--line)}
#kosten .kosten-bon:first-of-type{border-top:0}
#kosten .kosten-bon > summary{display:grid;grid-template-columns:12px minmax(0,1fr) auto;align-items:start;gap:9px;min-width:0;padding:11px 0;color:var(--paper);font:500 15px "Inter",sans-serif}
#kosten .kosten-bon > summary::before{grid-column:1;margin-top:1px;color:var(--muted)}
#kosten .kosten-bon[open] > summary{margin-bottom:0}
#kosten .kosten-bon-kern{grid-column:2;min-width:0}
#kosten .kosten-bon-titel{display:block;min-width:0;font-weight:600;line-height:1.3;overflow-wrap:anywhere}
#kosten .kosten-bon-merkje{display:inline-block;margin-left:4px;color:var(--moss);font-size:10px;font-weight:600;letter-spacing:.05em;vertical-align:1px;white-space:nowrap}
#kosten .kosten-bon-meta{display:block;margin-top:3px;color:var(--muted);font-size:13px;font-weight:400;line-height:1.35;overflow-wrap:anywhere}
#kosten .kosten-deellabel{display:block;margin-top:5px;color:var(--muted);font-size:11px;font-weight:600;letter-spacing:.04em;line-height:1.3;overflow-wrap:anywhere}
#kosten .kosten-deellabel.kosten-voorgeschoten{color:var(--moss)}
#kosten .kosten-deellabel.kosten-geen-deel{color:var(--muted)}
#kosten .kosten-bon-bedrag{grid-column:3;min-width:0;color:var(--paper);font-family:"Space Mono",monospace;font-size:14px;font-weight:600;white-space:nowrap}
#kosten .kosten-bon > div{min-width:0;padding:0 0 12px 21px;overflow-wrap:anywhere}
#kosten .kosten-saldogrid > h3{margin-bottom:4px;color:var(--paper);font-size:17px;letter-spacing:0;text-transform:none}
#kosten .kosten-grid-uitleg{margin:0 0 10px;color:var(--muted);font-size:13px;line-height:1.45}
#kosten .kosten-persoon{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0;padding:10px 0;border-top:1px solid var(--line)}
#kosten .kosten-persoon-kern{display:flex;align-items:center;gap:10px;min-width:0;flex:1}
#kosten .kosten-avatar{display:grid;place-items:center;flex:0 0 38px;width:38px;height:38px;border:1px solid var(--line);border-radius:50%;background:var(--surface-2);color:var(--paper);font-size:12px;font-weight:600;letter-spacing:.04em}
#kosten .kosten-persoon-tekst{display:block;min-width:0;line-height:1.25}
#kosten .kosten-persoon-tekst strong{display:block;min-width:0;font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#kosten .kosten-persoon-tekst small{display:block;margin-top:3px;color:var(--muted);font-size:12px;line-height:1.25;overflow-wrap:anywhere}
#kosten .kosten-saldo{flex:0 0 auto;font-family:"Space Mono",monospace;font-size:14px;font-weight:600;white-space:nowrap}
#kosten .kosten-acties{min-width:0;margin-top:10px}
#kosten .kosten-acties > .editform{border-color:rgba(127,176,105,.45);background:var(--surface-2)}
#kosten .kosten-acties > .editform > summary{color:var(--paper)}
#kosten .kosten-afrekening-knop{width:100%;min-height:44px;margin:2px 0 10px;padding:9px 14px;border:1px solid var(--line);border-radius:10px;background:transparent;color:var(--paper);font:600 14px "Inter",sans-serif;cursor:pointer}
#kosten .kosten-afrekening-knop::after{content:" ↓";color:var(--muted)}
#kosten .kosten-afrekening-knop[aria-expanded="true"]::after{content:" ↑"}
#kosten .kosten-afrekening-detail{min-width:0}
#kosten .kosten-afrekening-detail .name{min-width:0;overflow-wrap:anywhere}
@media(max-width:390px){
  #kosten .kosten-totalen{gap:8px}
  #kosten .kosten-totalen strong{font-size:18px}
  #kosten .kosten-bon > summary{gap:7px}
  #kosten .kosten-bon-bedrag{font-size:13px}
  #kosten .kosten-persoon{gap:7px}
  #kosten .kosten-avatar{flex-basis:34px;width:34px;height:34px}
}

/* carpool — auto-tegels */
.cp-dir{margin-top:14px}
.cp-dir:first-child{margin-top:0}
.cp-dir > h4{font:600 13px "Bricolage Grotesque",sans-serif;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 4px;display:flex;align-items:center;gap:7px}
.cp-sum{color:var(--muted);font-size:13.5px;margin-top:2px}
.cp-todo{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:11px 12px;margin:10px 0}
.cp-todo > h4{font:600 13px "Bricolage Grotesque",sans-serif;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 4px}
.cp-todo p{margin:0;line-height:1.5;color:var(--paper)}
.cp-car{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:11px 12px;margin:8px 0}
.cp-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.cp-driver{font-weight:600;font-size:16px;min-width:0;overflow-wrap:anywhere}
.cp-seats{display:inline-flex;align-items:center;flex:0 0 auto;border:1px solid;border-radius:99px;padding:2px 9px;font:600 11.5px "Inter",sans-serif;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}
.cp-seats.open{color:var(--moss);border-color:currentColor}
.cp-seats.full{color:var(--muted);border-color:var(--line)}
.cp-note{color:var(--muted);font-size:13.5px;margin-top:3px;overflow-wrap:anywhere}
.cp-pax{margin-top:9px;display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.cp-label{color:var(--muted);font-size:13px;margin-right:2px}
.cp-pill{display:inline-flex;align-items:center;gap:5px;background:var(--surface);border:1px solid var(--line);border-radius:99px;padding:3px 6px 3px 11px;font-size:13.5px;max-width:100%;overflow-wrap:anywhere}
.cp-free{border-style:dashed;color:var(--muted);background:transparent;padding:3px 11px}
.cp-x{background:transparent;border:0;color:var(--muted);cursor:pointer;font-size:13px;line-height:1;padding:2px 3px;border-radius:99px;flex:0 0 auto}
.cp-x:hover{color:var(--ember)}
.cp-pax .empty{color:var(--muted);font-size:13.5px;padding:0;font-style:italic}
.cp-actions{margin-top:8px;display:flex;gap:4px;flex-wrap:wrap;align-items:center}
@media(pointer:coarse){.cp-x{padding:6px 8px}}
.mini.join{border-color:var(--moss);color:var(--moss)}

/* album */
.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:10px}
.grid figure{margin:0;position:relative;border-radius:10px;overflow:hidden;background:var(--surface)}
.grid img{width:100%;height:150px;object-fit:cover;display:block}
.grid figcaption{position:absolute;left:0;right:0;bottom:0;padding:16px 8px 6px;font-size:12px;
  color:#fff;background:linear-gradient(transparent,rgba(0,0,0,.75))}
.delphoto{position:absolute;top:6px;right:6px;width:26px;height:26px;border-radius:99px;border:none;
  background:rgba(0,0,0,.55);color:#fff;font-size:14px;line-height:1;cursor:pointer}
.delphoto:disabled{opacity:.5;cursor:default}
.likephoto{position:absolute;bottom:6px;left:6px;width:auto;padding:5px 8px;border-radius:99px;border:none;
  background:rgba(0,0,0,.55);color:#fff;font-size:14px;line-height:1;cursor:pointer;z-index:1}
.likephoto:disabled{opacity:.5;cursor:default}
.grid img{cursor:zoom-in}
@media(min-width:520px){.grid{grid-template-columns:repeat(3,1fr)}}

/* fullscreen fotoviewer (viewer.js) — fysieke pager: drie slides naast elkaar */
#mviewer{position:fixed;inset:0;z-index:20;overscroll-behavior:contain;outline:none}
#mviewer .mv-backdrop{position:absolute;inset:0;background:var(--bg);filter:brightness(.45);opacity:0;will-change:opacity}
#mviewer .mv-track{position:absolute;inset:0;display:flex;width:300vw;will-change:transform;
  touch-action:none;user-select:none;-webkit-user-select:none}
#mviewer .mv-slide{width:100vw;height:100dvh;flex:0 0 100vw;display:flex;align-items:center;
  justify-content:center;overflow:hidden}
#mviewer .mv-slide img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;
  user-select:none;-webkit-user-drag:none;will-change:transform,opacity}
#mviewer .mv-top{position:absolute;top:0;left:0;right:0;z-index:3;display:flex;align-items:center;gap:10px;
  padding:calc(8px + env(safe-area-inset-top,0px)) 12px 10px;
  background:linear-gradient(rgba(0,0,0,.55),transparent);transition:opacity .18s ease}
#mviewer .mv-back{width:44px;height:44px;border-radius:99px;border:none;background:rgba(255,255,255,.12);
  color:#fff;font-size:26px;line-height:1;cursor:pointer;flex:0 0 auto}
#mviewer .mv-meta{display:flex;flex-direction:column;min-width:0}
#mviewer .mv-cap{color:var(--paper);font:600 16px "Bricolage Grotesque",sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#mviewer .mv-sub{display:flex;gap:8px;color:var(--muted);font-size:12.5px}
#mviewer .mv-sub > span + span::before{content:"· "}
#mviewer .mv-name{color:var(--muted);font-size:13.5px}
#mviewer .mv-bot{position:absolute;left:0;right:0;bottom:0;z-index:3;
  padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px));
  background:linear-gradient(transparent,rgba(0,0,0,.55));transition:opacity .18s ease}
#mviewer .mv-top.mv-nocap .mv-cap{display:none}
#mviewer .mv-bottom-meta{display:flex;align-items:center;justify-content:center;gap:10px}
#mviewer .mv-like{display:inline-flex;border:1px solid var(--line);border-radius:99px;padding:4px 12px;background:var(--surface);color:var(--paper);
  font:inherit;font-size:13.5px;line-height:1.2;cursor:pointer}
#mviewer .mv-like:disabled{opacity:.55;cursor:default}
#mviewer .mv-top.mv-hidden,#mviewer .mv-bot.mv-hidden{opacity:0;pointer-events:none}
#mviewer .mv-nav{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:46px;
  border-radius:99px;border:none;background:rgba(255,255,255,.12);color:#fff;font-size:26px;line-height:1;
  cursor:pointer;z-index:3}
#mviewer .mv-nav:disabled{opacity:.25;cursor:default}
#mviewer .mv-prev{left:16px}
#mviewer .mv-next{right:16px}
@media(max-width:767px), (pointer:coarse){#mviewer .mv-nav{display:none}}

/* feedback kanban (superuser only) */
.kfilter{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px}
.kfilter-label{color:var(--muted);font-size:13px;text-transform:uppercase;letter-spacing:.05em}
.ksearch{flex:1 1 220px;max-width:360px;padding:7px 10px;border-radius:9px;border:1px solid var(--line);
  background:var(--bg);color:var(--paper);font:400 14px "Inter",sans-serif}
.kchip{border:1px solid var(--line);background:transparent;color:var(--muted);border-radius:999px;
  padding:5px 12px;font:600 13px "Inter",sans-serif;cursor:pointer}
.kchip.on{background:var(--surface-2);color:var(--paper);border-color:transparent}
.kanban{display:flex;gap:10px;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:6px;margin-top:10px}
.kcol{flex:0 0 240px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  padding:10px}
.kcol h3{margin:0 0 8px;font-family:"Bricolage Grotesque",sans-serif;font-weight:600;font-size:14px;
  text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.karchive-sentinel{height:1px}
.kcard{background:var(--surface-2);border-radius:10px;padding:9px 10px;margin-bottom:8px;cursor:grab}
.kcard:active{cursor:grabbing}
.kcard[draggable="false"]{cursor:default}
.ktext{font-size:14px;line-height:1.4}
.ktext.clamped{display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden}
.kmeta{color:var(--muted);font-size:12px;margin-top:6px}
.krun{opacity:.85}
.kreply{margin-top:7px;padding-left:8px;border-left:2px solid var(--line);color:var(--muted);
  font-size:12px;line-height:1.4}
.klocked{display:inline-block;margin-top:8px;color:var(--muted);font-size:12px}
.kedit{background:none;border:none;color:var(--moss);font:inherit;font-size:12px;cursor:pointer;padding:0}
.kmore{background:none;border:none;color:var(--moss);font:inherit;font-size:12px;cursor:pointer;padding:0;margin-top:4px}
.kedit-area{width:100%;box-sizing:border-box;font:400 14px 'Inter',sans-serif;line-height:1.4;padding:8px 9px;border-radius:8px;border:1px solid var(--line);background:var(--bg);color:var(--paper);resize:vertical}
.kedit-bar{display:flex;gap:8px;margin-top:6px}
.kstatus{margin-top:8px;width:100%;background:var(--bg);color:var(--paper);border:1px solid var(--line);
  border-radius:7px;padding:5px 7px;font:500 13px "Inter",sans-serif}

.pbadge{display:inline-block;font-size:12px;padding:2px 9px;border-radius:999px;border:1px solid var(--line);
  color:var(--muted);margin-bottom:6px}
.pbadge.ok{border-color:var(--moss);color:var(--moss)}
.pbadge.no{border-color:var(--ember);color:var(--ember)}

/* reisfase-balk in de header: waar in het traject zit deze groep */
.phasebar{display:flex;align-items:center;gap:4px;margin-top:8px;font-size:14px;color:var(--muted);
  flex-wrap:wrap}
.pstep{opacity:.45;white-space:nowrap}
.pstep.done{opacity:.8}
.pstep.cur{opacity:1;color:var(--paper);font-weight:600;background:var(--surface-2);
  padding:2px 9px;border-radius:999px}
.pstep .plbl{display:none}
.pstep.cur .plbl{display:inline}
.psep{opacity:.35}

.tripsel{margin-top:8px;background:var(--surface);color:var(--paper);border:1px solid var(--line);
  border-radius:9px;padding:7px 10px;font:500 15px "Inter",sans-serif;max-width:240px}
.titlerow{display:flex;align-items:center;gap:10px;min-width:0}
.titlerow h1{min-width:0}
#tripsel{flex:0 0 38px;width:38px;height:34px;margin:0;padding:0;appearance:none;-webkit-appearance:none;
  color:transparent;font-size:16px;cursor:pointer;
  background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%238ba39a' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m7 10 5 5 5-5'/%3E%3C/svg%3E") center/18px no-repeat;
  border:1px solid var(--line);border-radius:9px}
#tripsel option{color:var(--paper);background:var(--surface)}
.empty{color:var(--muted);padding:18px 2px;font-size:16px}

/* auth + admin */
.hidden{display:none !important}
.publicnav{position:relative;z-index:10;display:flex;justify-content:center;align-items:center;gap:18px;
  flex-wrap:wrap;padding:11px 20px;padding-top:calc(11px + env(safe-area-inset-top,0px));
  background:rgba(16,32,28,.9);backdrop-filter:blur(6px);border-bottom:1px solid var(--line)}
.publicnav::-webkit-scrollbar{display:none}
.publicnav a{color:var(--muted);text-decoration:none;font:600 13px "Inter",sans-serif;flex:0 0 auto;transition:color .15s;border-bottom:2px solid transparent}
.publicnav a:hover{color:var(--paper)}
.publicnav a[aria-current="page"]{color:var(--paper);border-bottom-color:var(--moss)}
.publicnav .publicnav-home{color:var(--paper);font-family:"Bricolage Grotesque",sans-serif;font-size:15px}
.navaccount{position:absolute;right:20px;top:50%;transform:translateY(-50%);margin-left:0;display:flex;align-items:center;gap:10px}
.whoami-btn{display:inline-flex;align-items:center;gap:7px;min-width:0;padding:0;background:transparent;border:0;
  color:inherit;font:inherit;cursor:pointer}
.whoami-avatar{width:22px;height:22px;flex:0 0 22px;border-radius:50%;object-fit:cover;background:var(--surface-2)}
#whoami{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:600 13px "Inter",sans-serif;color:var(--muted)}
.account-mobile{display:none}
.publicnav .logout{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;font-size:13px;align-self:auto}
.logout-icon{display:none}
@media(max-width:920px){
  .publicnav{flex-wrap:nowrap;overflow-x:auto;justify-content:flex-start;gap:12px}
  #whoami{display:none}
  .head{flex-direction:column;align-items:stretch;gap:0}
  .head > div{min-width:0}
  .account-mobile{display:flex;justify-content:flex-start;align-items:center;gap:8px;order:-1;align-self:stretch;margin:0 0 10px}
  .whoami-mobile{display:flex;height:32px;line-height:30px;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:0 11px;color:var(--paper);font:600 13px/30px Inter,sans-serif;white-space:nowrap;max-width:70vw}
  #whoami_mobile{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .navaccount{display:none}
  .logout-label{display:none}
  .logout-icon{display:block}
  .publicnav .logout{padding:6px 8px;border-radius:999px}
  .logout-mobile{display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 8px;line-height:1;border-radius:999px}
}
.login{position:fixed;inset:0;display:flex;align-items:safe center;justify-content:center;
  background:linear-gradient(160deg,#12241f,#0b1613);padding:20px;overflow-y:auto}
.login-card{width:100%;max-width:340px;background:var(--surface);border:1px solid var(--line);
  border-radius:16px;padding:26px 22px;display:flex;flex-direction:column;gap:12px}
.login-card h1{font-family:"Bricolage Grotesque",sans-serif;font-weight:800;font-size:40px;margin:0;line-height:.95}
.login-card .sub{margin:0 0 6px;color:var(--muted);font-size:15px}
.login-card input{padding:11px 13px;border-radius:10px;border:1px solid var(--line);
  background:var(--bg);color:var(--paper);font:400 16px "Inter",sans-serif}
/* de groene rand blijft de rustige focusmarkering; toetsenbordfocus krijgt daarnaast de ring */
.login-card input:focus{outline:none;border-color:var(--moss)}
.login-card input:focus-visible{outline:2px solid var(--paper);outline-offset:3px}
.lerr{color:var(--ember);font-size:14px;margin:2px 0 0;min-height:16px}
.profile-card{position:relative;max-width:400px}
#profile{z-index:20;background:rgba(11,22,19,.88)}
.profile-close{position:absolute;top:12px;right:14px;padding:2px 8px;background:transparent;border:0;
  color:var(--muted);font:400 30px/1 "Inter",sans-serif;cursor:pointer}
.profile-close:hover{color:var(--paper)}
.profile-avatar-wrap{display:flex;flex-direction:column;align-items:center;gap:10px;padding:8px 0}
.profile-avatar{width:96px;height:96px;border-radius:50%;object-fit:cover;background:var(--surface-2)}
.profile-upload{display:inline-flex;align-items:center;padding:7px 12px;font-size:14px}
.profile-card h1{margin:6px 0 0;text-align:center;font-size:22px}
.profile-sub{text-align:center;color:var(--muted);font-size:14px;margin:2px 0 4px}
.profile-block{border-top:1px solid var(--line);margin-top:12px;padding-top:12px}
.profile-block h2{font:600 15px "Bricolage Grotesque",sans-serif;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0 0 6px}
.profile-block p{margin:0 0 4px;overflow-wrap:anywhere}
.profile-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.profile-chip{display:inline-flex;align-items:center;background:var(--surface-2);border:1px solid var(--line);border-radius:99px;padding:3px 11px;font-size:13.5px;max-width:100%;overflow-wrap:anywhere}
.profile-export{border-top:1px solid var(--line);margin-top:8px;padding-top:12px}
.profile-export h2{font-size:18px;margin:0 0 4px}.profile-export p{margin:0 0 8px}
.profile-export .who{margin-left:10px}

/* profielfoto bijsnijden */
.avatar-cropper{position:fixed;inset:0;z-index:30;display:flex;align-items:center;justify-content:center;padding:16px;background:rgba(5,12,10,.7)}
.avatar-cropper-backdrop{position:absolute;inset:0}
.avatar-cropper-card{position:relative;width:min(100%,440px);max-height:calc(100dvh - 32px);overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:20px;display:flex;flex-direction:column;gap:14px}
.avatar-cropper-card h2{margin:0;font:800 25px/1 "Bricolage Grotesque",sans-serif;color:var(--paper)}
.avatar-cropper-card p{margin:0;color:var(--muted);font-size:14px}
/* De export vult lege ruimte wit, dus het kader toont dezelfde achtergrond: wat je ziet is wat je krijgt. */
.avatar-crop-frame{position:relative;align-self:center;width:min(280px,calc(100vw - 72px));aspect-ratio:1;overflow:hidden;background:#fff;touch-action:none;user-select:none;cursor:grab}
.avatar-crop-frame:active{cursor:grabbing}
.avatar-crop-frame img{position:absolute;left:50%;top:50%;max-width:none;max-height:none;transform-origin:0 0;will-change:transform;pointer-events:none}
.avatar-crop-mask{position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at center,transparent 0 49.7%,rgba(0,0,0,.58) 50.3%)}
.avatar-crop-frame::after{content:"";position:absolute;inset:0;border:1px solid rgba(255,255,255,.45);pointer-events:none}
.avatar-crop-zoom{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:14px}
.avatar-crop-zoom input{flex:1;accent-color:var(--accent)}
.avatar-crop-actions{display:flex;gap:10px;justify-content:flex-end}
.avatar-crop-actions .btn{min-height:44px}
@media (min-width:600px){.avatar-crop-frame{width:min(360px,calc(100vw - 96px))}}
.logout{background:transparent;border:1px solid var(--line);color:var(--muted);
  padding:7px 12px;border-radius:999px;font:500 14px "Inter",sans-serif;cursor:pointer;align-self:start}
.head{display:flex;justify-content:space-between;align-items:start;gap:12px}

.field{display:flex;flex-direction:column;gap:4px;margin:8px 0;min-width:0}
.field label{font-size:13px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.field input,.field select,.field textarea{padding:9px 11px;border-radius:9px;border:1px solid var(--line);
  background:var(--bg);color:var(--paper);font:400 16px "Inter",sans-serif;width:100%;box-sizing:border-box}
.field textarea{resize:vertical}
.frow{display:flex;gap:8px}
.frow>.field.narrow{flex:0 0 110px}
@media(max-width:520px){.frow{flex-direction:column}.frow>.field.narrow{flex:1 1 auto}}
.field input[type="date"]::-webkit-calendar-picker-indicator{filter:invert(1)}
.field.check{flex-direction:row;align-items:center;gap:8px}
.field.check input{width:auto}
.field.check label{text-transform:none;letter-spacing:0;font-size:15px;color:var(--paper)}
.acct{min-width:0;padding:10px 0;border-top:1px solid var(--line)}
#admin .acct{padding:18px 0}
.trip-card{background:var(--surface-2);border:1px solid rgba(232,230,221,.22);border-left:3px solid var(--moss);border-radius:10px;margin:12px 0;padding:12px 14px}
#admin .trip-card{padding:12px 14px}
.acct:first-child{border-top:none}
.acct .top{display:flex;min-width:0;justify-content:space-between;align-items:baseline;gap:8px}
.acct .meta{min-width:0;overflow-wrap:anywhere;color:var(--muted);font-size:14px;margin-top:2px}
.acct .code{font-family:"Space Mono",monospace;color:var(--moss)}
.badge{font-size:12px;padding:2px 7px;border-radius:99px;border:1px solid var(--line);color:var(--muted);white-space:nowrap}
.badge.on{background:var(--moss);color:#0d1a16;border-color:transparent}
.badge.tg{background:#59a8d8;color:#10201c;border-color:transparent}
.mini{background:transparent;border:1px solid var(--line);color:var(--muted);padding:5px 10px;
  border-radius:8px;font:500 13px "Inter",sans-serif;cursor:pointer;margin:6px 6px 0 0}
@media(pointer:coarse){.mini{padding:9px 12px}}  /* ~40px touch targets on phones */
.mini.claimhand{border-color:var(--moss);color:var(--moss)}
.mini.claimhand.claimed{border-color:var(--ember);color:var(--ember)}
.mini.danger{border-color:var(--ember);color:var(--ember)}
.mini.on{border-color:var(--moss);color:var(--moss);font-weight:600}
.contact{display:flex;justify-content:space-between;padding:6px 0;border-top:1px solid var(--line)}
.contact:first-child{border-top:none}
.contact a{color:var(--moss);text-decoration:none;font-family:"Space Mono",monospace;font-size:14px}
.hint{color:var(--muted);font-size:13px;text-align:center;margin:24px 0 0;padding:0 20px}

/* album section header with a "Download alles" action */
.albumhdr{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:18px}
.albumhdr h3{margin:0}
.dlall{flex:0 0 auto;color:var(--paper);background:var(--surface-2);border:1px solid var(--line);
  border-radius:999px;padding:6px 12px;font:600 13px "Inter",sans-serif;text-decoration:none;white-space:nowrap}
.dlall:hover{border-color:var(--moss)}
.albumdl{margin:2px 0 4px}

/* wider screens: use the horizontal space instead of a narrow ribbon */
@media(min-width:880px){
  .wrap{max-width:820px}
  .grid{grid-template-columns:repeat(4,1fr)}
  .tabs{overflow:visible}
  .tabs .tab-scroll-fade{display:none}
  /* the feedback board breaks out of the content column and keeps a constant
     width (~5 columns), centered; visible columns flex to fill it, so hiding
     columns via the filter simply makes the remaining ones wider */
  #feedback.panel{width:100vw;max-width:100vw;position:relative;z-index:0;isolation:isolate;left:50%;margin-left:-50vw;
    padding:1px 24px 12px;background:var(--bg)}
  #feedback .card,#feedback .kfilter,#feedback .kanban{max-width:1160px;margin-left:auto;margin-right:auto}
  #feedback .kanban{width:min(1160px,100%);padding-bottom:12px;background:var(--bg)}
  #feedback .kcol{flex:1 1 0;min-width:160px}
}
@media(min-width:1200px){
  .wrap{max-width:900px}
}

@media (prefers-reduced-motion:reduce){.panel,.toast{animation:none}#mviewer .mv-slide img{transition:none}}

/* archived trip = read-only: hide every edit control in the content panels.
   Beheer (#admin) is exempt — it lists other, active trips too; the archived
   trip's own edit form is suppressed at render time in renderAdmin. */
body.trip-archived :is(#kosten,#plan,#lijsten,#taken,#album)
  :is(button,input,select,textarea,label.chip,.saverow,.delphoto,.likephoto){display:none !important}
body.trip-archived :is(#kosten,#plan,#lijsten,#taken,#album) .editform{display:none !important}
