:root{
 --navy-1000:#081625;--navy-950:#10243a;--navy-900:#173450;--navy-800:#234d70;
 --blue-700:#2f82ad;--blue-600:#3fa7d6;--blue-500:#67bee2;--blue-100:#e8f5fa;
 --red-700:#971a31;--red-600:#b3203a;--red-100:#fbe9ed;
 --ice:#f5f8fa;--paper:#fff;--snow:#f7f8fa;--sand:#f3eee7;--ink:#101d2b;--muted:#6b7a8c;--line:#dbe4e9;
 --danger:#b94f55;--shadow:0 18px 52px rgba(16,34,56,.11);--soft-shadow:0 8px 28px rgba(16,34,56,.08);
 --sidebar:232px;--mobile-nav:76px;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--ice)
}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--ice);color:var(--ink)}body{overflow-x:hidden}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-body{min-height:100dvh}.app-shell{min-height:100dvh}.sidebar{display:none}.app-main{min-height:100dvh}.app-view{display:none}.app-view.is-active{display:block}
.brand,.auth-brand,.share-brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:inherit}.brand img,.auth-brand img,.share-brand img{width:46px;height:36px}.brand span,.auth-brand span,.share-brand span{display:grid;gap:1px}.brand strong,.auth-brand strong,.share-brand strong{font-size:22px;letter-spacing:-.03em}.brand small,.auth-brand small,.share-brand small{color:rgba(255,255,255,.67);font-size:10px}.eyebrow{display:inline-block;color:var(--blue-700);font-weight:850;font-size:12px;letter-spacing:.14em;text-transform:uppercase}.page-header{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;max-width:1420px;margin:0 auto 26px}.page-header-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.page-header h1{margin:3px 0 4px;font-size:clamp(40px,6vw,68px);line-height:.98;letter-spacing:-.055em}.page-header p{margin:12px 0 0;color:var(--muted);font-size:clamp(16px,2vw,22px)}
.content-view{min-height:calc(100dvh - var(--mobile-nav));padding:max(28px,env(safe-area-inset-top)) 28px calc(var(--mobile-nav) + 30px);background:linear-gradient(180deg,#fbfcfd 0%,#f4f8fa 100%)}
.primary-button,.secondary-button,.danger-button{border:0;border-radius:14px;min-height:48px;padding:0 18px;font-weight:800}.primary-button{background:var(--navy-900);color:#fff;box-shadow:0 10px 26px rgba(23,46,73,.16)}.secondary-button{background:#fff;color:var(--navy-900);border:1px solid var(--line)}.danger-button{background:#fff;color:var(--danger);border:1px solid #edcfd1}.icon-button{border:0;background:transparent;color:inherit}.back-button{border:0;background:var(--blue-100);color:var(--navy-900);border-radius:999px;padding:9px 13px;font-weight:800}
.map-view{position:relative;height:calc(100dvh - var(--mobile-nav));overflow:hidden;background:#d9ebf2}.main-map{position:absolute;inset:0;z-index:1}.leaflet-control-attribution{font-size:9px!important}.map-tools{position:absolute;z-index:500;right:14px;bottom:18px;display:grid;gap:10px}.round-button{width:46px;height:46px;border:1px solid rgba(255,255,255,.75);background:rgba(255,255,255,.96);border-radius:50%;color:var(--navy-900);box-shadow:var(--soft-shadow);font-weight:900;font-size:20px}.map-panel{position:absolute;z-index:550;left:12px;right:12px;top:max(12px,env(safe-area-inset-top));display:grid;gap:9px;pointer-events:none}.glass-card{pointer-events:auto;background:rgba(255,255,255,.94);backdrop-filter:blur(18px);border:1px solid rgba(255,255,255,.8);border-radius:18px;box-shadow:var(--soft-shadow);padding:13px}.live-summary{display:grid;grid-template-columns:52px 1fr auto;gap:11px;align-items:center}.live-badge{width:52px;height:45px;border-radius:12px;background:linear-gradient(145deg,var(--blue-100),#bcdce8);display:grid;place-items:center;font-weight:900;color:var(--navy-900)}.kicker-row{display:flex;align-items:center;gap:6px;color:var(--blue-700);font-size:11px;font-weight:850}.status-dot{width:9px;height:9px;border-radius:50%;background:var(--blue-500);box-shadow:0 0 0 3px rgba(102,179,212,.18)}.live-summary strong{display:block;margin-top:3px}.live-summary small{display:block;color:var(--muted);font-size:10px;margin-top:1px}.live-right{text-align:right;align-self:start}.current-trip-mini>.eyebrow{margin-bottom:7px}.plain-row{width:100%;border:0;background:transparent;color:inherit;text-align:left;padding:0;display:grid;grid-template-columns:1fr auto;align-items:center}.plain-row span{display:grid;gap:2px}.plain-row small{color:var(--muted)}.plain-row b{font-size:26px;color:#9eacb6}.section-line{display:flex;justify-content:space-between;gap:12px}.section-line small{color:var(--muted)}.activity-list{display:grid}.activity-item{display:grid;grid-template-columns:10px 1fr auto;gap:9px;align-items:center;padding:9px 0;border-top:1px solid var(--line)}.activity-item:first-child{border-top:0}.activity-dot{width:8px;height:8px;border-radius:50%;background:var(--blue-600)}.activity-copy{min-width:0}.activity-copy strong{display:block;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.activity-copy small,.activity-time{font-size:10px;color:var(--muted)}.loading-row{color:var(--muted);font-size:12px;padding:8px 0}
.trips-grid{max-width:1420px;margin:0 auto;display:grid;gap:18px}.trip-card{border:1px solid var(--line);border-radius:24px;background:#fff;overflow:hidden;box-shadow:var(--soft-shadow);text-align:left;padding:0;color:inherit}.trip-card-main{padding:24px}.trip-badge{display:inline-flex;border-radius:999px;background:var(--blue-100);color:var(--blue-700);font-size:11px;font-weight:850;letter-spacing:.08em;text-transform:uppercase;padding:6px 10px}.trip-card.is-current .trip-card-main{background:linear-gradient(135deg,var(--navy-950),#2d5577);color:#fff}.trip-card.is-current .trip-badge{background:rgba(102,179,212,.22);color:#ccecf8}.trip-card h2{margin:14px 0 5px;font-size:25px;letter-spacing:-.03em}.trip-card p{margin:0;color:var(--muted)}.trip-card.is-current p{color:rgba(255,255,255,.72)}.trip-stats{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line)}.trip-stat{padding:17px 12px;text-align:center;border-left:1px solid var(--line)}.trip-stat:first-child{border-left:0}.trip-stat strong{display:block;font-size:18px}.trip-stat small{color:var(--muted)}
.empty-card,.panel-card,.metric-card,.menu-card,.place-card,.timeline-card{background:#fff;border:1px solid var(--line);border-radius:22px;box-shadow:var(--soft-shadow)}.empty-card{padding:28px;color:var(--muted);max-width:1420px;margin-left:auto;margin-right:auto}.empty-card strong{color:var(--ink);display:block;margin-bottom:5px}.error-card{border-color:#e9c9cc;background:#fff8f8}.panel-card{padding:24px}.detail-header{max-width:1420px;margin:0 auto 22px}.detail-header-top{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.detail-header h1{font-size:clamp(38px,6vw,62px);letter-spacing:-.055em;margin:9px 0 4px}.detail-header p{color:var(--muted);font-size:18px;margin:0}.detail-metrics{max-width:1420px;margin:0 auto 20px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px}.metric-card{padding:20px}.metric-card small{display:block;color:var(--muted);margin-bottom:8px}.metric-card strong{font-size:28px;letter-spacing:-.04em}.detail-grid{max-width:1420px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1.6fr) minmax(320px,.8fr);gap:18px}.trip-map{height:440px;border-radius:18px;overflow:hidden;background:#dceaf0}.panel-title{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:16px}.panel-title h2{margin:0;font-size:22px}.country-chips,.chips{display:flex;gap:8px;flex-wrap:wrap}.country-chip,.chip{border:0;border-radius:999px;padding:8px 12px;background:#eaf1f5;color:#536575}.country-chip{font-weight:750;color:var(--navy-900)}.chip.is-active{background:var(--navy-900);color:#fff}.stats-list{display:grid;gap:1px;background:var(--line);border-radius:16px;overflow:hidden}.stats-row{background:#fff;display:flex;justify-content:space-between;gap:16px;padding:12px 14px}.stats-row span{color:var(--muted)}.budget-progress{height:9px;background:#e7edf1;border-radius:999px;overflow:hidden;margin:12px 0}.budget-progress i{display:block;height:100%;background:linear-gradient(90deg,var(--blue-600),var(--red-600));border-radius:inherit}.category-bars{display:grid;gap:10px}.category-row{display:grid;grid-template-columns:1fr auto;gap:8px}.category-row small{color:var(--muted)}
.timeline{max-width:1420px;margin:0 auto;display:grid;gap:10px}.timeline-card{display:grid;grid-template-columns:12px 1fr auto;gap:14px;align-items:start;padding:16px}.timeline-dot{width:10px;height:10px;border-radius:50%;background:var(--blue-600);margin-top:5px}.timeline-card h3{margin:0 0 3px;font-size:16px}.timeline-card p,.timeline-card small{margin:0;color:var(--muted)}
.places-toolbar{max-width:1420px;margin:0 auto 18px;display:grid;gap:13px}.places-toolbar input{width:100%;border:1px solid var(--line);border-radius:16px;background:#fff;padding:14px 16px;outline:0}.places-toolbar input:focus{border-color:var(--blue-500);box-shadow:0 0 0 3px rgba(102,179,212,.13)}.places-list{max-width:1420px;margin:0 auto;display:grid;gap:11px}.place-card{display:grid;grid-template-columns:12px 1fr auto;gap:14px;padding:17px;align-items:center}.place-dot{width:10px;height:10px;border-radius:50%;background:var(--blue-600)}.place-card h3{margin:0 0 4px}.place-card p,.place-card small{margin:0;color:var(--muted)}.place-meta{text-align:right}
.menu-grid{max-width:1420px;margin:0 auto;display:grid;gap:13px}.menu-card{display:grid;grid-template-columns:54px 1fr 22px;gap:14px;align-items:center;padding:17px;text-align:left;color:inherit}.menu-icon{width:54px;height:54px;border-radius:17px;background:linear-gradient(145deg,var(--blue-100),var(--red-100));display:grid;place-items:center;color:var(--navy-900);font-size:24px}.menu-card>span:nth-child(2){display:grid;gap:3px}.menu-card small{color:var(--muted)}.menu-card b{color:#9caab4;font-size:24px}
.owner-grid{max-width:1420px;margin:0 auto;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.owner-section{background:#fff;border:1px solid var(--line);border-radius:22px;padding:20px;box-shadow:var(--soft-shadow)}.owner-section h2{margin:0;font-size:23px}.owner-sub{color:var(--muted);margin:4px 0 16px}.owner-metrics{display:grid;grid-template-columns:1fr 1fr;gap:10px}.owner-metric{border:1px solid var(--line);border-radius:16px;padding:13px}.owner-metric.wide{grid-column:1/-1}.owner-metric span{display:block;color:var(--muted);font-size:12px}.owner-metric strong{display:block;margin-top:5px;font-size:18px}.owner-metric.hero strong{font-size:31px}.climate-section{grid-column:1/-1}.climate-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.climate-card{border:1px solid var(--line);border-radius:16px;padding:14px}.climate-card h3{margin:0}.climate-temp{font-size:27px;font-weight:850;margin:8px 0}.tone-ok{color:var(--blue-700)}.tone-off{color:var(--muted)}.tone-warn{color:var(--red-700)}
.budget-currencies{max-width:1420px;margin:0 auto 18px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px}.currency-card{background:#fff;border:1px solid var(--line);border-radius:20px;padding:18px;box-shadow:var(--soft-shadow)}.currency-card span{color:var(--blue-700);font-weight:800}.currency-card strong{display:block;font-size:28px;margin:7px 0 1px}.currency-card small{color:var(--muted)}.expense-list{display:grid}.expense-row{display:grid;grid-template-columns:1fr auto;gap:15px;padding:14px 0;border-top:1px solid var(--line)}.expense-row:first-child{border-top:0}.expense-row strong{display:block}.expense-row small{color:var(--muted)}
.form-grid{display:grid;gap:14px}.form-grid label{display:grid;gap:6px;font-weight:700}.form-grid input,.form-grid select{border:1px solid var(--line);border-radius:13px;padding:12px 13px;background:#fff}.permission-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.permission-toggle{border:1px solid var(--line);border-radius:14px;padding:12px;background:#fff;display:flex;gap:8px;align-items:center}.share-list{display:grid;gap:10px}.share-row{border:1px solid var(--line);border-radius:16px;padding:14px;display:grid;grid-template-columns:1fr auto;gap:14px}.share-row small{color:var(--muted)}.share-url{word-break:break-all;background:#f4f7f9;border-radius:10px;padding:9px;margin-top:8px;font-size:12px}.alert{border-radius:14px;padding:12px 14px;margin:12px 0}.alert.error{background:#fff2f2;border:1px solid #e9c9cc;color:#8a353c}.alert.info{background:var(--blue-100);border:1px solid #cae3ed}
.auth-body{min-height:100dvh;background:radial-gradient(circle at 10% 5%,rgba(184,220,233,.7),transparent 28%),radial-gradient(circle at 92% 92%,rgba(179,32,58,.20),transparent 28%),var(--navy-1000);display:grid;place-items:center;padding:28px}.auth-shell{width:min(1100px,100%)}.auth-brand{color:#fff;margin:0 0 24px}.auth-card{background:#fff;border-radius:30px;padding:clamp(28px,6vw,64px);box-shadow:0 30px 90px rgba(0,0,0,.2)}.auth-card h1{font-size:clamp(45px,7vw,78px);letter-spacing:-.06em;margin:10px 0}.auth-card>p{color:var(--muted);font-size:19px;max-width:800px}.auth-form{display:grid;gap:14px;margin-top:28px}.auth-form label{display:grid;gap:7px;font-weight:750}.auth-form input{border:1px solid var(--line);border-radius:14px;padding:14px 15px}.auth-link{display:inline-block;margin-top:14px;color:var(--blue-700)}
.share-body{min-height:100dvh;background:linear-gradient(180deg,var(--navy-1000) 0 240px,var(--ice) 240px);padding:28px}.share-shell{max-width:1200px;margin:0 auto}.share-brand{color:#fff;margin-bottom:30px}.share-content{display:grid;gap:18px}.share-hero{background:#fff;border-radius:26px;padding:28px;box-shadow:var(--shadow)}.share-hero h1{font-size:clamp(38px,7vw,66px);margin:7px 0}.share-map{height:480px;border-radius:22px;overflow:hidden}.share-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.mobile-nav{position:fixed;z-index:1200;left:0;right:0;bottom:0;height:var(--mobile-nav);padding:7px 8px max(7px,env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(4,1fr);background:linear-gradient(180deg,var(--navy-950),var(--navy-1000));border-top:1px solid rgba(255,255,255,.08)}.mobile-nav-item{border:0;background:transparent;color:rgba(255,255,255,.62);display:grid;place-items:center;align-content:center;gap:2px;border-radius:13px}.mobile-nav-item>span{font-size:20px;font-weight:800}.mobile-nav-item small{font-size:10px}.mobile-nav-item.is-active{color:#c9ebf6;background:rgba(102,179,212,.1)}
@media(min-width:760px){.trips-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.menu-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.place-card{padding:19px}.share-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(min-width:1024px){body.app-body{overflow:hidden}.app-shell{display:grid;grid-template-columns:var(--sidebar) 1fr;height:100dvh}.sidebar{display:flex;flex-direction:column;background:linear-gradient(180deg,var(--navy-950),var(--navy-1000));color:#fff;padding:24px 16px 18px}.brand{padding:3px 4px 28px}.main-nav{display:grid;gap:7px}.nav-item{border:0;background:transparent;color:rgba(255,255,255,.68);display:flex;align-items:center;gap:12px;min-height:49px;padding:0 14px;border-radius:13px;text-align:left}.nav-item:hover{background:rgba(255,255,255,.055)}.nav-item.is-active{background:rgba(102,179,212,.13);color:#d0f0fb}.nav-symbol{width:26px;text-align:center;font-weight:900;font-size:21px}.sidebar-user{margin-top:auto;border-top:1px solid rgba(255,255,255,.1);padding:16px 7px 2px;display:flex;align-items:center;gap:10px}.sidebar-user>span:last-child{display:grid;gap:1px}.sidebar-user strong{font-size:12px}.sidebar-user small{font-size:10px;color:rgba(255,255,255,.55)}.avatar{width:37px;height:37px;border-radius:12px;background:linear-gradient(145deg,var(--blue-600),var(--red-600));display:grid;place-items:center;font-size:12px;font-weight:900}.app-main{height:100dvh;overflow:hidden}.map-view{height:100dvh}.content-view{height:100dvh;overflow:auto;padding:36px 34px 50px}.mobile-nav{display:none}.map-tools{left:16px;right:auto;top:70px;bottom:auto}.map-panel{left:auto;right:18px;top:18px;width:min(390px,calc(100vw - var(--sidebar) - 56px));max-height:calc(100dvh - 36px);overflow:auto}.detail-grid{grid-template-columns:minmax(0,1.55fr) minmax(340px,.75fr)}.owner-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.budget-currencies{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:820px){.detail-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-grid{grid-template-columns:1fr}.owner-grid{grid-template-columns:1fr}.climate-section{grid-column:auto}.climate-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.budget-currencies{grid-template-columns:repeat(2,minmax(0,1fr))}.permission-grid{grid-template-columns:1fr 1fr}.page-header{display:block}.page-header-actions{margin-top:16px;justify-content:flex-start}.page-header-actions .secondary-button,.page-header-actions .primary-button{margin-top:0}.trip-title-row{display:grid;align-items:start}.trip-title-actions{justify-content:flex-start}.trip-stats{grid-template-columns:repeat(2,1fr)}.trip-stat:nth-child(3){border-left:0;border-top:1px solid var(--line)}.trip-stat:nth-child(4){border-top:1px solid var(--line)}}
@media(max-width:520px){.content-view{padding-left:16px;padding-right:16px}.map-panel{left:10px;right:10px}.page-header h1{font-size:44px}.detail-metrics{grid-template-columns:1fr 1fr}.metric-card strong{font-size:22px}.climate-grid{grid-template-columns:1fr}.budget-currencies{grid-template-columns:1fr 1fr}.permission-grid{grid-template-columns:1fr}.share-grid{grid-template-columns:1fr}.auth-body{padding:16px}.auth-card{border-radius:22px;padding:26px 20px}.trip-map,.share-map{height:360px}}
.vehicle-map-marker{width:34px;height:34px;border-radius:50%;background:var(--navy-950);border:4px solid #fff;box-shadow:0 7px 22px rgba(16,34,56,.3);display:grid;place-items:center;color:#fff;font-weight:900;font-size:21px}.muted-copy{color:var(--muted)}.owner-metric small{display:block;color:var(--muted);margin-top:4px}

/* NordicPass 3.0 RC4 desktop parity / owner UX */
.np-icon,.button-icon,.section-icon,.mini-icon,.tiny-icon,.trip-stat-icon,.settings-card-icon,.owner-card-icon,.owner-value-icon,.budget-category-icon,.vehicle-marker-icon,.chevron-icon{display:block;width:1.35em;height:1.35em;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.button-icon{width:18px;height:18px}.primary-button,.secondary-button,.danger-button{display:inline-flex;align-items:center;justify-content:center;gap:8px}.small-button{min-height:40px;padding:0 13px;font-size:13px}.nav-symbol{display:grid;place-items:center}.nav-symbol .np-icon{width:24px;height:24px}.round-button{display:grid;place-items:center}.round-button .np-icon{width:23px;height:23px}.menu-icon .np-icon{width:27px;height:27px}.mobile-nav-item .np-icon{width:22px;height:22px}.mobile-nav-item>span{display:grid;place-items:center}.vehicle-map-marker{width:34px;height:34px}.vehicle-marker-icon{width:19px;height:19px;stroke-width:1.8}.trip-stat{display:grid;place-items:center;align-content:center;gap:2px}.trip-stat-icon{width:19px;height:19px;color:var(--blue-700);margin-bottom:3px}.trip-card.is-current .trip-stat-icon{color:var(--blue-700)}

.detail-header{display:grid;gap:14px}.trip-title-row{display:flex;align-items:flex-end;justify-content:space-between;gap:22px}.trip-title-actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.detail-metrics{gap:15px}.metric-card{display:flex;align-items:center;gap:16px;padding:20px 22px}.metric-card small{margin:0 0 4px}.metric-card strong{display:block}.metric-icon{width:48px;height:48px;flex:0 0 48px;border-radius:16px;background:linear-gradient(145deg,var(--blue-100),#f8ecee);color:var(--navy-900);display:grid;place-items:center}.metric-icon .np-icon{width:25px;height:25px}.overnight-strip{max-width:1420px;margin:0 auto 18px;background:linear-gradient(100deg,#fff,#f7fbfd);border:1px solid var(--line);border-radius:19px;box-shadow:var(--soft-shadow);padding:13px 17px;display:flex;align-items:center;gap:22px;justify-content:space-between}.overnight-total{display:flex;align-items:center;gap:11px}.overnight-icon{width:27px;height:27px;color:var(--blue-700)}.overnight-total span{display:grid;grid-template-columns:auto auto;align-items:baseline;gap:8px}.overnight-total small{color:var(--muted)}.overnight-total strong{font-size:24px}.overnight-breakdown{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.overnight-breakdown>span{display:flex;align-items:center;gap:6px;background:#eef5f7;border-radius:999px;padding:7px 10px;color:#516576;font-size:12px}.overnight-breakdown .mini-icon{width:15px;height:15px;color:var(--blue-700)}.trip-content-stack{max-width:1420px;margin:0 auto;display:grid;gap:18px}.route-country-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(280px,.55fr);gap:18px}.route-panel,.country-panel{min-width:0}.vertical-chips{align-content:start}.country-chip{display:flex;align-items:center;gap:9px;padding:9px 12px}.country-flag{font-size:20px;line-height:1}.country-flag,.inline-flag{display:inline-flex;align-items:center;justify-content:center}.country-flag-image{display:inline-block!important;width:1em!important;height:1em!important;min-width:1em!important;max-width:1em!important;min-height:1em!important;max-height:1em!important;object-fit:contain!important;vertical-align:-.125em!important;flex:0 0 auto!important}.title-with-icon{display:flex;align-items:center;gap:11px}.title-with-icon>div{display:grid;gap:2px}.title-with-icon h2{margin:0}.title-with-icon small{color:var(--muted)}.section-icon{width:27px;height:27px;color:var(--blue-700)}.trip-statistics-grid,.diesel-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.data-tile{border:1px solid var(--line);border-radius:17px;padding:14px 15px;background:linear-gradient(180deg,#fff,#fbfcfd)}.data-tile small{display:block;color:var(--muted);font-size:12px}.data-tile strong{display:block;margin-top:5px;font-size:20px;letter-spacing:-.025em}.data-tile span{display:block;color:var(--muted);font-size:11px;margin-top:2px}.journal-launch{display:flex;align-items:center;justify-content:space-between;gap:24px}.journal-launch h2{font-size:25px;margin:5px 0 4px}.journal-launch p{margin:0;color:var(--muted)}

.panel-actions,.header-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.budget-hero-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:18px;overflow:hidden;margin-top:14px}.budget-hero-grid>div{background:#fff;padding:16px}.budget-hero-grid small{display:block;color:var(--muted);margin-bottom:5px}.budget-hero-grid strong{font-size:20px;letter-spacing:-.025em}.budget-hero-grid.large strong{font-size:26px}.budget-meter{width:100%;height:11px;border:0;margin:16px 0 4px;appearance:none}.budget-meter::-webkit-progress-bar{background:#e5edf1;border-radius:999px}.budget-meter::-webkit-progress-value{background:linear-gradient(90deg,var(--blue-600),var(--red-600));border-radius:999px}.budget-meter::-moz-progress-bar{background:linear-gradient(90deg,var(--blue-600),var(--red-600));border-radius:999px}.budget-category-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:15px}.budget-category-grid.large{grid-template-columns:repeat(3,minmax(0,1fr));margin:0}.budget-category{border:1px solid var(--line);border-radius:16px;padding:13px;display:flex;align-items:center;gap:11px;background:#fff}.budget-category-icon{width:23px;height:23px;color:var(--blue-700);flex:0 0 auto}.budget-category span{display:grid;gap:2px;min-width:0}.budget-category small{color:var(--muted)}.budget-category strong{font-size:16px}.expense-details{border-top:1px solid var(--line);margin-top:18px;padding-top:4px}.expense-details summary{cursor:pointer;padding:14px 0;font-weight:800;display:flex;justify-content:space-between}.expense-details summary span{color:var(--muted)}.expense-list{display:grid}.expense-row{grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:center;padding:15px 0}.expense-main{display:flex;align-items:flex-start;gap:11px;min-width:0}.expense-icon{width:38px;height:38px;border-radius:12px;background:var(--blue-100);color:var(--blue-700);display:grid;place-items:center;flex:0 0 auto}.expense-icon .mini-icon{width:19px;height:19px}.expense-main>div{min-width:0}.expense-main strong{font-size:15px}.expense-main small{display:block;margin-top:3px}.expense-main p{margin:5px 0 0;color:var(--muted);font-size:12px}.expense-side{text-align:right;display:grid;justify-items:end;gap:2px}.expense-side>strong{font-size:17px}.expense-side>small{color:var(--muted)}.row-actions{display:flex;gap:4px;margin-top:5px}.icon-action{border:0;background:#f1f5f7;color:var(--navy-800);border-radius:9px;width:32px;height:32px;display:grid;place-items:center}.icon-action .np-icon{width:16px;height:16px}.icon-action.danger{background:#fff0f1;color:var(--danger)}.empty-inline{padding:15px;border-radius:14px;background:#f5f8fa;color:var(--muted)}

.budget-header{align-items:flex-end}.trip-picker{display:grid;gap:5px;min-width:300px}.trip-picker label{font-size:11px;font-weight:850;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}.trip-picker select{border:1px solid var(--line);background:#fff;border-radius:14px;padding:12px 38px 12px 14px;color:var(--ink);font-weight:750}.budget-dashboard{max-width:1420px;margin:0 auto;display:grid;gap:18px}.budget-hero{padding:27px}.budget-hero-head{display:flex;justify-content:space-between;align-items:flex-start;gap:18px}.budget-hero h2{font-size:31px;margin:5px 0 3px;letter-spacing:-.035em}.budget-hero p{margin:0;color:var(--muted)}.category-panel-wide{padding:24px 26px}.expenses-panel{padding:24px 26px}

.places-toolbar{grid-template-columns:minmax(300px,1fr);}.place-card{width:100%;border:1px solid var(--line);text-align:left;color:inherit;grid-template-columns:50px 1fr auto;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}.place-card:hover{transform:translateY(-1px);box-shadow:0 12px 34px rgba(16,34,56,.1);border-color:#c8d9e2}.place-marker{width:46px;height:46px;border-radius:15px;background:linear-gradient(145deg,var(--blue-100),#f9ecee);display:grid;place-items:center;color:var(--blue-700)}.place-marker .np-icon{width:23px;height:23px}.place-card h3{font-size:18px}.place-card p{display:flex;align-items:center;gap:5px}.place-card small{display:block;margin-top:4px}.place-note{display:block;color:#506275;font-size:12px;margin-top:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:740px}.place-meta{display:flex;align-items:center;gap:8px}.favorite-star{color:#c18b22;font-size:20px}.chevron-icon{width:18px;height:18px;color:#9baab5}.place-favorite-toggle{display:none;color:#c18b22}.place-favorite-toggle.is-favorite{display:grid;place-items:center;width:22px;height:22px}.place-star-icon{width:20px;height:20px}.inline-flag{font-size:17px}.place-detail-hero{background:linear-gradient(145deg,#eef7fa,#fff6f7);border:1px solid var(--line);border-radius:18px;padding:16px;margin:8px 0 16px}.place-coordinate{display:flex;align-items:center;gap:10px}.place-coordinate span{display:grid;gap:2px}.place-coordinate small{color:var(--muted)}.place-detail-note{margin:13px 0 0;color:#4f6274}.protected-history{display:flex;align-items:center;color:var(--muted);font-size:12px}.visit-section{margin-top:23px}.visit-section h3{margin:0;font-size:20px}.visit-card{border:1px solid var(--line);border-radius:18px;padding:16px;margin-top:10px}.visit-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.visit-head>div{display:grid;gap:3px}.visit-head small{color:var(--muted)}.text-button{border:0;background:var(--blue-100);color:var(--blue-700);border-radius:999px;padding:7px 10px;font-size:12px;font-weight:800}.recorded-weather{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:13px}.recorded-weather>div{display:flex;align-items:center;gap:8px;background:#f5f8fa;border-radius:13px;padding:10px}.recorded-weather .mini-icon{width:18px;height:18px;color:var(--blue-700)}.recorded-weather span{display:grid;gap:2px}.recorded-weather small{color:var(--muted);font-size:10px}.recorded-weather strong{font-size:13px}

.owner-header{align-items:flex-end}.owner-live-strip{max-width:1420px;margin:0 auto 16px;border:1px solid var(--line);background:#fff;border-radius:17px;padding:12px 15px;box-shadow:var(--soft-shadow);display:flex;align-items:center;gap:11px}.status-pulse{width:11px;height:11px;border-radius:50%;background:#b7c0c7;box-shadow:0 0 0 4px rgba(183,192,199,.15)}.status-pulse.connected{background:#3ba778;box-shadow:0 0 0 4px rgba(59,167,120,.13)}.status-pulse.disconnected{background:var(--danger);box-shadow:0 0 0 4px rgba(185,79,85,.13)}.owner-live-strip>div{display:grid;gap:2px}.owner-live-strip small{color:var(--muted)}.site-pill{margin-left:auto;background:#eef4f7;border-radius:999px;padding:7px 10px;color:#536779;font-size:11px;font-weight:800}.owner-grid{gap:16px}.owner-section{padding:22px;border-radius:24px}.owner-card-title{display:flex;align-items:center;gap:11px;margin-bottom:18px}.owner-card-icon{width:28px;height:28px;color:var(--blue-700)}.owner-card-title h2{font-size:24px}.owner-card-title p{margin:2px 0 0;color:var(--muted);font-size:12px}.owner-feature{border-radius:18px;background:linear-gradient(145deg,var(--navy-950),#294d6d);color:#fff;padding:18px;margin-bottom:10px}.owner-feature small{display:block;color:rgba(255,255,255,.67);font-size:11px;text-transform:uppercase;letter-spacing:.08em}.owner-feature strong{display:block;font-size:32px;letter-spacing:-.04em;margin-top:5px}.owner-value-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.owner-value{border:1px solid var(--line);border-radius:15px;padding:11px 12px;display:flex;align-items:center;gap:8px;min-width:0}.owner-value-icon{width:20px;height:20px;color:var(--blue-700)}.owner-value span{display:grid;gap:2px;min-width:0}.owner-value small{color:var(--muted);font-size:10px}.owner-value strong{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.solar-status{margin-top:10px;border:1px solid var(--line);border-radius:15px;padding:11px 12px;display:flex;gap:9px;align-items:flex-start}.solar-status .status-dot{margin-top:4px}.solar-status small{color:var(--muted)}.solar-status strong{display:block;margin-top:2px}.solar-status p{margin:2px 0 0;color:var(--muted);font-size:11px}.climate-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}.climate-card{padding:15px;border-radius:17px;background:linear-gradient(180deg,#fff,#fbfcfd)}.climate-name{display:flex;align-items:center;gap:7px}.climate-name .mini-icon{width:16px;height:16px;color:var(--blue-700)}.climate-card h3{font-size:14px}.climate-temp{font-size:30px}.climate-meta{display:flex;gap:12px;flex-wrap:wrap;color:#506275;font-size:11px}.climate-meta span{display:flex;align-items:center;gap:4px}.tiny-icon{width:13px;height:13px}.climate-card>small{display:block;color:var(--muted);font-size:10px;margin-top:9px}.security-note{display:flex;gap:11px;align-items:flex-start;background:var(--blue-100);border:1px solid #cae3ed;border-radius:15px;padding:13px}.security-note p{margin:3px 0 0;color:#536879;font-size:12px}

.settings-layout{max-width:1420px;margin:0 auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.settings-card{background:#fff;border:1px solid var(--line);border-radius:23px;padding:22px;box-shadow:var(--soft-shadow)}.settings-card-head{display:flex;align-items:flex-start;gap:12px;padding-bottom:17px;border-bottom:1px solid var(--line)}.settings-card-icon{width:28px;height:28px;color:var(--blue-700)}.settings-card h2{margin:0;font-size:22px}.settings-card p{margin:4px 0 0;color:var(--muted);font-size:13px}.settings-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding-top:16px}.settings-fields label{display:grid;gap:6px}.settings-fields label>span{font-weight:800;font-size:12px}.settings-fields select{border:1px solid var(--line);border-radius:13px;padding:11px 12px;background:#fff}.setting-switches{display:grid;padding-top:6px}.switch-row{display:flex!important;align-items:center!important;justify-content:space-between;gap:18px;padding:13px 0;border-bottom:1px solid var(--line);font-weight:400!important}.switch-row:last-child{border-bottom:0}.switch-row>span{display:grid;gap:2px}.switch-row strong{font-size:14px}.switch-row small{color:var(--muted);font-size:11px}.switch-row input[type=checkbox]{appearance:none;width:44px;height:25px;border-radius:999px;background:#cfd9df;position:relative;flex:0 0 auto;transition:.18s}.switch-row input[type=checkbox]::after{content:"";position:absolute;width:19px;height:19px;top:3px;left:3px;border-radius:50%;background:#fff;box-shadow:0 2px 5px rgba(0,0,0,.18);transition:.18s}.switch-row input[type=checkbox]:checked{background:var(--blue-600)}.switch-row input[type=checkbox]:checked::after{transform:translateX(19px)}.settings-save{grid-column:1/-1;display:flex;align-items:center;gap:14px}.settings-save #settings-result{flex:1}.compact-cards .trip-card-main,.compact-cards .panel-card,.compact-cards .owner-section{padding-top:17px;padding-bottom:17px}

.modal-backdrop[hidden]{display:none}.modal-backdrop{position:fixed;z-index:5000;inset:0;background:rgba(6,17,29,.58);backdrop-filter:blur(6px);padding:30px;display:grid;place-items:center;overflow:auto}.modal-shell{width:min(760px,100%);max-height:calc(100dvh - 60px);overflow:auto;background:#fff;border-radius:26px;box-shadow:0 30px 90px rgba(5,16,28,.35);padding:26px}.modal-open{overflow:hidden}.modal-header{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:18px}.modal-header h2{font-size:31px;letter-spacing:-.035em;margin:4px 0}.modal-header p{margin:0;color:var(--muted)}.modal-close{border:0;background:#eef3f6;color:var(--navy-900);width:38px;height:38px;border-radius:50%;font-size:24px;line-height:1}.modal-form{display:grid;gap:14px}.modal-form>label,.field-grid label{display:grid;gap:6px;font-weight:750;font-size:13px}.modal-form input,.modal-form select,.modal-form textarea,.field-grid input,.field-grid select{width:100%;border:1px solid var(--line);border-radius:13px;padding:11px 12px;background:#fff;color:var(--ink);outline:none}.modal-form textarea{resize:vertical}.expense-conditional[hidden]{display:none!important}.modal-form input:focus,.modal-form select:focus,.modal-form textarea:focus{border-color:var(--blue-500);box-shadow:0 0 0 3px rgba(102,179,212,.13)}.field-grid{display:grid;gap:12px}.field-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.optional{color:var(--muted);font-weight:500;font-size:10px}.modal-actions{display:flex;justify-content:flex-end;align-items:center;gap:8px;margin-top:4px}.modal-actions.spread{justify-content:space-between}.modal-actions.spread>div{display:flex;gap:8px}.toast-stack{position:fixed;z-index:7000;right:22px;bottom:22px;display:grid;gap:8px}.toast{background:var(--navy-950);color:#fff;border-radius:13px;padding:12px 15px;box-shadow:var(--shadow);font-weight:700;font-size:13px}.toast.error{background:#8f2735}.alert.warning{background:#fff9e8;border:1px solid #eadba6;color:#6f5b1b}

@media(min-width:1024px){.trip-content-stack{padding-bottom:20px}.places-toolbar{grid-template-columns:1fr}.budget-dashboard{padding-bottom:20px}.owner-grid{padding-bottom:20px}}
@media(max-width:1100px){.route-country-grid{grid-template-columns:1fr}.trip-statistics-grid,.diesel-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.budget-category-grid.large{grid-template-columns:repeat(2,minmax(0,1fr))}.recorded-weather{grid-template-columns:repeat(2,minmax(0,1fr))}.climate-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:820px){.settings-layout{grid-template-columns:1fr}.settings-save{grid-column:auto}.budget-header{align-items:stretch}.trip-picker{min-width:0}.budget-hero-head{display:grid}.budget-hero-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.overnight-strip{align-items:flex-start;display:grid}.overnight-breakdown{justify-content:flex-start}.journal-launch{align-items:flex-start;display:grid}.field-grid.two{grid-template-columns:1fr}.modal-backdrop{padding:12px}.modal-shell{max-height:calc(100dvh - 24px);padding:20px;border-radius:21px}}
@media(max-width:520px){.trip-statistics-grid,.diesel-grid,.budget-category-grid,.budget-category-grid.large,.recorded-weather,.climate-grid,.settings-fields{grid-template-columns:1fr}.metric-card{padding:14px;gap:10px}.metric-icon{width:39px;height:39px;flex-basis:39px}.metric-card strong{font-size:19px}.budget-hero-grid{grid-template-columns:1fr 1fr}.expense-row{grid-template-columns:1fr}.expense-side{text-align:left;justify-items:start}.row-actions{margin-top:7px}.site-pill{display:none}}

/* RC4 desktop parity polish: blueprint colours remain authoritative. */
.budget-category-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 22px;margin-top:4px}.budget-category-column{display:grid;align-content:start}.budget-category-detail-v3{border-top:1px solid var(--line)}.budget-category-column .budget-category-detail-v3:first-child{border-top:0}.budget-category-detail-v3>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:72px;padding:12px 2px;cursor:pointer}.budget-category-detail-v3>summary::-webkit-details-marker{display:none}.budget-category-summary-main{display:flex;align-items:center;gap:11px;min-width:0}.budget-category-symbol{width:34px;height:34px;border-radius:11px;background:var(--blue-100);color:var(--navy-900);display:grid;place-items:center;flex:0 0 auto}.budget-category-symbol .budget-category-icon{width:19px;height:19px}.budget-category-summary-main>span:last-child{display:grid;gap:2px;min-width:0}.budget-category-summary-main strong{font-size:15px}.budget-category-summary-main small{font-size:11px;color:var(--muted)}.budget-category-summary-total{display:flex;align-items:center;gap:8px;white-space:nowrap}.budget-category-summary-total strong{font-size:16px}.budget-category-summary-total .chevron-icon{width:15px;height:15px;color:var(--muted);transition:transform .18s}.budget-category-detail-v3[open] .budget-category-summary-total .chevron-icon{transform:rotate(90deg)}.budget-category-breakdown-v3{padding:0 2px 10px 45px}.budget-category-breakdown-v3 .expense-row{padding:11px 0}.budget-category-breakdown-v3 .expense-icon{display:none}.budget-category-breakdown-v3 .expense-main{gap:0}.budget-category-breakdown-v3 .expense-main strong{font-size:13px}.budget-category-breakdown-v3 .expense-main small,.budget-category-breakdown-v3 .expense-main p{font-size:11px}.budget-category-breakdown-v3 .expense-side>strong{font-size:14px}
.owner-feature .owner-progress{margin-top:13px}.owner-progress,.sensor-progress{width:100%;appearance:none;border:0;border-radius:999px;overflow:hidden}.owner-progress{height:8px}.sensor-progress{height:6px}.owner-progress::-webkit-progress-bar,.sensor-progress::-webkit-progress-bar{background:rgba(255,255,255,.17);border-radius:999px}.owner-progress::-webkit-progress-value{background:var(--blue-500);border-radius:999px}.owner-progress::-moz-progress-bar{background:var(--blue-500);border-radius:999px}.sensor-progress::-webkit-progress-bar{background:#dfe7eb}.sensor-progress::-webkit-progress-value{background:linear-gradient(90deg,var(--navy-800),var(--blue-600));border-radius:999px}.sensor-progress::-moz-progress-bar{background:var(--blue-600);border-radius:999px}.climate-humidity{display:grid;gap:6px;margin-top:9px}.climate-humidity>span{display:flex;align-items:center;justify-content:space-between;gap:12px}.climate-humidity small{color:var(--muted);font-size:10px}.climate-humidity strong{font-size:11px}.status-dot.is-ok{background:#3ba778;box-shadow:0 0 0 3px rgba(59,167,120,.14)}.status-dot.is-off{background:var(--danger);box-shadow:0 0 0 3px rgba(185,79,85,.13)}
@media(max-width:820px){.budget-category-columns{grid-template-columns:1fr}.budget-category-column:nth-child(2) .budget-category-detail-v3:first-child{border-top:1px solid var(--line)}}

/* RC4 desktop — diesel usage uses the warm information hierarchy from v2.6 while keeping the 3.0 palette. */
.diesel-card .panel-title{margin-bottom:8px}.diesel-card .eyebrow{font-size:10px;letter-spacing:.13em}.diesel-rows{display:grid}.diesel-row{display:grid;grid-template-columns:minmax(220px,.65fr) minmax(0,1.35fr);gap:20px;align-items:center;padding:15px 2px;border-top:1px solid var(--line)}.diesel-row-label{display:flex;align-items:center;gap:9px;color:var(--ink)}.diesel-row-label .mini-icon{width:19px;height:19px;color:var(--blue-700)}.diesel-row strong{text-align:right;font-size:16px;letter-spacing:-.012em}.diesel-label-spacer{width:19px;height:19px;display:inline-block}.diesel-note{margin-top:11px;color:var(--muted);font-size:13px;line-height:1.5}.diesel-card .alert{margin-top:14px}
@media(max-width:720px){.diesel-row{grid-template-columns:1fr;gap:5px}.diesel-row strong{text-align:left;padding-left:28px}}
.visit-context{display:flex;flex-wrap:wrap;gap:8px 16px;margin:10px 0 13px;color:var(--muted);font-size:12px}.visit-context>span{display:inline-flex;align-items:center;gap:6px}.visit-context .tiny-icon{width:15px;height:15px;color:var(--blue-700)}.visit-context strong{color:var(--ink)}
.settings-connection-card{grid-column:1/-1}.connection-row{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-top:17px}.connection-row>div{display:grid;gap:5px}.connection-row small,.security-copy{color:var(--muted);font-size:12px}.connection-state{display:inline-flex;align-items:center;gap:8px}.security-copy{margin-top:14px;padding:11px 13px;border-radius:13px;background:var(--blue-100)}
@media(max-width:820px){.settings-connection-card{grid-column:auto}.connection-row{align-items:flex-start;display:grid}}
.overnight-total span{display:flex;align-items:baseline;gap:7px}.overnight-total span strong{order:0}.overnight-total span small{order:1}

/* NordicPass 3.0 RC4 v5.9 · semantic trip budget state */
.budget-status-over small,.budget-status-over strong{color:var(--danger)}
.budget-meter.is-over::-webkit-progress-value{background:var(--danger)}
.budget-meter.is-over::-moz-progress-bar{background:var(--danger)}

/* Trips CRUD · currency section (matches the v2.6 trip currency model) */
.trip-form-section { margin: 18px 0 10px; padding-top: 16px; border-top: 1px solid var(--line, #e5e7eb); display: grid; gap: 3px; }
.trip-form-section strong { font-size: 14px; }
.trip-form-section span, .trip-form-help { color: var(--muted, #667085); font-size: 12px; line-height: 1.45; }
.trip-form-help { margin: 8px 0 0; }
.field-grid .wide { grid-column: 1 / -1; }
.field-grid textarea { width: 100%; min-height: 92px; resize: vertical; }

/* Places · exact zero-cost photo enrichment. Normal page rendering is cache-only;
   external discovery runs only after the owner opens a saved Place. */
.place-card{grid-template-columns:76px minmax(0,1fr) auto}.place-thumb{width:76px;height:62px;border-radius:14px;overflow:hidden;background:var(--blue-100);display:grid;place-items:center;color:var(--navy-900);position:relative}.place-thumb>svg{width:24px;height:24px}.place-thumb-fallback{position:absolute;inset:0;display:grid;place-items:center}.place-thumb-fallback svg{width:24px;height:24px}.place-thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1}.place-source-photo{margin:0 0 18px;border-radius:18px;overflow:hidden;border:1px solid var(--line);background:#fff}.place-source-photo>img{display:block;width:100%;max-height:380px;object-fit:cover;background:var(--blue-100)}.place-source-photo figcaption{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:9px 12px;color:var(--muted);font-size:11px}.place-source-photo figcaption a{color:var(--blue-700);font-weight:750;text-decoration:none}.place-source-photo figcaption a:hover{text-decoration:underline}
@media(max-width:759px){.place-card{grid-template-columns:68px minmax(0,1fr) auto;gap:10px;padding:10px}.place-thumb{width:68px;height:58px;border-radius:12px}.place-source-photo>img{max-height:260px}.place-source-photo figcaption{align-items:flex-start;flex-direction:column;gap:4px}}

/* NordicPass 3.0 RC4 v5.20 · Places map picker
   The map uses the existing Leaflet/OpenStreetMap stack. NordicPass coordinates
   are selected visually; Google Places runtime is disabled. */
.place-search-block{display:grid;gap:9px;padding:13px;border:1px solid var(--line);border-radius:16px;background:#f7fafc}.place-search-heading{display:grid;gap:3px}.place-search-heading strong{font-size:13px}.place-search-heading small{color:var(--muted);font-size:12px;line-height:1.45}.place-search-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}.place-search-row input{min-width:0}.place-search-row .secondary-button{min-height:42px;padding-inline:16px}.place-search-results{display:grid;gap:6px;max-height:260px;overflow:auto}.place-search-result{width:100%;display:grid;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:10px;text-align:left;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:12px;padding:9px 10px;cursor:pointer}.place-search-result:hover,.place-search-result:focus-visible{border-color:var(--blue-500);box-shadow:0 0 0 3px rgba(102,179,212,.12);outline:none}.place-search-result>span:nth-child(2){display:grid;gap:2px;min-width:0}.place-search-result strong{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.place-search-result small{color:var(--muted);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.place-search-result-pin{width:30px;height:30px;border-radius:10px;background:#eaf4f8;color:var(--blue-700);display:grid;place-items:center}.place-search-result-category{font-size:10px;font-weight:750;color:var(--muted);white-space:nowrap}.place-search-message{padding:7px 2px;color:var(--muted);font-size:12px}.place-search-message.is-error{color:#8f2735}.place-search-selected{display:flex;gap:8px;align-items:flex-start;padding:8px 9px;border-radius:11px;background:#eaf4f8;color:var(--navy-900)}.place-search-selected>span:last-child{display:grid;gap:2px}.place-search-selected strong{font-size:12px}.place-search-selected small{font-size:11px;color:var(--muted)}
.place-picker-block{display:grid;gap:10px;margin-top:2px}.place-picker-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px}.place-picker-head>div{display:grid;gap:4px}.place-picker-head strong{font-size:13px}.place-picker-head small{color:var(--muted);font-size:12px;line-height:1.45}.place-picker-current{min-height:40px;padding:0 12px;display:inline-flex;align-items:center;gap:7px;white-space:nowrap}.place-picker-current:disabled{opacity:.45;cursor:not-allowed}.place-picker-current .button-icon{width:17px;height:17px}.place-picker-map{width:100%;height:310px;border:1px solid var(--line);border-radius:18px;overflow:hidden;background:#d9ebf2;box-shadow:inset 0 0 0 1px rgba(255,255,255,.35)}.place-picker-map:focus-within{outline:3px solid rgba(63,167,214,.18);outline-offset:2px}.place-picker-coordinates{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:26px;color:var(--muted);font-size:11px}.place-picker-coordinates>span{display:inline-flex;align-items:center;gap:6px;min-width:0}.place-picker-coordinates strong{color:var(--navy-900);font-size:12px}.place-picker-coordinates .tiny-icon{width:15px;height:15px;color:var(--blue-700)}.place-picker-pin{width:42px;height:42px;border:3px solid #fff;border-radius:50% 50% 50% 10%;transform:rotate(-45deg);background:var(--navy-950);box-shadow:0 8px 22px rgba(16,36,58,.28);display:grid;place-items:center}.place-picker-pin-icon{width:20px;height:20px;color:#fff;transform:rotate(45deg)}
@media(max-width:759px){.place-search-block{padding:11px;border-radius:14px}.place-search-row{grid-template-columns:1fr}.place-search-row .secondary-button{width:100%}.place-search-results{max-height:220px}.place-search-result{grid-template-columns:28px minmax(0,1fr)}.place-search-result-category{grid-column:2;justify-self:start}.place-picker-head{align-items:stretch;display:grid}.place-picker-current{justify-self:start}.place-picker-map{height:280px;border-radius:15px}.place-picker-coordinates{align-items:flex-start;display:grid;gap:3px}.place-picker-coordinates>small{padding-left:21px}}

/* NordicPass 3.0 · mockup parity step A
   Mobile Map + bottom navigation only.
   The current 3.0 blueprint palette remains authoritative. */
@media(max-width:759px){
  :root{--mobile-nav:70px}

  /* The map is the screen on mobile. Only the live vehicle card remains over it. */
  .map-view{height:calc(100dvh - var(--mobile-nav));}
  .map-panel{
    left:10px;
    right:10px;
    top:max(10px,env(safe-area-inset-top));
    gap:0;
  }
  .map-panel .current-trip-mini,
  .map-panel .activity-card{display:none!important}

  .glass-card.live-summary{
    min-height:74px;
    grid-template-columns:54px minmax(0,1fr) auto;
    gap:11px;
    padding:10px 12px;
    border-radius:20px;
    background:rgba(255,255,255,.96);
    border:1px solid rgba(255,255,255,.88);
    box-shadow:0 10px 28px rgba(16,34,56,.14);
    backdrop-filter:blur(16px);
  }
  .live-badge{
    width:54px;
    height:54px;
    border-radius:15px;
    background:linear-gradient(145deg,var(--blue-100),#d3edf7);
    color:var(--navy-900);
  }
  .live-badge .np-icon{width:29px;height:29px;stroke-width:1.75}
  .kicker-row{font-size:10px;letter-spacing:.02em;line-height:1.1}
  .status-dot{width:8px;height:8px;box-shadow:0 0 0 3px rgba(102,179,212,.15)}
  .live-summary>div:nth-child(2){min-width:0}
  .live-summary>div:nth-child(2)>strong{
    margin-top:3px;
    font-size:17px;
    line-height:1.08;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .live-summary>div:nth-child(2)>small{font-size:10px;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .live-right{padding-top:1px;min-width:56px}
  .live-right strong{font-size:18px;line-height:1}
  .live-right small{font-size:9px;margin-top:5px}

  /* Floating map controls: compact and visually secondary to the map. */
  .map-tools{
    right:12px;
    top:46%;
    bottom:auto;
    transform:translateY(-50%);
    gap:8px;
  }
  .round-button{
    width:44px;
    height:44px;
    border-radius:50%;
    background:rgba(255,255,255,.97);
    border:1px solid rgba(219,228,233,.92);
    box-shadow:0 7px 18px rgba(16,34,56,.14);
  }
  .round-button .np-icon{width:21px;height:21px}

  /* Bottom navigation follows the mockup proportions, using the NordicPass blue/navy palette. */
  .mobile-nav{
    height:var(--mobile-nav);
    padding:5px 10px max(5px,env(safe-area-inset-bottom));
    background:linear-gradient(180deg,var(--navy-950),var(--navy-1000));
    border-top:1px solid rgba(255,255,255,.07);
    box-shadow:0 -8px 24px rgba(8,22,37,.10);
  }
  .mobile-nav-item{
    position:relative;
    gap:1px;
    border-radius:0;
    color:rgba(255,255,255,.58);
    background:transparent!important;
  }
  .mobile-nav-item .np-icon{width:21px;height:21px}
  .mobile-nav-item small{font-size:10px;line-height:1.1}
  .mobile-nav-item.is-active{color:#ccecf8}
  .mobile-nav-item.is-active::before{
    content:"";
    position:absolute;
    top:0;
    left:50%;
    width:26px;
    height:2px;
    border-radius:999px;
    background:var(--blue-500);
    transform:translateX(-50%);
  }
}


/* NordicPass 3.0 · mockup parity step A2
   Finish the mobile live card before moving to Trips.
   Battery is a VRM-only UI element; JS hides it when VRM is not configured. */
.live-battery{display:flex;align-items:center;justify-content:flex-end;gap:7px;color:var(--navy-900)}
.live-battery[hidden]{display:none!important}
.live-battery-shell{position:relative;display:block;width:29px;height:14px;border:2px solid var(--navy-900);border-radius:3px;padding:0;background:#fff;box-sizing:border-box;overflow:hidden}
.live-battery-shell::after{content:"";position:absolute;right:-5px;top:3px;width:3px;height:6px;border-radius:0 2px 2px 0;background:var(--navy-900)}
.live-battery-fill{display:block;height:100%;width:0;border-radius:0;background:#46a457;transition:width .25s ease}
.live-battery.is-low .live-battery-fill{background:var(--red-600,#b3203a)}
.live-update{display:grid;justify-items:end;gap:1px;margin-top:6px}
.live-update small{color:var(--muted)}
.live-update span{color:var(--muted);font-size:10px;line-height:1.1;white-space:nowrap}
@media(max-width:759px){
  .glass-card.live-summary{grid-template-columns:54px minmax(0,1fr) auto;align-items:center}
  .live-right{min-width:72px;padding-top:0;align-self:center}
  .live-battery strong{font-size:16px;line-height:1;font-weight:850;margin:0}
  .live-battery-shell{width:28px;height:14px}
  .live-update{margin-top:5px;line-height:1}
  .live-update small{font-size:8px;line-height:1;text-transform:none;letter-spacing:0}
  .live-update span{font-size:9px;margin-top:1px}
}

/* NordicPass 3.0 · iOS 27 standalone top-blur workaround TEST V2
   WebKit/iOS 27 may draw a system "scroll edge" / inset blur above standalone web content.
   A viewport-constrained solid element at the top edge can make WebKit use a solid
   top color extension instead of the soft blur. This is intentionally tiny and
   pointer-transparent. Covers both standalone and iOS' occasional fullscreen report. */
@supports (-webkit-touch-callout: none) {
  @media (display-mode: standalone), (display-mode: fullscreen) {
    html::before {
      content:"";
      position:fixed;
      z-index:2147483646;
      top:0;
      left:0;
      right:0;
      height:2px;
      background:var(--ice,#f5f8fa);
      pointer-events:none;
    }
  }
}

/* NordicPass 3.0 · mockup parity Step B.1
   IMPORTANT: Trips mockup styling is MOBILE ONLY.
   Desktop intentionally remains on the pre-Step-B layout. */
@media(min-width:760px){
  /* Desktop: keep the create controls visible for both Trips and Places. */
  .trips-add-button{display:inline-flex!important}
}

@media(max-width:759px){
  .trips-view .trips-grid{max-width:980px;gap:18px}
  .trip-hero-card{background:#fff;border:1px solid var(--line);border-radius:22px;padding:10px;box-shadow:var(--soft-shadow);display:grid;gap:10px}
  .trip-hero-main{position:relative;display:block;width:100%;min-height:194px;padding:0;border:0;border-radius:14px;overflow:hidden;background:linear-gradient(145deg,var(--navy-950),var(--navy-800));color:#fff;text-align:left}
  .trip-hero-cover{position:absolute;inset:0;background:linear-gradient(145deg,#d9edf5,#b9dbe8)}
  .trip-hero-cover::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,22,37,.03) 30%,rgba(8,22,37,.8) 100%);pointer-events:none;z-index:500}
  .trip-hero-cover.is-fallback{background:linear-gradient(145deg,var(--navy-800),var(--blue-700))}
  .trip-hero-cover .leaflet-tile-pane{filter:saturate(.8) contrast(.95)}
  .trip-hero-badge{position:absolute;z-index:600;left:13px;top:13px;border-radius:999px;padding:6px 10px;background:var(--blue-600);color:#fff;font-size:10px;font-weight:850;letter-spacing:.02em}
  .trip-hero-title{position:absolute;z-index:600;left:16px;right:16px;bottom:15px;text-shadow:0 2px 14px rgba(8,22,37,.42)}
  .trip-hero-title h2{margin:0;font-size:20px;line-height:1.05;letter-spacing:-.035em;color:#fff}
  .trip-hero-title p{margin:5px 0 0;font-size:10px;color:rgba(255,255,255,.84)}
  .trip-hero-stats{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:15px;overflow:hidden;background:#fff}
  .trip-hero-stats>div{min-width:0;display:grid;grid-template-columns:auto auto;justify-content:center;align-items:center;gap:2px 5px;padding:9px 5px;text-align:center;border-left:1px solid var(--line)}
  .trip-hero-stats>div:first-child{border-left:0}
  .trip-hero-stat-icon{grid-row:1/3;width:18px;height:18px;color:var(--navy-800)}
  .trip-hero-stats strong{font-size:14px;line-height:1}.trip-hero-stats small{font-size:9px;color:var(--muted);line-height:1.1}
  .trip-open-button{min-height:40px;border:0;border-radius:13px;background:var(--navy-900);color:#fff;font-weight:800;display:flex;align-items:center;justify-content:center;gap:10px;font-size:12px}
  .trip-list-section{display:grid;gap:9px}.trip-list-heading{display:flex;align-items:center;justify-content:space-between;padding:0 2px}.trip-list-heading h2{margin:0;font-size:17px;letter-spacing:-.025em}.trip-list-heading small{color:var(--muted);font-size:11px}
  .trip-list-rows{display:grid;gap:8px}.trip-list-row{width:100%;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:none;padding:7px;display:grid;grid-template-columns:70px minmax(0,1fr) 16px;gap:10px;align-items:center;color:inherit;text-align:left}
  .trip-list-thumb{height:54px;border-radius:10px;background:linear-gradient(145deg,var(--blue-100),#d7e9f0);display:grid;place-items:center;overflow:hidden;color:var(--navy-800)}
  .trip-list-flags{display:flex;align-items:center;justify-content:center;gap:3px;flex-wrap:wrap;padding:6px}.trip-list-flags img{width:23px!important;height:23px!important;object-fit:contain!important}.trip-row-fallback-icon{width:27px;height:27px}
  .trip-list-copy{display:grid;gap:2px;min-width:0}.trip-list-copy strong{font-size:14px;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.trip-list-copy small{font-size:10px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.trip-list-meta{font-size:9px!important}.trip-list-chevron{font-size:24px;line-height:1;color:#9eacb6;text-align:center}
  .trips-empty{background:#fff;border:1px solid var(--line);border-radius:18px;padding:18px;display:flex;align-items:center;gap:13px;box-shadow:var(--soft-shadow)}.trips-empty .trip-list-thumb{width:58px;flex:0 0 58px}.trips-empty strong{display:block}.trips-empty p{margin:3px 0 0;color:var(--muted);font-size:12px}

  .trips-view{padding-top:max(18px,env(safe-area-inset-top));padding-left:14px;padding-right:14px;background:#f8fafb}
  .trips-page-header{display:flex!important;align-items:center;justify-content:space-between;margin:0 0 14px;gap:12px}
  .trips-page-header .eyebrow,.trips-page-header p,.trips-journal-button{display:none!important}
  .trips-page-header h1{font-size:29px!important;line-height:1!important;letter-spacing:-.04em;margin:0!important}
  .trips-header-actions{margin:0!important;display:flex!important;justify-content:flex-end!important}
  .trips-add-button{display:inline-flex!important;width:42px;height:42px;min-height:42px;padding:0;border-radius:50%;box-shadow:none;background:var(--navy-900)}
  .trips-add-button span{display:none}.trips-add-button .button-icon{width:19px;height:19px}
  .trips-view .trips-grid{gap:18px}
  .trip-hero-card{border-radius:19px;padding:8px;gap:8px}
}

/* NordicPass 3.0 · Trips parity Step B2
   Mobile only. Desktop Trips list/layout remains unchanged. */
.trip-travel-time-field{display:grid;gap:7px}.field-label{font-weight:750;font-size:14px}.trip-time-inputs{display:grid;grid-template-columns:1fr 1fr;gap:9px}.trip-time-inputs label{display:grid;gap:5px}
@media(max-width:759px){
  .trips-view{background:#fbfcfd;padding-top:max(15px,env(safe-area-inset-top));padding-left:14px;padding-right:14px}
  .trips-page-header{margin-bottom:12px!important}
  .trips-page-header h1{font-size:27px!important;letter-spacing:-.045em!important}
  .trips-add-button{width:38px!important;height:38px!important;min-height:38px!important;background:var(--navy-900)!important;border-radius:50%!important}
  .trips-view .trips-grid{gap:15px!important}

  .trip-hero-card{padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;gap:8px!important}
  .trip-hero-main{min-height:184px!important;border-radius:12px!important;box-shadow:0 5px 18px rgba(16,36,58,.10)}
  .trip-hero-badge{left:10px!important;top:10px!important;padding:5px 9px!important;font-size:9px!important;background:var(--blue-600)!important}
  .trip-hero-title{left:12px!important;right:12px!important;bottom:11px!important}
  .trip-hero-title h2{font-size:18px!important;line-height:1.05!important}
  .trip-hero-title p{font-size:9.5px!important;margin-top:4px!important}

  .trip-hero-stats{display:grid!important;grid-template-columns:repeat(3,1fr)!important;gap:7px!important;border:0!important;border-radius:0!important;background:transparent!important;overflow:visible!important}
  .trip-hero-stats>div{border:1px solid var(--line)!important;border-radius:11px!important;background:#fff!important;padding:8px 5px!important;display:grid!important;grid-template-columns:auto auto!important;justify-content:center!important;align-items:center!important;gap:2px 5px!important;box-shadow:0 2px 8px rgba(16,36,58,.03)}
  .trip-hero-stats>div:first-child{border-left:1px solid var(--line)!important}
  .trip-hero-stat-icon{width:16px!important;height:16px!important;color:var(--navy-900)!important}
  .trip-hero-stats strong{font-size:13px!important}.trip-hero-stats small{font-size:8.5px!important}
  .trip-open-button{min-height:38px!important;border-radius:10px!important;font-size:11.5px!important;background:var(--navy-900)!important}

  .trip-list-section{gap:8px!important;margin-top:3px}
  .trip-list-heading{padding:0!important;min-height:26px}
  .trip-list-heading h2{font-size:16px!important;letter-spacing:-.025em!important}
  .trip-list-heading small{font-size:10px!important}
  .trip-list-see-all{border:0;background:transparent;color:var(--navy-800);padding:4px 0;font:inherit;font-size:10px;font-weight:750;cursor:pointer}
  .trip-list-rows{gap:7px!important}
  .trip-list-row{grid-template-columns:66px minmax(0,1fr) 15px!important;gap:9px!important;padding:6px!important;border-radius:12px!important;min-height:62px!important;background:#fff!important}
  .trip-list-thumb{height:50px!important;border-radius:9px!important}
  .trip-list-copy strong{font-size:13px!important}.trip-list-copy small{font-size:9.5px!important}.trip-list-meta{font-size:9px!important}
  .trip-list-chevron{font-size:21px!important}

  .trip-title-actions{display:grid!important;grid-template-columns:1fr 1fr!important;width:100%;gap:8px!important}
  .trip-title-actions .secondary-button,.trip-title-actions .danger-button{width:100%;justify-content:center;min-height:42px}
  .trip-time-inputs{grid-template-columns:1fr 1fr}
}

/* NordicPass 3.0 · Trips parity Step B3
   Mobile-only density + two-row swipe pages. Desktop is intentionally untouched. */
@media(max-width:759px){
  .trips-view{
    padding-left:14px!important;
    padding-right:14px!important;
    padding-bottom:calc(var(--mobile-nav) + 16px)!important;
  }
  .trips-page-header{margin-bottom:10px!important}
  .trips-page-header h1{font-size:26px!important}
  .trips-add-button{width:38px!important;height:38px!important;min-height:38px!important}
  .trips-view .trips-grid{gap:10px!important}

  /* Mockup has a noticeably less panoramic hero. */
  .trip-hero-card{gap:7px!important}
  .trip-hero-main{
    min-height:0!important;
    aspect-ratio:1.52 / 1!important;
    border-radius:13px!important;
  }
  .trip-hero-badge{left:11px!important;top:10px!important;padding:5px 10px!important;font-size:9.5px!important}
  .trip-hero-title{left:13px!important;right:13px!important;bottom:12px!important}
  .trip-hero-title h2{font-size:19px!important}
  .trip-hero-title p{font-size:9.5px!important}

  .trip-hero-stats{gap:7px!important}
  .trip-hero-stats>div{
    min-height:54px!important;
    border-radius:11px!important;
    padding:6px 4px!important;
    grid-template-columns:auto auto!important;
    gap:1px 6px!important;
  }
  .trip-hero-stat-icon{
    grid-row:1/3;
    width:25px!important;
    height:25px!important;
    color:var(--navy-1000)!important;
    overflow:visible;
  }
  .trip-hero-stat-icon-route{fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
  .trip-hero-stat-icon-pin{fill:currentColor;stroke:none}.trip-hero-stat-icon-pin circle{fill:#fff}
  .trip-hero-stat-icon-mountain{fill:currentColor;stroke:none}.trip-hero-stat-icon-mountain .trip-mountain-snow{fill:#fff}
  .trip-hero-stats strong{font-size:15px!important;line-height:1!important}
  .trip-hero-stats small{font-size:9px!important;line-height:1!important}
  .trip-open-button{min-height:39px!important;border-radius:10px!important;font-size:12px!important;margin-top:1px}

  /* Dots control the two-row Past Trips carousel: max three pages / six preview trips. */
  .trip-pager{height:16px;display:flex;align-items:center;justify-content:center;gap:6px;margin:0 0 1px}
  .trip-pager-dot{width:6px;height:6px;min-width:6px;padding:0;border:0;border-radius:50%;background:#c9d1d7;transition:transform .16s ease,background .16s ease}
  .trip-pager-dot.is-active{background:var(--navy-1000);transform:scale(1.12)}

  .trip-list-section{gap:6px!important;margin-top:0!important}
  .trip-list-heading{min-height:24px!important}
  .trip-list-heading h2{font-size:16px!important}
  .trip-list-see-all{font-size:10px!important;padding:2px 0!important}
  .trip-past-carousel{
    display:flex;
    width:100%;
    overflow-x:auto;
    overflow-y:hidden;
    scroll-snap-type:x mandatory;
    scroll-behavior:smooth;
    scrollbar-width:none;
    -webkit-overflow-scrolling:touch;
    overscroll-behavior-x:contain;
  }
  .trip-past-carousel::-webkit-scrollbar{display:none}
  .trip-past-page{
    flex:0 0 100%;
    min-width:100%;
    scroll-snap-align:start;
    scroll-snap-stop:always;
    display:grid;
    gap:6px;
  }
  .trip-list-rows{gap:6px!important}
  .trip-list-row{
    grid-template-columns:64px minmax(0,1fr) 14px!important;
    gap:8px!important;
    padding:5px!important;
    min-height:58px!important;
    border-radius:11px!important;
  }
  .trip-list-thumb{height:48px!important;border-radius:8px!important}
  .trip-list-copy{gap:1px!important}
  .trip-list-copy strong{font-size:12.5px!important}
  .trip-list-copy small{font-size:9px!important}
  .trip-list-meta{font-size:8.5px!important}
  .trip-list-chevron{font-size:19px!important}
}

/* NordicPass 3.0 · Trips Step B3.1
   iOS Safari / Home Screen form focus zoom prevention.
   iOS auto-zooms focused form controls rendered below ~16px. Keep desktop unchanged. */
@media(max-width:759px){
  .modal-form input,
  .modal-form select,
  .modal-form textarea,
  .field-grid input,
  .field-grid select,
  .field-grid textarea,
  .form-grid input,
  .form-grid select,
  .form-grid textarea{
    font-size:16px!important;
  }

  /* Keep native date/datetime controls inside the modal width on iOS. */
  .modal-form input[type="date"],
  .modal-form input[type="time"],
  .modal-form input[type="datetime-local"],
  .field-grid input[type="date"],
  .field-grid input[type="time"],
  .field-grid input[type="datetime-local"]{
    min-width:0;
    max-width:100%;
  }
}

/* NordicPass 3.0 · Trips Step B3.2
   iOS datetime controls must use the exact same field width as ordinary trip inputs. */
@media(max-width:759px){
  .modal-form>label,
  .field-grid label{
    min-width:0;
  }

  .modal-form input[type="date"],
  .modal-form input[type="time"],
  .modal-form input[type="datetime-local"],
  .field-grid input[type="date"],
  .field-grid input[type="time"],
  .field-grid input[type="datetime-local"]{
    display:block!important;
    width:100%!important;
    inline-size:100%!important;
    min-width:0!important;
    max-width:100%!important;
    max-inline-size:100%!important;
    box-sizing:border-box!important;
  }

  .modal-form input[type="datetime-local"]::-webkit-date-and-time-value,
  .field-grid input[type="datetime-local"]::-webkit-date-and-time-value{
    min-width:0;
    margin:0;
    text-align:left;
  }
}

/* NordicPass 3.0 · Trips Step B3.3
   Mobile trip create/edit modal: vertical scrolling only.
   Prevent iOS horizontal rubber-band / side dragging without disabling page zoom. */
@media(max-width:759px){
  .modal-backdrop:has(#trip-form){
    overflow-x:hidden!important;
    overscroll-behavior-x:none;
  }

  .modal-shell:has(#trip-form){
    overflow-x:hidden!important;
    overflow-y:auto!important;
    overscroll-behavior-x:none;
    touch-action:pan-y;
    max-width:calc(100vw - 24px)!important;
  }

  #trip-form,
  #trip-form .field-grid,
  #trip-form .field-grid>label,
  #trip-form .modal-actions{
    width:100%;
    min-width:0!important;
    max-width:100%!important;
  }

  #trip-form input,
  #trip-form select,
  #trip-form textarea{
    min-width:0!important;
    max-width:100%!important;
    box-sizing:border-box!important;
  }

  #trip-form .modal-actions{
    flex-wrap:wrap;
  }
}

/* NordicPass 3.0 · Trips Step B4
   Mobile-only visual parity pass.
   Goal: push Trips closer to the mockup before changing the number of past-trip rows.
   Desktop remains untouched. */
@media(max-width:759px){
  .trips-view{
    padding-left:12px!important;
    padding-right:12px!important;
  }

  /* The mockup hero is still compact, but less panoramic than our current card.
     A slightly taller card gives it a more square/app-card feel. */
  .trip-hero-main{
    aspect-ratio:1.38 / 1!important;
    border-radius:14px!important;
  }
  .trip-hero-badge{
    left:12px!important;
    top:12px!important;
    padding:6px 11px!important;
    font-size:10px!important;
  }
  .trip-hero-title{
    left:14px!important;
    right:14px!important;
    bottom:14px!important;
  }
  .trip-hero-title h2{
    font-size:20px!important;
  }
  .trip-hero-title p{
    font-size:10px!important;
    margin-top:5px!important;
  }

  /* Mockup stat pills are a touch larger and airier. */
  .trip-hero-stats{
    gap:8px!important;
  }
  .trip-hero-stats>div{
    min-height:58px!important;
    padding:7px 6px!important;
    border-radius:12px!important;
    gap:1px 7px!important;
  }
  .trip-hero-stat-icon{
    width:26px!important;
    height:26px!important;
  }
  .trip-hero-stats strong{
    font-size:15px!important;
  }
  .trip-hero-stats small{
    font-size:9.5px!important;
  }
  .trip-open-button{
    min-height:42px!important;
    border-radius:12px!important;
    font-size:12.5px!important;
  }

  /* Past trip thumbnails in the mockup are more square and a bit more prominent. */
  .trip-list-section{
    gap:7px!important;
  }
  .trip-list-heading h2{
    font-size:17px!important;
  }
  .trip-list-row{
    grid-template-columns:86px minmax(0,1fr) 16px!important;
    gap:10px!important;
    padding:7px!important;
    min-height:74px!important;
    border-radius:13px!important;
  }
  .trip-list-thumb{
    height:60px!important;
    border-radius:10px!important;
  }
  .trip-list-flags img{
    width:21px!important;
    height:21px!important;
  }
  .trip-list-copy{
    gap:2px!important;
  }
  .trip-list-copy strong{
    font-size:13px!important;
    line-height:1.1!important;
  }
  .trip-list-copy small{
    font-size:10px!important;
    line-height:1.15!important;
  }
  .trip-list-meta{
    font-size:9.5px!important;
  }
  .trip-list-chevron{
    font-size:20px!important;
  }
}

/* NordicPass 3.0 · Trips Step B5
   Mobile-only typography + breathing-room parity pass.
   Mockup direction: text must not feel compressed; hierarchy and sizes should read like a native app.
   Desktop intentionally untouched. */
@media(max-width:759px){
  /* Page title */
  .trips-page-header h1{
    font-size:30px!important;
    line-height:1.02!important;
    letter-spacing:-.042em!important;
  }

  /* Active / upcoming hero */
  .trip-hero-title h2{
    font-size:22px!important;
    line-height:1.08!important;
    letter-spacing:-.03em!important;
  }
  .trip-hero-title p{
    font-size:11.5px!important;
    line-height:1.25!important;
    margin-top:5px!important;
  }
  .trip-hero-badge{
    font-size:10.5px!important;
    line-height:1!important;
  }

  /* Stat tiles */
  .trip-hero-stats>div{
    min-height:61px!important;
    padding:8px 6px!important;
  }
  .trip-hero-stats strong{
    font-size:16.5px!important;
    line-height:1.05!important;
  }
  .trip-hero-stats small{
    font-size:10.5px!important;
    line-height:1.1!important;
  }
  .trip-open-button{
    min-height:44px!important;
    font-size:14px!important;
    font-weight:750!important;
  }

  /* Pager / section heading spacing */
  .trip-pager{
    height:18px!important;
    margin:1px 0 3px!important;
  }
  .trip-list-section{
    gap:8px!important;
  }
  .trip-list-heading{
    min-height:28px!important;
  }
  .trip-list-heading h2{
    font-size:18px!important;
    line-height:1.1!important;
    letter-spacing:-.02em!important;
  }
  .trip-list-see-all{
    font-size:11.5px!important;
    font-weight:750!important;
  }

  /* Past / upcoming trip rows: give copy more room, like the mockup. */
  .trip-past-page,
  .trip-list-rows{
    gap:8px!important;
  }
  .trip-list-row{
    grid-template-columns:90px minmax(0,1fr) 18px!important;
    gap:11px!important;
    padding:8px!important;
    min-height:80px!important;
    border-radius:14px!important;
  }
  .trip-list-thumb{
    height:64px!important;
    border-radius:11px!important;
  }
  .trip-list-copy{
    gap:3px!important;
  }
  .trip-list-copy strong{
    font-size:15px!important;
    line-height:1.14!important;
    letter-spacing:-.015em!important;
  }
  .trip-list-copy small{
    font-size:11.5px!important;
    line-height:1.2!important;
  }
  .trip-list-meta{
    font-size:11px!important;
    line-height:1.2!important;
  }
  .trip-list-chevron{
    font-size:23px!important;
  }
}

/* NordicPass 3.0 · v5.38 canonical mobile Places layout
   One maintained block replaces P1/P1.2/P2/P2.1/P2.2/P2.3/P2.4 overrides. */
@media (max-width:759px){
  /* Places starts at exactly the same vertical/horizontal inset as Trips. */
  .places-view{
    padding-top:max(15px,env(safe-area-inset-top))!important;
    padding-left:12px!important;
    padding-right:12px!important;
    padding-bottom:calc(var(--mobile-nav) + 16px)!important;
    background:#fbfcfd!important;
  }

  /* Places deliberately reuses trips-page-header / trips-header-actions /
     trips-add-button in index.php. These are only the Places-specific additions. */
  .places-page-header{margin-bottom:10px!important;}
  .places-page-header .eyebrow,
  .places-page-header p{display:none!important;}
  .places-page-header h1{
    margin:0!important;
    font-size:30px!important;
    line-height:1.02!important;
    letter-spacing:-.042em!important;
  }
  .places-header-actions{margin:0!important;display:flex!important;justify-content:flex-end!important;}
  .places-add-button{margin:0!important;}

  .places-toolbar{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:7px!important;
    margin:0 auto 8px!important;
  }
  .places-toolbar input{
    width:100%!important;
    height:43px!important;
    min-height:43px!important;
    border-radius:12px!important;
    padding:0 14px 0 42px!important;
    font-size:15px!important;
    background-color:#f5f7f8!important;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 24 24' fill='none' stroke='%237b8c9d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E")!important;
    background-repeat:no-repeat!important;
    background-position:13px center!important;
    box-shadow:none!important;
  }
  #place-filters{
    display:flex!important;
    flex-wrap:nowrap!important;
    gap:7px!important;
    overflow-x:auto!important;
    overflow-y:hidden!important;
    padding:1px 0 3px!important;
    margin:0!important;
    -webkit-overflow-scrolling:touch!important;
    scrollbar-width:none!important;
  }
  #place-filters::-webkit-scrollbar{display:none!important;}
  #place-filters .chip{
    flex:0 0 auto!important;
    min-height:32px!important;
    padding:6px 12px!important;
    border-radius:999px!important;
    font-size:11.5px!important;
    line-height:1!important;
    font-weight:700!important;
    white-space:nowrap!important;
  }

  .places-list{
    display:grid!important;
    gap:0!important;
    margin:0 auto!important;
    border-top:1px solid var(--line)!important;
  }
  .place-card{
    width:100%!important;
    min-height:84px!important;
    display:grid!important;
    grid-template-columns:96px minmax(0,1fr) 28px!important;
    align-items:center!important;
    gap:11px!important;
    padding:8px 0!important;
    border:0!important;
    border-bottom:1px solid var(--line)!important;
    border-radius:0!important;
    background:transparent!important;
    box-shadow:none!important;
    transform:none!important;
    text-align:left!important;
  }
  .place-card:hover,.place-card:active{transform:none!important;box-shadow:none!important;}
  .place-card>.place-marker,
  .place-card>.place-photo,
  .place-card>.place-thumb,
  .place-card>.place-thumbnail,
  .place-card>.place-image,
  .place-card>img{
    grid-column:1!important;
    width:96px!important;
    height:64px!important;
    min-width:96px!important;
    min-height:64px!important;
    max-width:96px!important;
    max-height:64px!important;
    border-radius:10px!important;
    overflow:hidden!important;
    object-fit:cover!important;
    box-shadow:none!important;
  }
  .place-card>.place-marker{display:grid!important;place-items:center!important;background:#eaf5f9!important;}
  .place-marker img,.place-photo img,.place-thumb img,.place-thumbnail img,.place-image img{
    width:100%!important;height:100%!important;object-fit:cover!important;border-radius:inherit!important;
  }
  .place-marker .np-icon{width:24px!important;height:24px!important;}
  .place-card>div:not(.place-meta){min-width:0!important;align-self:center!important;}
  .place-card h3{margin:0 0 2px!important;font-size:16px!important;line-height:1.1!important;letter-spacing:-.018em!important;}
  .place-card p{margin:0!important;display:flex!important;align-items:center!important;gap:5px!important;font-size:11.5px!important;line-height:1.18!important;color:var(--muted)!important;}
  .inline-flag{font-size:15px!important;line-height:1!important;}
  .place-card small{display:none!important;}
  .place-note{display:none!important;}
  .place-meta{min-width:36px!important;width:36px!important;display:flex!important;align-items:flex-start!important;justify-content:flex-end!important;align-self:stretch!important;padding-top:1px!important;}
  .place-meta .chevron-icon,.place-meta .favorite-star{display:none!important;}
  .place-favorite-toggle{
    width:34px!important;height:34px!important;display:grid!important;place-items:center!important;
    color:#9aa9b5!important;border-radius:50%!important;cursor:pointer!important;touch-action:manipulation!important;
    -webkit-tap-highlight-color:transparent!important;
  }
  .place-favorite-toggle.is-favorite{color:#f2b521!important;}
  .place-favorite-toggle:active{background:#eef3f6!important;}
  .place-favorite-toggle[aria-busy="true"]{opacity:.5!important;}
  .place-star-icon{width:24px!important;height:24px!important;display:block!important;overflow:visible!important;}
  .empty-card{margin-top:12px!important;padding:20px 4px!important;border:0!important;box-shadow:none!important;background:transparent!important;}

  /* Trip and Place create/edit use the exact same close control. */
  #trip-form .modal-close,
  #place-form .modal-close{
    -webkit-appearance:none!important;
    appearance:none!important;
    flex:0 0 38px!important;
    width:38px!important;
    height:38px!important;
    min-width:38px!important;
    min-height:38px!important;
    max-width:38px!important;
    max-height:38px!important;
    padding:0!important;
    margin:0!important;
    border:0!important;
    border-radius:50%!important;
    background:#eef3f6!important;
    color:var(--navy-900)!important;
    display:grid!important;
    place-items:center!important;
    font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;
    font-size:24px!important;
    font-weight:400!important;
    line-height:1!important;
    box-shadow:none!important;
  }
}

/* NordicPass 3.0 · v5.40 · Places favorite star vertical alignment
   Mobile only: center the favorite star vertically in each place row. */
@media(max-width:759px){
  .place-meta{
    align-items:center!important;
    padding-top:0!important;
  }
  .place-favorite-toggle{
    align-self:center!important;
  }
}

/* NordicPass 3.0 · desktop map v9 · compact mockup composition · 2026-09-23
   Desktop map rail is one outer floating window containing three inner cards.
   Typography, icon sizes and spacing intentionally stay readable on large
   displays. The established NordicPass 3.0 colour palette is unchanged. */
.map-stage{position:absolute;inset:0;min-width:0;overflow:hidden}
.desktop-map-search,.desktop-map-controls{display:none}

/* Compact stop popup shared by desktop and mobile. */
.leaflet-popup.np-stop-popup .leaflet-popup-content-wrapper{border-radius:16px;padding:0;box-shadow:var(--soft-shadow)}
.leaflet-popup.np-stop-popup .leaflet-popup-content{margin:0;width:248px!important;max-width:calc(100vw - 56px);font-family:inherit;color:var(--ink)}
.leaflet-popup.np-stop-popup .leaflet-popup-tip{box-shadow:var(--soft-shadow)}
.stop-popup{padding:13px 14px 11px;display:grid;gap:8px}
.stop-popup-type{font-weight:850;font-size:13px;letter-spacing:.01em}
.stop-popup-grid{display:grid;grid-template-columns:auto minmax(0,1fr);gap:5px 12px;align-items:baseline;font-size:11px}
.stop-popup-grid span{color:var(--muted)}
.stop-popup-grid strong{font-size:11px;text-align:right;min-width:0;font-weight:760}
.stop-popup-history{border-top:1px solid var(--line);padding-top:8px;display:grid;gap:4px}
.stop-popup-history-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;font-size:10px}
.stop-popup-history-row span{color:var(--muted)}
.stop-popup-history-row strong{text-align:right;font-size:10px}
.stop-popup-link{border:0;background:transparent;color:var(--blue-700);font:inherit;font-size:10px;font-weight:800;padding:3px 0 0;text-align:left;justify-self:start}
.vehicle-stop-popup-context{padding:11px 13px 0;font-size:9px;font-weight:850;letter-spacing:.11em;text-transform:uppercase;color:var(--muted)}
.np-vehicle-popup .leaflet-popup-content{cursor:default}
.vehicle-map-marker{border:0!important;box-shadow:0 7px 22px rgba(16,34,56,.30)}
.np-stop-dot-icon{background:transparent!important;border:0!important}
.np-stop-dot-marker{display:block;width:12px;height:12px;border-radius:50%;background:var(--blue-600);border:2px solid #fff;box-shadow:0 1px 5px rgba(16,34,56,.28);cursor:pointer}

@media(min-width:900px){
  /* Wide, readable desktop proportions. Extra viewport space belongs to the map;
     the navigation and information rail do not shrink into miniature controls. */
  :root{--sidebar:clamp(260px,18vw,380px)}
  body.app-body{overflow:hidden}
  .app-shell{display:grid;grid-template-columns:var(--sidebar) minmax(0,1fr);height:100dvh;min-height:100dvh}
  .app-main{height:100dvh;min-width:0;overflow:hidden}
  .mobile-nav{display:none}
  .content-view{height:100dvh;overflow:auto;padding:36px 34px 50px}

  .sidebar{
    display:flex;flex-direction:column;min-width:0;height:100dvh;
    background:linear-gradient(180deg,var(--navy-950),var(--navy-1000));color:#fff;
    padding:28px 22px 22px
  }
  .brand{padding:2px 4px 34px;gap:13px;min-width:0}
  .brand img{width:49px;height:auto;flex:0 0 auto}
  .brand span{min-width:0}
  .brand strong{font-size:24px;line-height:1;letter-spacing:-.035em;white-space:nowrap}
  .brand small{display:none}
  .main-nav{display:grid;gap:9px}
  .nav-item{
    border:0;background:transparent;color:rgba(255,255,255,.72);display:flex;align-items:center;
    gap:14px;min-height:60px;padding:0 17px;border-radius:15px;text-align:left;font-size:17px
  }
  .nav-item:hover{background:rgba(255,255,255,.055)}
  .nav-item.is-active{background:rgba(102,179,212,.13);color:#d0f0fb}
  .nav-symbol{width:30px;display:grid;place-items:center;flex:0 0 30px}
  .nav-symbol .np-icon{width:25px;height:25px}
  .sidebar-user{margin-top:auto;border-top:1px solid rgba(255,255,255,.1);padding:18px 8px 1px;display:flex;align-items:center;gap:12px}
  .sidebar-user>span:last-child{display:grid;gap:2px;min-width:0}
  .sidebar-user strong{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .sidebar-user small{font-size:10.5px;color:rgba(255,255,255,.6);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .avatar{width:44px;height:44px;min-width:44px;border-radius:50%;font-size:12px}

  .map-view.is-active{display:block!important;position:relative!important;grid-template-columns:none!important;height:100dvh!important;min-width:0!important;overflow:hidden!important;background:#d9ebf2!important}
  .map-stage{position:absolute!important;inset:0!important;grid-column:auto!important;width:100%!important;height:100dvh!important;min-width:0!important;overflow:hidden!important}
  .main-map{position:absolute;inset:0;z-index:1}

  /* One outer floating window, exactly as in the desktop mockup. */
  .map-panel{
    position:absolute!important;top:18px!important;right:18px!important;bottom:auto!important;left:auto!important;
    width:clamp(390px,22vw,430px)!important;height:auto!important;max-height:calc(100dvh - 36px)!important;
    overflow:auto!important;display:grid!important;grid-template-columns:1fr!important;align-content:start!important;
    gap:7px!important;padding:8px!important;margin:0!important;
    background:rgba(247,248,250,.96)!important;border:1px solid rgba(219,228,233,.96)!important;border-radius:20px!important;
    box-shadow:0 14px 38px rgba(16,34,56,.13)!important;backdrop-filter:blur(18px)!important;-webkit-backdrop-filter:blur(18px)!important;
    pointer-events:auto!important;z-index:850!important;scrollbar-width:none
  }
  .map-panel::-webkit-scrollbar{display:none}
  .map-panel .glass-card{
    pointer-events:auto!important;width:100%!important;margin:0!important;background:var(--paper)!important;
    border:1px solid rgba(219,228,233,.88)!important;border-radius:14px!important;
    box-shadow:0 2px 7px rgba(16,34,56,.04)!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important
  }

  /* Vehicle card: compact visual, readable status and battery block. */
  .map-panel .live-summary{
    display:grid!important;grid-template-columns:70px minmax(0,1fr) 94px!important;gap:11px!important;
    min-height:82px!important;align-items:center!important;padding:9px 10px!important
  }
  .map-panel .live-badge{
    display:grid!important;place-items:center!important;width:70px!important;height:62px!important;border-radius:11px!important;
    overflow:hidden!important;background-image:var(--panel-photo,url('/assets/vehicle-card-fallback.svg'))!important;
    background-size:cover!important;background-position:center!important;background-repeat:no-repeat!important;background-color:var(--blue-100)!important
  }
  .map-panel .live-badge .np-icon{display:none!important}
  .map-panel .live-copy{min-width:0!important}
  .map-panel .kicker-row{display:flex!important;align-items:center!important;gap:6px!important;margin:0 0 4px!important;font-size:11px!important;line-height:1.05!important;font-weight:850!important}
  .map-panel .status-dot{width:8px!important;height:8px!important;flex:0 0 8px!important}
  .map-panel .live-summary .live-copy>strong{display:block!important;margin:0!important;font-size:15.5px!important;line-height:1.08!important;letter-spacing:-.02em!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  .map-panel .live-summary .live-copy>small{display:block!important;margin-top:3px!important;font-size:10.5px!important;line-height:1.18!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  .map-panel .live-right{min-width:0!important;align-self:center!important;display:grid!important;justify-items:end!important;gap:7px!important;text-align:right!important}
  .map-panel .live-battery{display:flex!important;align-items:center!important;gap:6px!important}
  .map-panel .live-battery[hidden]{display:none!important}
  .map-panel .live-battery strong{font-size:15.5px!important;line-height:1!important;margin:0!important}
  .map-panel .live-battery-shell{width:31px!important;height:14px!important}
  .map-panel .live-update{display:grid!important;justify-items:end!important;gap:1px!important;margin:0!important;line-height:1.08!important}
  .map-panel .live-update small,.map-panel .live-update span{font-size:9.5px!important;line-height:1.08!important}

  /* Current Trip mirrors the mockup: heading, image/text row, one horizontal stats row. */
  .map-panel .current-trip-mini{display:block!important;min-height:0!important;padding:9px 10px 10px!important;overflow:hidden!important}
  .current-trip-label{display:flex!important;align-items:center!important;gap:7px!important;margin:0 0 7px!important;line-height:1!important}
  .current-trip-label-icon{display:grid!important;place-items:center!important;width:18px!important;height:18px!important;flex:0 0 18px!important;border-radius:50%!important;background:var(--blue-100)!important;color:var(--navy-900)!important}
  .current-trip-label-icon .np-icon{width:10px!important;height:10px!important}
  .current-trip-label strong{font-size:13.5px!important;line-height:1!important}
  .current-trip-main{
    appearance:none!important;-webkit-appearance:none!important;width:100%!important;border:0!important;background:transparent!important;color:inherit!important;
    display:grid!important;grid-template-columns:72px minmax(0,1fr)!important;align-items:center!important;gap:10px!important;
    padding:0!important;margin:0!important;text-align:left!important;border-radius:0!important;box-shadow:none!important
  }
  .current-trip-main:disabled{cursor:default!important;opacity:1!important}
  .current-trip-thumb{
    display:grid!important;place-items:center!important;width:72px!important;height:62px!important;min-width:72px!important;
    border:0!important;border-radius:10px!important;overflow:hidden!important;
    background-image:var(--panel-photo,url('/assets/trip-card-fallback.svg'))!important;background-size:cover!important;background-position:center!important;background-repeat:no-repeat!important;background-color:var(--blue-100)!important
  }
  .current-trip-thumb .np-icon{display:none!important}
  .current-trip-content{display:grid!important;gap:7px!important;min-width:0!important;align-self:stretch!important;align-content:center!important}
  .current-trip-topline{display:grid!important;grid-template-columns:minmax(0,1fr) 18px!important;gap:8px!important;align-items:center!important;min-width:0!important}
  .current-trip-copy{display:grid!important;gap:3px!important;min-width:0!important;align-content:center!important}
  .current-trip-copy strong{display:block!important;font-size:13.5px!important;line-height:1.08!important;letter-spacing:-.015em!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  .current-trip-copy small{display:block!important;color:var(--muted)!important;font-size:10.5px!important;line-height:1.15!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  .current-trip-topline>b{display:block!important;color:#91a2ae!important;font-size:22px!important;line-height:1!important;text-align:right!important;font-weight:700!important}
  .current-trip-stats{display:flex!important;align-items:center!important;gap:0!important;min-width:0!important;margin:0!important;padding:0!important;border:0!important;min-height:0!important}
  .current-trip-stats>span{display:flex!important;align-items:center!important;justify-content:flex-start!important;gap:4px!important;min-width:0!important;padding:0 8px!important;border-left:1px solid var(--line)!important}
  .current-trip-stats>span:first-child{padding-left:0!important;border-left:0!important}
  .current-trip-stats>span:last-child{padding-right:0!important}
  .current-trip-stats .np-icon{width:14px!important;height:14px!important;flex:0 0 14px!important}
  .current-trip-stats strong{font-size:10.5px!important;line-height:1.2!important;font-weight:760!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}

  /* Recent Activity: compact single-line rows with the mockup hierarchy. */
  .map-panel .activity-card{padding:10px 11px 8px!important}
  .map-panel .section-line{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:12px!important;margin:0 0 2px!important}
  .map-panel .section-line strong{font-size:14.5px!important;line-height:1.12!important;letter-spacing:-.015em!important}
  .activity-see-all{appearance:none!important;-webkit-appearance:none!important;border:0!important;background:transparent!important;color:var(--blue-700)!important;font-size:10.5px!important;font-weight:800!important;line-height:1!important;padding:3px 0!important}
  .map-panel .activity-list{display:grid!important}
  .map-panel .activity-item{display:grid!important;grid-template-columns:20px minmax(0,1fr) auto!important;gap:8px!important;align-items:center!important;min-height:39px!important;padding:4px 0!important;border-top:1px solid var(--line)!important}
  .map-panel .activity-item:first-child{border-top:0!important}
  .activity-icon{display:grid!important;place-items:center!important;width:20px!important;height:20px!important;color:var(--blue-700)!important}
  .activity-icon .np-icon{width:15px!important;height:15px!important}
  .activity-parked-dot{display:block!important;width:12px!important;height:12px!important;border-radius:50%!important;background:#37a653!important;box-shadow:0 0 0 2px rgba(55,166,83,.10)!important;justify-self:center!important}
  .activity-copy{min-width:0!important}
  .activity-copy strong{display:block!important;font-size:12.5px!important;line-height:1.12!important;font-weight:720!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  .activity-time{font-size:10px!important;line-height:1.08!important;color:var(--muted)!important;white-space:nowrap!important}

  /* Search and map controls follow the same physical scale as the mockup. */
  .desktop-map-search{
    position:absolute!important;z-index:760!important;top:18px!important;left:18px!important;display:flex!important;align-items:center!important;
    width:clamp(390px,27vw,610px)!important;max-width:calc(100% - clamp(560px,34vw,730px))!important;height:52px!important;
    border:1px solid var(--line)!important;border-radius:14px!important;background:rgba(255,255,255,.97)!important;box-shadow:var(--soft-shadow)!important
  }
  .desktop-map-search-icon{width:45px!important;text-align:center!important;color:var(--muted)!important;font-size:21px!important;line-height:1!important;flex:0 0 45px!important}
  .desktop-map-search input{width:100%;min-width:0;height:100%;border:0;outline:0;background:transparent;color:var(--ink);padding:0 14px 0 0;font-size:14px!important}
  .desktop-map-search-results{position:absolute;top:calc(100% + 8px);left:0;right:0;padding:7px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--soft-shadow);max-height:320px;overflow:auto}
  .desktop-map-search-result{width:100%;display:grid;gap:3px;border:0;background:transparent;text-align:left;color:inherit;padding:10px 11px;border-radius:9px}
  .desktop-map-search-result:hover,.desktop-map-search-result:focus-visible{background:var(--ice);outline:0}
  .desktop-map-search-result strong{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .desktop-map-search-result small{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .desktop-map-search-empty{padding:10px;color:var(--muted);font-size:11px}

  .desktop-map-controls{position:absolute!important;z-index:760!important;top:80px!important;left:18px!important;display:grid!important;gap:12px!important}
  .desktop-map-zoom{display:grid!important;width:46px!important;border:1px solid var(--line)!important;border-radius:11px!important;overflow:hidden!important;background:rgba(255,255,255,.97)!important;box-shadow:var(--soft-shadow)!important}
  .desktop-map-zoom button{width:46px!important;height:41px!important;border:0!important;background:transparent!important;color:var(--navy-900)!important;font-size:23px!important;line-height:1!important;display:grid!important;place-items:center!important;padding:0!important}
  .desktop-map-zoom button+button{border-top:1px solid var(--line)!important}
  .desktop-map-zoom button:hover,.desktop-map-control-button:hover{background:var(--ice)!important}
  .desktop-map-control-button{width:46px!important;height:46px!important;border:1px solid var(--line)!important;border-radius:50%!important;background:rgba(255,255,255,.97)!important;color:var(--navy-900)!important;display:grid!important;place-items:center!important;box-shadow:var(--soft-shadow)!important;padding:0!important}
  .desktop-map-control-button .np-icon{width:22px!important;height:22px!important}
  .map-stage>.map-tools{display:none!important}
  .leaflet-control-attribution{font-size:9px!important}
}

@media(min-width:900px) and (max-width:1240px){
  :root{--sidebar:clamp(220px,19vw,270px)}
  .map-panel{width:clamp(370px,34vw,400px)!important}
  .desktop-map-search{width:clamp(320px,30vw,420px)!important;max-width:calc(100% - 440px)!important}
  .sidebar{padding-left:16px;padding-right:16px}
}

@media(max-width:899px){
  .desktop-map-search,.desktop-map-controls{display:none!important}
}

/* NordicPass 3.0 · v5.41 · Owner Status mobile dashboard
   Mobile only. Keep the 3.0 visual language, but use 2.6-like information density
   and a more app-like sensor dashboard. */
@media(max-width:759px){
  [data-view="owner"]{
    padding-top:max(15px,env(safe-area-inset-top))!important;
    padding-left:12px!important;
    padding-right:12px!important;
    padding-bottom:calc(var(--mobile-nav) + 16px)!important;
  }
  #owner-view{max-width:none!important;margin:0!important;}

  /* Header: compact app header instead of a desktop hero. */
  .owner-header{
    display:grid!important;
    grid-template-columns:1fr!important;
    align-items:start!important;
    gap:8px!important;
    margin:0 0 9px!important;
    max-width:none!important;
  }
  .owner-header .eyebrow{display:none!important;}
  .owner-header h1{
    margin:0!important;
    font-size:30px!important;
    line-height:1.02!important;
    letter-spacing:-.042em!important;
  }
  .owner-header p{
    margin:3px 0 0!important;
    max-width:none!important;
    font-size:11.5px!important;
    line-height:1.3!important;
  }
  .owner-header .header-actions{
    width:100%!important;
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
    gap:7px!important;
    margin:0!important;
  }
  .owner-header .header-actions button{
    min-height:35px!important;
    padding:7px 10px!important;
    border-radius:11px!important;
    font-size:11px!important;
    line-height:1!important;
    justify-content:center!important;
  }
  .owner-header .button-icon{width:15px!important;height:15px!important;}

  /* Live connection state becomes a compact status strip. */
  .owner-live-strip{
    margin:0 0 9px!important;
    padding:8px 10px!important;
    min-height:44px!important;
    gap:8px!important;
    border-radius:13px!important;
    box-shadow:none!important;
  }
  .owner-live-strip .status-pulse{
    width:8px!important;
    height:8px!important;
    box-shadow:0 0 0 3px rgba(59,167,120,.12)!important;
  }
  .owner-live-strip>div{gap:1px!important;min-width:0!important;}
  .owner-live-strip strong{font-size:11.5px!important;line-height:1.15!important;}
  .owner-live-strip small{
    font-size:9px!important;
    line-height:1.2!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }
  .owner-live-strip .site-pill{display:none!important;}

  /* Main cards: same information, substantially less chrome/height. */
  .owner-grid{
    grid-template-columns:1fr!important;
    gap:9px!important;
    margin:0!important;
    max-width:none!important;
    padding-bottom:0!important;
  }
  .owner-section{
    padding:12px!important;
    border-radius:16px!important;
    box-shadow:0 5px 16px rgba(16,36,58,.055)!important;
  }
  .owner-card-title{
    gap:8px!important;
    margin-bottom:9px!important;
    min-height:24px!important;
  }
  .owner-card-icon{width:21px!important;height:21px!important;}
  .owner-card-title h2{
    font-size:18px!important;
    line-height:1.05!important;
    letter-spacing:-.025em!important;
  }
  .owner-card-title p{
    margin-top:1px!important;
    font-size:9.5px!important;
    line-height:1.15!important;
  }

  .owner-feature{
    padding:10px 12px!important;
    margin-bottom:7px!important;
    border-radius:13px!important;
  }
  .owner-feature small{
    font-size:8.5px!important;
    letter-spacing:.065em!important;
  }
  .owner-feature strong{
    margin-top:3px!important;
    font-size:25px!important;
    line-height:1!important;
  }
  .owner-feature .owner-progress{
    height:6px!important;
    margin-top:8px!important;
  }

  .owner-value-grid{gap:6px!important;}
  .owner-value{
    min-height:48px!important;
    padding:7px 9px!important;
    gap:6px!important;
    border-radius:11px!important;
  }
  .owner-value-icon{width:16px!important;height:16px!important;}
  .owner-value small{font-size:8.5px!important;line-height:1.05!important;}
  .owner-value strong{font-size:13px!important;line-height:1.1!important;}

  .solar-status{
    margin-top:7px!important;
    padding:7px 9px!important;
    min-height:44px!important;
    border-radius:11px!important;
    gap:7px!important;
  }
  .solar-status small{font-size:8.5px!important;}
  .solar-status strong{font-size:12px!important;}
  .solar-status p{font-size:9px!important;}

  /* Climate becomes a real mobile dashboard: two sensor tiles per row. */
  .climate-section .owner-card-title p{display:none!important;}
  .climate-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:7px!important;
  }
  .climate-card{
    min-width:0!important;
    padding:9px!important;
    border-radius:13px!important;
    background:#fff!important;
  }
  .climate-name{gap:5px!important;min-width:0!important;}
  .climate-name .mini-icon{width:13px!important;height:13px!important;flex:0 0 13px!important;}
  .climate-card h3{
    min-width:0!important;
    font-size:11px!important;
    line-height:1.15!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }
  .climate-temp{
    margin:5px 0 4px!important;
    font-size:24px!important;
    line-height:1!important;
    letter-spacing:-.035em!important;
  }
  .climate-humidity{gap:4px!important;margin-top:5px!important;}
  .climate-humidity small{font-size:8px!important;}
  .climate-humidity strong{font-size:9px!important;}
  .sensor-progress{height:4px!important;}
  .climate-meta{
    margin-top:5px!important;
    gap:5px!important;
    font-size:8px!important;
    line-height:1.1!important;
    white-space:nowrap!important;
  }
  .tiny-icon{width:10px!important;height:10px!important;}
  .climate-card>small{
    margin-top:5px!important;
    font-size:8px!important;
  }
}

/* Very narrow phones get one sensor per row rather than crushing the content. */
@media(max-width:359px){
  [data-view="owner"] .climate-grid{grid-template-columns:1fr!important;}
}
/* NordicPass 3.0 · v5.43 · mobile input focus zoom guard
   iOS Safari auto-zooms focused form controls when their rendered text is below 16px.
   Keep user pinch-zoom available; prevent only the unwanted form-focus zoom. */
@media(max-width:759px){
  input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="hidden"]),
  textarea,
  select,
  [contenteditable="true"]{
    font-size:16px!important;
  }
}
/* NordicPass 3.0 · v5.44 · mobile More parity
   Mobile only. Align More with Trips/Places and use the approved mockup icon language
   without changing the binding NordicPass 3.0 colour palette or desktop layout. */
@media(max-width:759px){
  section[data-view="more"]{
    padding-top:max(15px,env(safe-area-inset-top))!important;
    padding-left:14px!important;
    padding-right:14px!important;
    padding-bottom:calc(var(--mobile-nav) + 16px)!important;
    background:#fbfcfd!important;
  }
  section[data-view="more"]>.page-header{
    display:flex!important;
    align-items:center!important;
    justify-content:space-between!important;
    gap:12px!important;
    margin:0 0 14px!important;
    padding:0!important;
    min-height:38px!important;
  }
  section[data-view="more"]>.page-header .eyebrow,
  section[data-view="more"]>.page-header p{
    display:none!important;
  }
  section[data-view="more"]>.page-header h1{
    margin:0!important;
    font-size:27px!important;
    line-height:1!important;
    letter-spacing:-.045em!important;
  }
  section[data-view="more"] .menu-grid{
    gap:10px!important;
    margin:0!important;
  }
  section[data-view="more"] .menu-card{
    grid-template-columns:54px minmax(0,1fr) 18px!important;
    gap:13px!important;
    min-height:82px!important;
    padding:12px 13px!important;
    border-radius:16px!important;
    box-shadow:0 3px 12px rgba(16,36,58,.045)!important;
  }
  section[data-view="more"] .menu-icon{
    width:52px!important;
    height:52px!important;
    border-radius:50%!important;
  }
  section[data-view="more"] .menu-icon .np-icon{
    width:27px!important;
    height:27px!important;
  }
  section[data-view="more"] .menu-card>span:nth-child(2){gap:2px!important;min-width:0!important;}
  section[data-view="more"] .menu-card strong{
    font-size:16px!important;
    line-height:1.08!important;
    letter-spacing:-.015em!important;
  }
  section[data-view="more"] .menu-card small{
    font-size:12px!important;
    line-height:1.25!important;
  }
  section[data-view="more"] .menu-card b{
    font-size:26px!important;
    line-height:1!important;
  }

  /* Mockup-style line glyphs for Owner Status, Budget and Settings.
     Existing DOM/routes remain untouched; these are mobile presentation masks only. */
  section[data-view="more"] .menu-card:nth-child(1) .menu-icon .np-icon,
  section[data-view="more"] .menu-card:nth-child(2) .menu-icon .np-icon,
  section[data-view="more"] .menu-card:nth-child(5) .menu-icon .np-icon{display:none!important;}

  section[data-view="more"] .menu-card:nth-child(1) .menu-icon::before,
  section[data-view="more"] .menu-card:nth-child(2) .menu-icon::before,
  section[data-view="more"] .menu-card:nth-child(5) .menu-icon::before{
    content:"";
    display:block;
    width:29px;
    height:29px;
    background:currentColor;
    -webkit-mask-position:center;
    -webkit-mask-repeat:no-repeat;
    -webkit-mask-size:contain;
    mask-position:center;
    mask-repeat:no-repeat;
    mask-size:contain;
  }
  section[data-view="more"] .menu-card:nth-child(1) .menu-icon::before{
    -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9.5' cy='7.5' r='3.2'/%3E%3Cpath d='M4 20v-1.2a5.5 5.5 0 0 1 11 0V20'/%3E%3Ccircle cx='18.2' cy='8.2' r='1.1' fill='black' stroke='none'/%3E%3Cpath d='M17.1 4.7a4.5 4.5 0 0 1 4 4.3M16.5 2.4a7.2 7.2 0 0 1 6.1 6.7'/%3E%3C/svg%3E");
    mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9.5' cy='7.5' r='3.2'/%3E%3Cpath d='M4 20v-1.2a5.5 5.5 0 0 1 11 0V20'/%3E%3Ccircle cx='18.2' cy='8.2' r='1.1' fill='black' stroke='none'/%3E%3Cpath d='M17.1 4.7a4.5 4.5 0 0 1 4 4.3M16.5 2.4a7.2 7.2 0 0 1 6.1 6.7'/%3E%3C/svg%3E");
  }
  section[data-view="more"] .menu-card:nth-child(2) .menu-icon::before{
    -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cellipse cx='8' cy='6' rx='4' ry='2'/%3E%3Cpath d='M4 6v4c0 1.1 1.8 2 4 2s4-.9 4-2V6M4 10v4c0 1.1 1.8 2 4 2 1.1 0 2.1-.2 2.8-.6M4 14v4c0 1.1 1.8 2 4 2 1 0 1.9-.2 2.6-.5'/%3E%3Cellipse cx='16.5' cy='11' rx='3.5' ry='1.8'/%3E%3Cpath d='M13 11v3.5c0 1 1.6 1.8 3.5 1.8s3.5-.8 3.5-1.8V11M13 14.5V18c0 1 1.6 1.8 3.5 1.8S20 19 20 18v-3.5'/%3E%3C/svg%3E");
    mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cellipse cx='8' cy='6' rx='4' ry='2'/%3E%3Cpath d='M4 6v4c0 1.1 1.8 2 4 2s4-.9 4-2V6M4 10v4c0 1.1 1.8 2 4 2 1.1 0 2.1-.2 2.8-.6M4 14v4c0 1.1 1.8 2 4 2 1 0 1.9-.2 2.6-.5'/%3E%3Cellipse cx='16.5' cy='11' rx='3.5' ry='1.8'/%3E%3Cpath d='M13 11v3.5c0 1 1.6 1.8 3.5 1.8s3.5-.8 3.5-1.8V11M13 14.5V18c0 1 1.6 1.8 3.5 1.8S20 19 20 18v-3.5'/%3E%3C/svg%3E");
  }
  section[data-view="more"] .menu-card:nth-child(5) .menu-icon::before{
    -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3Cpath d='M19.4 15a1.7 1.7 0 0 0 .34 1.88l.06.06-2.83 2.83-.06-.06A1.7 1.7 0 0 0 15 19.4a1.7 1.7 0 0 0-1 .6 1.7 1.7 0 0 0-.4 1.1V21h-4v-.1A1.7 1.7 0 0 0 8.6 19.4a1.7 1.7 0 0 0-1.88.34l-.06.06-2.83-2.83.06-.06A1.7 1.7 0 0 0 4.6 15a1.7 1.7 0 0 0-.6-1 1.7 1.7 0 0 0-1.1-.4H3v-4h.1A1.7 1.7 0 0 0 4.6 8.6a1.7 1.7 0 0 0-.34-1.88l-.06-.06 2.83-2.83.06.06A1.7 1.7 0 0 0 9 4.6a1.7 1.7 0 0 0 1-.6 1.7 1.7 0 0 0 .4-1.1V3h4v.1A1.7 1.7 0 0 0 15.4 4.6a1.7 1.7 0 0 0 1.88-.34l.06-.06 2.83 2.83-.06.06A1.7 1.7 0 0 0 19.4 9c.4.3.75.65 1 1 .26.38.4.83.4 1.3v1.4c0 .47-.14.92-.4 1.3-.25.35-.6.7-1 1Z'/%3E%3C/svg%3E");
    mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3Cpath d='M19.4 15a1.7 1.7 0 0 0 .34 1.88l.06.06-2.83 2.83-.06-.06A1.7 1.7 0 0 0 15 19.4a1.7 1.7 0 0 0-1 .6 1.7 1.7 0 0 0-.4 1.1V21h-4v-.1A1.7 1.7 0 0 0 8.6 19.4a1.7 1.7 0 0 0-1.88.34l-.06.06-2.83-2.83.06-.06A1.7 1.7 0 0 0 4.6 15a1.7 1.7 0 0 0-.6-1 1.7 1.7 0 0 0-1.1-.4H3v-4h.1A1.7 1.7 0 0 0 4.6 8.6a1.7 1.7 0 0 0-.34-1.88l-.06-.06 2.83-2.83.06.06A1.7 1.7 0 0 0 9 4.6a1.7 1.7 0 0 0 1-.6 1.7 1.7 0 0 0 .4-1.1V3h4v.1A1.7 1.7 0 0 0 15.4 4.6a1.7 1.7 0 0 0 1.88-.34l.06-.06 2.83 2.83-.06.06A1.7 1.7 0 0 0 19.4 9c.4.3.75.65 1 1 .26.38.4.83.4 1.3v1.4c0 .47-.14.92-.4 1.3-.25.35-.6.7-1 1Z'/%3E%3C/svg%3E");
  }
}
/* NordicPass 3.0 · v5.46 · mobile Settings parity
   Settings uses the same mobile app rhythm as More/Trips/Places.
   Units stay two-up where there is room; Connections owns integration setup.
   Desktop Settings is intentionally unchanged. */
@media(max-width:759px){
  section[data-view="settings"]{
    padding-top:max(15px,env(safe-area-inset-top))!important;
    padding-left:14px!important;
    padding-right:14px!important;
    padding-bottom:calc(var(--mobile-nav) + 16px)!important;
    background:#fbfcfd!important;
  }
  #settings-view{max-width:none!important;margin:0!important;}

  /* Same compact page-title baseline as More. */
  section[data-view="settings"] .page-header{
    display:block!important;
    width:100%!important;
    max-width:none!important;
    margin:0 0 14px!important;
    padding:0!important;
  }
  section[data-view="settings"] .page-header .eyebrow,
  section[data-view="settings"] .page-header p{display:none!important;}
  section[data-view="settings"] .page-header h1{
    margin:0!important;
    font-size:27px!important;
    line-height:1!important;
    letter-spacing:-.045em!important;
  }

  .settings-layout{
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    grid-template-columns:1fr!important;
    gap:10px!important;
  }
  .settings-card{
    min-width:0!important;
    padding:13px!important;
    border-radius:16px!important;
    border:1px solid var(--line)!important;
    background:#fff!important;
    box-shadow:0 3px 12px rgba(16,36,58,.045)!important;
  }
  .settings-card-head{
    align-items:center!important;
    gap:10px!important;
    padding:0 0 9px!important;
    border-bottom:0!important;
  }
  .settings-card-icon{
    box-sizing:border-box!important;
    width:40px!important;
    height:40px!important;
    flex:0 0 40px!important;
    padding:9px!important;
    border-radius:13px!important;
    color:var(--navy-900)!important;
    background:linear-gradient(145deg,var(--blue-100),#f8eef2)!important;
  }
  .settings-card h2{
    margin:0!important;
    font-size:17px!important;
    line-height:1.08!important;
    letter-spacing:-.02em!important;
  }
  .settings-card p{
    margin:2px 0 0!important;
    font-size:11px!important;
    line-height:1.25!important;
  }

  /* Distance + Temperature are deliberately side-by-side on normal phones. */
  .settings-fields{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:8px!important;
    padding-top:4px!important;
  }
  .settings-fields label{gap:5px!important;min-width:0!important;}
  .settings-fields label>span{
    font-size:10.5px!important;
    line-height:1.1!important;
  }
  .settings-fields select{
    min-width:0!important;
    min-height:42px!important;
    width:100%!important;
    padding:8px 10px!important;
    border-radius:11px!important;
    font-size:16px!important;
  }

  .setting-switches{padding-top:0!important;}
  .switch-row{
    min-height:48px!important;
    gap:12px!important;
    padding:9px 0!important;
  }
  .switch-row strong{font-size:13.5px!important;line-height:1.15!important;}
  .switch-row small{font-size:10.5px!important;line-height:1.25!important;}
  .switch-row input[type=checkbox]{width:42px!important;height:24px!important;}
  .switch-row input[type=checkbox]::after{width:18px!important;height:18px!important;}
  .switch-row input[type=checkbox]:checked::after{transform:translateX(18px)!important;}

  .settings-connection-card{grid-column:auto!important;}
  .connection-row{
    display:flex!important;
    align-items:center!important;
    justify-content:space-between!important;
    gap:10px!important;
    padding-top:3px!important;
  }
  .connection-row>div{gap:3px!important;min-width:0!important;}
  .connection-state{gap:7px!important;}
  .connection-state strong{font-size:13.5px!important;}
  .connection-row small{font-size:10.5px!important;line-height:1.2!important;}
  #settings-manage-vrm{
    flex:0 0 auto!important;
    min-height:36px!important;
    padding:7px 10px!important;
    border-radius:11px!important;
    font-size:11px!important;
  }
  #settings-manage-vrm .button-icon{width:14px!important;height:14px!important;}
  .security-copy{
    margin-top:8px!important;
    padding:8px 9px!important;
    border-radius:10px!important;
    font-size:9.5px!important;
    line-height:1.3!important;
  }

  .settings-save{
    grid-column:auto!important;
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:7px!important;
    width:100%!important;
  }
  .settings-save .primary-button{
    width:100%!important;
    min-height:44px!important;
    border-radius:12px!important;
    font-size:13px!important;
  }
  .settings-save #settings-result{width:100%!important;}

  /* Owner Status still reports VRM health, but configuration now lives only in Settings. */
  .owner-header .header-actions{
    display:flex!important;
    grid-template-columns:none!important;
    justify-content:flex-end!important;
    width:100%!important;
  }
  .owner-header .header-actions #owner-refresh{
    width:auto!important;
    min-width:112px!important;
  }
}

@media(max-width:359px){
  .settings-fields{grid-template-columns:1fr!important;}
  .connection-row{display:grid!important;align-items:start!important;}
  #settings-manage-vrm{width:100%!important;}
}
/* NordicPass 3.0 · v5.47 · mobile app modal sheets
   One mobile modal language for Trips, Places, VRM Manage and the other SPA dialogs.
   Desktop modal geometry is intentionally unchanged. */
@media(max-width:759px){
  .modal-backdrop{
    padding:max(10px,env(safe-area-inset-top)) 0 0!important;
    place-items:end stretch!important;
    overflow:hidden!important;
    background:rgba(6,17,29,.46)!important;
    backdrop-filter:blur(5px)!important;
    -webkit-backdrop-filter:blur(5px)!important;
  }
  .modal-shell,
  .modal-shell:has(#trip-form){
    display:flex!important;
    flex-direction:column!important;
    width:100%!important;
    max-width:none!important;
    max-height:calc(100dvh - env(safe-area-inset-top) - 10px)!important;
    padding:0!important;
    overflow:hidden!important;
    border-radius:24px 24px 0 0!important;
    background:#fbfcfd!important;
    box-shadow:0 -18px 54px rgba(5,16,28,.24)!important;
    touch-action:pan-y!important;
  }
  .modal-shell::before{
    content:"";
    display:block;
    flex:0 0 auto;
    width:38px;
    height:4px;
    margin:8px auto 4px;
    border-radius:999px;
    background:#c9d4db;
  }
  #modal-content{
    min-height:0!important;
    overflow-x:hidden!important;
    overflow-y:auto!important;
    overscroll-behavior-y:contain;
    -webkit-overflow-scrolling:touch;
    padding:0 14px calc(16px + env(safe-area-inset-bottom))!important;
  }
  .modal-header{
    position:sticky!important;
    top:0!important;
    z-index:20!important;
    display:flex!important;
    align-items:flex-start!important;
    gap:10px!important;
    margin:0 -14px 12px!important;
    padding:10px 14px 11px!important;
    border-bottom:1px solid var(--line)!important;
    background:rgba(251,252,253,.96)!important;
    backdrop-filter:blur(12px)!important;
    -webkit-backdrop-filter:blur(12px)!important;
  }
  .modal-header>div{min-width:0!important;flex:1!important;}
  .modal-header .eyebrow{
    font-size:9px!important;
    line-height:1.1!important;
    letter-spacing:.12em!important;
  }
  .modal-header h2{
    margin:2px 0 1px!important;
    font-size:23px!important;
    line-height:1.05!important;
    letter-spacing:-.035em!important;
  }
  .modal-header p{
    margin:2px 0 0!important;
    font-size:11px!important;
    line-height:1.3!important;
    color:var(--muted)!important;
  }

  /* Canonical mobile X: same geometry and drawn glyph in every popup. */
  .modal-close{
    position:relative!important;
    display:grid!important;
    place-items:center!important;
    flex:0 0 34px!important;
    width:34px!important;
    min-width:34px!important;
    height:34px!important;
    min-height:34px!important;
    margin:0!important;
    padding:0!important;
    border:1px solid #dfe8ed!important;
    border-radius:50%!important;
    background:#eef3f6!important;
    color:var(--navy-900)!important;
    box-shadow:none!important;
    font-size:0!important;
    line-height:1!important;
    -webkit-appearance:none!important;
    appearance:none!important;
  }
  .modal-close::before,
  .modal-close::after{
    content:"";
    position:absolute;
    left:50%;
    top:50%;
    width:14px;
    height:1.8px;
    border-radius:999px;
    background:currentColor;
    transform-origin:center;
  }
  .modal-close::before{transform:translate(-50%,-50%) rotate(45deg);}
  .modal-close::after{transform:translate(-50%,-50%) rotate(-45deg);}

  .modal-form{gap:11px!important;}
  .modal-form>label,
  .field-grid label{gap:5px!important;font-size:12px!important;}
  .field-grid{gap:9px!important;}
  .field-grid.two{grid-template-columns:1fr!important;}
  .modal-form input,
  .modal-form select,
  .modal-form textarea,
  .field-grid input,
  .field-grid select{
    min-height:44px!important;
    border-radius:12px!important;
    padding:10px 11px!important;
  }
  .modal-form textarea{min-height:92px!important;}

  #trip-form .trip-form-section{
    margin:5px 0 0!important;
    padding-top:10px!important;
  }
  #trip-form .trip-form-section strong{font-size:12.5px!important;}
  #trip-form .trip-form-section span,
  #trip-form .trip-form-help{font-size:10.5px!important;line-height:1.3!important;}

  #place-form .place-picker-block{gap:8px!important;}
  #place-form .place-picker-head{gap:8px!important;}
  #place-form .place-picker-map{height:220px!important;border-radius:14px!important;}
  #place-form .place-picker-current{min-height:38px!important;border-radius:11px!important;}

  #vrm-form .security-note{
    gap:8px!important;
    padding:10px!important;
    border-radius:13px!important;
  }
  #vrm-form .security-note .section-icon{width:20px!important;height:20px!important;flex:0 0 20px!important;}
  #vrm-form .security-note p{font-size:10.5px!important;line-height:1.3!important;}

  .modal-actions{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    align-items:stretch!important;
    gap:8px!important;
    width:100%!important;
    margin-top:3px!important;
  }
  .modal-actions>button,
  .modal-actions>div>button{
    width:100%!important;
    min-height:44px!important;
    border-radius:12px!important;
    padding:9px 10px!important;
  }
  .modal-actions.spread{
    grid-template-columns:1fr!important;
  }
  .modal-actions.spread>span:empty{display:none!important;}
  .modal-actions.spread>div{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:8px!important;
    width:100%!important;
  }

  /* Place detail gets the same sheet density as the edit/create popup. */
  .place-source-photo{margin:0 0 11px!important;border-radius:14px!important;}
  .place-source-photo>img{max-height:220px!important;}
  .place-source-photo figcaption{padding:7px 9px!important;font-size:9.5px!important;}
  .place-detail-hero{margin:5px 0 11px!important;padding:11px!important;border-radius:14px!important;}
  .place-detail-note{margin-top:8px!important;font-size:11px!important;line-height:1.35!important;}
  .visit-section{margin-top:14px!important;}
  .visit-section h3{font-size:17px!important;}
  .visit-card{margin-top:8px!important;padding:11px!important;border-radius:14px!important;}
  .recorded-weather{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:6px!important;margin-top:9px!important;}
  .recorded-weather>div{padding:8px!important;border-radius:11px!important;}
}

@media(max-width:359px){
  .modal-actions{grid-template-columns:1fr!important;}
  .modal-actions.spread>div{grid-template-columns:1fr!important;}
}
/* NordicPass 3.0 · v5.48 · mobile Sharing Account toggle Owner strip
   Phone-only polish. Desktop presentation and all API/data semantics stay unchanged. */
@media(max-width:759px){
  /* Sharing + Account use the same page-title position/gutters as More/Settings. */
  section[data-view="sharing"],
  section[data-view="account"]{
    padding-top:max(15px,env(safe-area-inset-top))!important;
    padding-left:14px!important;
    padding-right:14px!important;
    padding-bottom:calc(var(--mobile-nav) + 16px)!important;
    background:#fbfcfd!important;
  }
  #sharing-view,#account-view{max-width:none!important;margin:0!important;}
  section[data-view="sharing"] .page-header,
  section[data-view="account"] .page-header{
    display:block!important;
    width:100%!important;
    max-width:none!important;
    margin:0 0 14px!important;
    padding:0!important;
  }
  section[data-view="sharing"] .page-header .eyebrow,
  section[data-view="sharing"] .page-header p,
  section[data-view="account"] .page-header .eyebrow,
  section[data-view="account"] .page-header p{display:none!important;}
  section[data-view="sharing"] .page-header h1,
  section[data-view="account"] .page-header h1{
    margin:0!important;
    font-size:27px!important;
    line-height:1!important;
    letter-spacing:-.045em!important;
  }

  #sharing-view .detail-grid{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:10px!important;
    width:100%!important;
    max-width:none!important;
    margin:0!important;
  }
  #sharing-view .panel-card,
  #account-view .panel-card{
    width:100%!important;
    min-width:0!important;
    padding:13px!important;
    border-radius:16px!important;
    border:1px solid var(--line)!important;
    background:#fff!important;
    box-shadow:0 3px 12px rgba(16,36,58,.045)!important;
  }
  #sharing-view .panel-title{margin:0 0 10px!important;}
  #sharing-view .panel-title h2{font-size:17px!important;line-height:1.1!important;}
  #sharing-view .form-grid{gap:9px!important;}
  #sharing-view .form-grid label{gap:5px!important;font-size:12px!important;}
  #sharing-view .form-grid input,
  #sharing-view .form-grid select{
    min-width:0!important;
    width:100%!important;
    min-height:44px!important;
    padding:9px 10px!important;
    border-radius:11px!important;
    font-size:16px!important;
  }
  #sharing-view .permission-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:7px!important;
  }
  #sharing-view .permission-toggle{
    min-height:42px!important;
    padding:8px 9px!important;
    border-radius:11px!important;
    gap:7px!important;
    font-size:12px!important;
    font-weight:750!important;
  }
  #sharing-view .permission-toggle input[type="checkbox"]{
    width:18px!important;height:18px!important;min-height:18px!important;
    padding:0!important;flex:0 0 18px!important;
  }
  #sharing-view #share-form>.primary-button{
    width:100%!important;min-height:44px!important;border-radius:12px!important;
  }
  #sharing-view .share-list{gap:7px!important;}
  #sharing-view .share-row{
    grid-template-columns:minmax(0,1fr) auto!important;
    gap:8px!important;
    padding:10px!important;
    border-radius:12px!important;
  }
  #sharing-view .share-row>div{display:grid!important;gap:2px!important;min-width:0!important;}
  #sharing-view .share-row strong{font-size:13px!important;}
  #sharing-view .share-row small{font-size:10px!important;line-height:1.25!important;overflow-wrap:anywhere!important;}
  #sharing-view .share-row .danger-button{min-height:34px!important;padding:6px 9px!important;border-radius:10px!important;font-size:10.5px!important;}
  #sharing-view .share-url{font-size:10px!important;padding:8px!important;border-radius:9px!important;}

  #account-view .stats-list{border-radius:12px!important;}
  #account-view .stats-row{gap:10px!important;padding:10px 11px!important;font-size:12px!important;align-items:center!important;}
  #account-view .stats-row strong{min-width:0!important;text-align:right!important;overflow-wrap:anywhere!important;}
  #account-view #logout-button{
    width:100%!important;
    min-height:44px!important;
    margin-top:10px!important;
    border-radius:12px!important;
  }

  /* Add/Edit Place: a real single-layer slider. v5.47 generic modal-input rules must not inflate it. */
  #place-form .switch-row input[type="checkbox"]{
    -webkit-appearance:none!important;
    appearance:none!important;
    box-sizing:border-box!important;
    width:46px!important;
    min-width:46px!important;
    max-width:46px!important;
    height:28px!important;
    min-height:28px!important;
    max-height:28px!important;
    padding:0!important;
    margin:0!important;
    border:0!important;
    border-radius:999px!important;
    background:#cfd9df!important;
    box-shadow:none!important;
    outline:none!important;
    position:relative!important;
    flex:0 0 46px!important;
  }
  #place-form .switch-row input[type="checkbox"]::after{
    content:""!important;
    position:absolute!important;
    width:22px!important;
    height:22px!important;
    top:3px!important;
    left:3px!important;
    border-radius:50%!important;
    background:#fff!important;
    box-shadow:0 1px 4px rgba(0,0,0,.18)!important;
    transform:none!important;
    transition:transform .18s ease!important;
  }
  #place-form .switch-row input[type="checkbox"]:checked{background:var(--blue-600)!important;}
  #place-form .switch-row input[type="checkbox"]:checked::after{transform:translateX(18px)!important;}

  /* Owner Status: phone refresh belongs inside the VRM connection strip. */
  .owner-header .header-actions{display:none!important;}
  .owner-live-strip{
    display:grid!important;
    grid-template-columns:auto minmax(0,1fr) auto!important;
    align-items:center!important;
    gap:9px!important;
  }
  .owner-live-strip>div{min-width:0!important;}
  .owner-live-strip>div strong{font-size:12.5px!important;line-height:1.15!important;}
  .owner-live-strip>div small{font-size:9.5px!important;line-height:1.2!important;}
  .owner-live-strip .site-pill{display:none!important;}
  #owner-refresh-mobile{
    display:inline-flex!important;
    align-items:center!important;
    justify-content:center!important;
    width:auto!important;
    min-width:0!important;
    min-height:34px!important;
    padding:6px 9px!important;
    border-radius:10px!important;
    font-size:10.5px!important;
    white-space:nowrap!important;
  }
}

@media(min-width:760px){
  #owner-refresh-mobile{display:none!important;}
}

@media(max-width:359px){
  #sharing-view .permission-grid{grid-template-columns:1fr!important;}
  .owner-live-strip{grid-template-columns:auto minmax(0,1fr)!important;}
  #owner-refresh-mobile{grid-column:2!important;justify-self:start!important;}
}
/* NordicPass 3.0 · v5.49 · mobile Trip detail Journal and iOS date width
   Phone-only presentation. Desktop Trip detail/Journal and all Trip data rules remain unchanged. */
@media(max-width:759px){
  /* iOS datetime-local has a stubborn intrinsic inline size. Make Start/End obey
     the exact same content width as the ordinary Trip form controls. */
  #trip-form input[name="startLocal"],
  #trip-form input[name="endLocal"]{
    display:block!important;
    box-sizing:border-box!important;
    min-width:0!important;
    max-width:100%!important;
    inline-size:100%!important;
    max-inline-size:100%!important;
    width:100%!important;
    overflow:hidden!important;
  }
  @supports (width:-webkit-fill-available){
    #trip-form input[name="startLocal"],
    #trip-form input[name="endLocal"]{
      width:-webkit-fill-available!important;
      inline-size:-webkit-fill-available!important;
    }
  }
  #trip-form input[type="datetime-local"]::-webkit-datetime-edit{
    min-width:0!important;
    max-width:100%!important;
    padding:0!important;
    overflow:hidden!important;
  }
  #trip-form input[type="datetime-local"]::-webkit-date-and-time-value{
    min-width:0!important;
    width:auto!important;
    margin:0!important;
    padding:0!important;
    text-align:left!important;
  }
  #trip-form input[type="datetime-local"]::-webkit-calendar-picker-indicator{
    margin:0 0 0 6px!important;
    padding:0!important;
  }

  /* Open Trip / Trip detail: use the same 14 px app gutter and compact hierarchy
     as Trips, More, Settings and the other phone surfaces. */
  section[data-view="trip-detail"]{
    padding-top:max(15px,env(safe-area-inset-top))!important;
    padding-left:14px!important;
    padding-right:14px!important;
    padding-bottom:calc(var(--mobile-nav) + 16px)!important;
    background:#fbfcfd!important;
  }
  section[data-view="trip-detail"] #trip-detail{
    width:100%!important;
    max-width:none!important;
    margin:0!important;
  }
  section[data-view="trip-detail"] .detail-header{
    gap:8px!important;
    width:100%!important;
    max-width:none!important;
    margin:0 0 11px!important;
  }
  section[data-view="trip-detail"] .back-button{
    justify-self:start!important;
    min-height:30px!important;
    padding:2px 0!important;
    border:0!important;
    background:transparent!important;
    color:var(--blue-700)!important;
    box-shadow:none!important;
    font-size:11px!important;
    font-weight:800!important;
  }
  section[data-view="trip-detail"] .trip-title-row{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:9px!important;
    align-items:start!important;
    width:100%!important;
  }
  section[data-view="trip-detail"] .trip-title-row .eyebrow{display:none!important;}
  section[data-view="trip-detail"] .trip-title-row h1{
    margin:0!important;
    font-size:27px!important;
    line-height:1.02!important;
    letter-spacing:-.045em!important;
  }
  section[data-view="trip-detail"] .trip-title-row p{
    margin:4px 0 0!important;
    font-size:11px!important;
    line-height:1.3!important;
    color:var(--muted)!important;
  }
  section[data-view="trip-detail"] .trip-title-actions{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:7px!important;
    width:100%!important;
  }
  section[data-view="trip-detail"] .trip-title-actions button{
    min-height:38px!important;
    width:100%!important;
    padding:7px 9px!important;
    border-radius:11px!important;
    justify-content:center!important;
    font-size:10.5px!important;
  }
  section[data-view="trip-detail"] .trip-title-actions .button-icon{
    width:14px!important;height:14px!important;
  }

  section[data-view="trip-detail"] .detail-metrics{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:7px!important;
    width:100%!important;
    max-width:none!important;
    margin:0 0 9px!important;
  }
  section[data-view="trip-detail"] .metric-card{
    min-width:0!important;
    min-height:68px!important;
    gap:8px!important;
    padding:9px 10px!important;
    border-radius:14px!important;
    border:1px solid var(--line)!important;
    background:#fff!important;
    box-shadow:0 2px 8px rgba(16,36,58,.035)!important;
  }
  section[data-view="trip-detail"] .metric-icon{
    width:34px!important;height:34px!important;flex:0 0 34px!important;
    border-radius:11px!important;
  }
  section[data-view="trip-detail"] .metric-icon .np-icon{width:18px!important;height:18px!important;}
  section[data-view="trip-detail"] .metric-card small{font-size:9.5px!important;margin:0 0 2px!important;}
  section[data-view="trip-detail"] .metric-card strong{font-size:15px!important;line-height:1.05!important;}

  section[data-view="trip-detail"] .overnight-strip{
    display:grid!important;
    grid-template-columns:auto minmax(0,1fr)!important;
    align-items:center!important;
    gap:8px!important;
    width:100%!important;
    max-width:none!important;
    margin:0 0 9px!important;
    padding:9px 10px!important;
    border-radius:14px!important;
    box-shadow:none!important;
  }
  section[data-view="trip-detail"] .overnight-icon{width:20px!important;height:20px!important;}
  section[data-view="trip-detail"] .overnight-total{gap:7px!important;}
  section[data-view="trip-detail"] .overnight-total strong{font-size:17px!important;}
  section[data-view="trip-detail"] .overnight-total small{font-size:9px!important;}
  section[data-view="trip-detail"] .overnight-breakdown{
    gap:5px!important;
    justify-content:flex-end!important;
  }
  section[data-view="trip-detail"] .overnight-breakdown>span{
    gap:4px!important;
    padding:5px 7px!important;
    font-size:9px!important;
  }
  section[data-view="trip-detail"] .overnight-breakdown .mini-icon{width:12px!important;height:12px!important;}

  section[data-view="trip-detail"] .trip-content-stack{
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    gap:9px!important;
  }
  section[data-view="trip-detail"] .route-country-grid{
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:9px!important;
  }
  section[data-view="trip-detail"] .panel-card{
    min-width:0!important;
    width:100%!important;
    padding:11px!important;
    border-radius:15px!important;
    border:1px solid var(--line)!important;
    background:#fff!important;
    box-shadow:0 3px 12px rgba(16,36,58,.04)!important;
  }
  section[data-view="trip-detail"] .panel-title{margin:0 0 9px!important;gap:8px!important;}
  section[data-view="trip-detail"] .panel-title h2{font-size:17px!important;line-height:1.1!important;}
  section[data-view="trip-detail"] .panel-title small{font-size:9.5px!important;}
  section[data-view="trip-detail"] .section-icon{width:20px!important;height:20px!important;}
  section[data-view="trip-detail"] .title-with-icon{gap:8px!important;}
  section[data-view="trip-detail"] .title-with-icon .eyebrow{font-size:8px!important;}
  section[data-view="trip-detail"] .trip-map{height:220px!important;border-radius:13px!important;}
  section[data-view="trip-detail"] .country-chips{gap:6px!important;}
  section[data-view="trip-detail"] .country-chip{
    gap:6px!important;
    padding:6px 8px!important;
    font-size:10px!important;
  }

  /* Keep the detailed trip cards compact instead of reverting to desktop-sized
     one-column tiles on a phone. */
  section[data-view="trip-detail"] .trip-statistics-grid,
  section[data-view="trip-detail"] .diesel-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:7px!important;
  }
  section[data-view="trip-detail"] .data-tile{
    min-width:0!important;
    padding:9px 10px!important;
    border-radius:12px!important;
  }
  section[data-view="trip-detail"] .data-tile small{font-size:9.5px!important;}
  section[data-view="trip-detail"] .data-tile strong{font-size:15px!important;margin-top:3px!important;}
  section[data-view="trip-detail"] .diesel-row{padding:8px 0!important;gap:8px!important;}
  section[data-view="trip-detail"] .diesel-row-label{font-size:10.5px!important;gap:6px!important;}
  section[data-view="trip-detail"] .diesel-row strong{font-size:11px!important;text-align:right!important;}
  section[data-view="trip-detail"] .diesel-note{font-size:9.5px!important;line-height:1.35!important;}

  section[data-view="trip-detail"] .trip-budget-panel .panel-title{
    display:grid!important;
    grid-template-columns:1fr!important;
  }
  section[data-view="trip-detail"] .trip-budget-panel .panel-actions{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:7px!important;
    width:100%!important;
    justify-content:stretch!important;
  }
  section[data-view="trip-detail"] .trip-budget-panel .panel-actions button{
    min-height:38px!important;
    width:100%!important;
    padding:7px 8px!important;
    border-radius:11px!important;
    font-size:10px!important;
  }
  section[data-view="trip-detail"] .budget-hero-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    margin-top:9px!important;
    border-radius:12px!important;
  }
  section[data-view="trip-detail"] .budget-hero-grid>div{padding:9px!important;}
  section[data-view="trip-detail"] .budget-hero-grid small{font-size:9px!important;margin-bottom:3px!important;}
  section[data-view="trip-detail"] .budget-hero-grid strong{font-size:14px!important;}
  section[data-view="trip-detail"] .budget-meter{height:8px!important;margin:10px 0 1px!important;}

  /* The Travel Journal launch at the bottom of a Trip is an app row, not a
     desktop callout card. */
  section[data-view="trip-detail"] .journal-launch{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) auto!important;
    align-items:center!important;
    gap:9px!important;
    padding:10px 11px!important;
  }
  section[data-view="trip-detail"] .journal-launch .eyebrow{display:none!important;}
  section[data-view="trip-detail"] .journal-launch h2{font-size:16px!important;margin:0!important;}
  section[data-view="trip-detail"] .journal-launch p{font-size:9.5px!important;margin:3px 0 0!important;}
  section[data-view="trip-detail"] .journal-launch .secondary-button{
    min-height:36px!important;
    padding:7px 9px!important;
    border-radius:10px!important;
    font-size:0!important;
    white-space:nowrap!important;
  }
  section[data-view="trip-detail"] .journal-launch .secondary-button::after{
    content:"Open ›";
    font-size:10.5px!important;
    font-weight:800!important;
  }

  /* Travel Journal route: same page-title baseline and card width as the rest
     of the phone app. */
  section[data-view="journal"]{
    padding-top:max(15px,env(safe-area-inset-top))!important;
    padding-left:14px!important;
    padding-right:14px!important;
    padding-bottom:calc(var(--mobile-nav) + 16px)!important;
    background:#fbfcfd!important;
  }
  section[data-view="journal"]>.page-header{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) auto!important;
    align-items:center!important;
    gap:10px!important;
    width:100%!important;
    max-width:none!important;
    margin:0 0 12px!important;
    padding:0!important;
  }
  section[data-view="journal"]>.page-header .eyebrow,
  section[data-view="journal"]>.page-header p{display:none!important;}
  section[data-view="journal"]>.page-header h1{
    margin:0!important;
    font-size:27px!important;
    line-height:1!important;
    letter-spacing:-.045em!important;
  }
  section[data-view="journal"]>.page-header>button{
    min-height:34px!important;
    padding:6px 8px!important;
    border:0!important;
    background:transparent!important;
    color:var(--blue-700)!important;
    box-shadow:none!important;
    font-size:0!important;
  }
  section[data-view="journal"]>.page-header>button::before{
    content:"‹ Trips";
    font-size:10.5px!important;
    font-weight:800!important;
  }
  section[data-view="journal"] .timeline{
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    gap:7px!important;
  }
  section[data-view="journal"] .timeline-card{
    grid-template-columns:8px minmax(0,1fr) auto!important;
    gap:9px!important;
    align-items:start!important;
    min-width:0!important;
    padding:10px 11px!important;
    border:1px solid var(--line)!important;
    border-radius:14px!important;
    background:#fff!important;
    box-shadow:0 2px 8px rgba(16,36,58,.035)!important;
  }
  section[data-view="journal"] .timeline-dot{
    width:7px!important;height:7px!important;margin-top:5px!important;
  }
  section[data-view="journal"] .timeline-card>div{min-width:0!important;}
  section[data-view="journal"] .timeline-card h3{
    margin:0 0 2px!important;
    font-size:13px!important;
    line-height:1.15!important;
  }
  section[data-view="journal"] .timeline-card p,
  section[data-view="journal"] .timeline-card small{
    font-size:9.5px!important;
    line-height:1.3!important;
  }
  section[data-view="journal"] .timeline-card>strong{
    font-size:11px!important;
    white-space:nowrap!important;
    color:var(--navy-900)!important;
  }
}

@media(max-width:359px){
  section[data-view="trip-detail"] .trip-title-actions,
  section[data-view="trip-detail"] .trip-statistics-grid,
  section[data-view="trip-detail"] .diesel-grid,
  section[data-view="trip-detail"] .trip-budget-panel .panel-actions{
    grid-template-columns:1fr!important;
  }
  section[data-view="trip-detail"] .overnight-strip{grid-template-columns:1fr!important;}
  section[data-view="trip-detail"] .overnight-breakdown{justify-content:flex-start!important;}
}
/* NordicPass 3.0 · v5.50 · journal back label
   v5.49 used a hard-coded pseudo label. The real trip-aware button text now wins. */
@media(max-width:759px){
  section[data-view="journal"]>.page-header>button[data-np-journal-back]{
    font-size:10.5px!important;
    font-weight:800!important;
  }
  section[data-view="journal"]>.page-header>button[data-np-journal-back]::before{
    content:none!important;
  }
}
/* NordicPass 3.0 · v5.51 · journal place rows + diesel mobile alignment */
@media(max-width:759px){
  /* Diesel rows stay as label/value pairs on phones. The earlier generic mobile
     rule stacked them, which made Driving and Heating / auxiliary look detached. */
  section[data-view="trip-detail"] .diesel-row{
    display:grid!important;
    grid-template-columns:minmax(108px,.42fr) minmax(0,.58fr)!important;
    align-items:start!important;
    gap:10px!important;
    padding:9px 0!important;
  }
  section[data-view="trip-detail"] .diesel-row-label{
    min-width:0!important;
    align-items:flex-start!important;
    font-size:10.5px!important;
    line-height:1.25!important;
  }
  section[data-view="trip-detail"] .diesel-row strong{
    min-width:0!important;
    padding-left:0!important;
    text-align:right!important;
    font-size:11px!important;
    line-height:1.3!important;
    overflow-wrap:anywhere!important;
  }

  /* A journal stop that owns a NordicPass Place opens that existing Place
     bottom-sheet in context. It is not a route to the Places list. */
  section[data-view="journal"] .timeline-card.is-place-link{
    cursor:pointer!important;
    -webkit-tap-highlight-color:transparent!important;
    touch-action:manipulation!important;
  }
  section[data-view="journal"] .timeline-card.is-place-link:active{
    background:#f3f8fb!important;
  }
  section[data-view="journal"] .timeline-card-side{
    display:flex!important;
    align-items:center!important;
    justify-content:flex-end!important;
    gap:6px!important;
    min-width:0!important;
    color:var(--navy-900)!important;
  }
  section[data-view="journal"] .timeline-card-side>strong{
    font-size:11px!important;
    white-space:nowrap!important;
  }
  section[data-view="journal"] .timeline-place-chevron{
    width:14px!important;
    height:14px!important;
    flex:0 0 14px!important;
    color:#9aa9b5!important;
  }
}


/* NordicPass 3.0 · desktop map v9b · mockup scale + real icon pass · 2026-09-23
   Baseline: desktop-map-v9. Desktop only.
   This deliberately increases the physical dashboard size on wide displays and
   replaces the Current Trip summary glyphs with dedicated mockup-style icons. */
@media(min-width:900px){
  .map-panel{
    top:18px!important;right:18px!important;
    width:clamp(440px,25vw,500px)!important;
    gap:8px!important;padding:10px!important;
    border-radius:21px!important;
  }
  .map-panel .glass-card{
    border-radius:15px!important;
  }

  /* Live card: clearly larger than v9, with mockup-like breathing room. */
  .map-panel .live-summary{
    grid-template-columns:82px minmax(0,1fr) 105px!important;
    gap:14px!important;min-height:96px!important;padding:12px 13px!important;
  }
  .map-panel .live-badge{
    width:82px!important;height:70px!important;border-radius:11px!important;
  }
  .map-panel .kicker-row{
    gap:7px!important;margin-bottom:5px!important;font-size:12px!important;
  }
  .map-panel .status-dot{width:9px!important;height:9px!important;flex-basis:9px!important}
  .map-panel .live-summary .live-copy>strong{
    font-size:17px!important;line-height:1.08!important;
  }
  .map-panel .live-summary .live-copy>small{
    margin-top:4px!important;font-size:11.5px!important;line-height:1.18!important;
  }
  .map-panel .live-right{gap:8px!important}
  .map-panel .live-battery{gap:7px!important}
  .map-panel .live-battery strong{font-size:16px!important}
  .map-panel .live-battery-shell{width:33px!important;height:15px!important}
  .map-panel .live-update small,.map-panel .live-update span{font-size:10px!important;line-height:1.08!important}

  /* Current Trip: reproduce the mockup structure instead of merely scaling v9. */
  .map-panel .current-trip-mini{
    padding:12px 13px 13px!important;
  }
  .current-trip-label{
    gap:8px!important;margin:0 0 10px!important;
  }
  .current-trip-label-icon{
    width:20px!important;height:20px!important;flex:0 0 20px!important;
    background:#2f914e!important;color:#fff!important;
  }
  .current-trip-label-icon .np-icon{width:11px!important;height:11px!important}
  .current-trip-label strong{font-size:15px!important;line-height:1!important}

  .current-trip-main{
    grid-template-columns:88px minmax(0,1fr)!important;
    gap:13px!important;align-items:start!important;
  }
  .current-trip-thumb{
    width:88px!important;height:84px!important;min-width:88px!important;
    border-radius:11px!important;
  }
  .current-trip-content{
    gap:9px!important;align-content:start!important;
  }
  .current-trip-topline{
    grid-template-columns:minmax(0,1fr) 20px!important;
    gap:9px!important;align-items:start!important;
  }
  .current-trip-copy{gap:4px!important}
  .current-trip-copy strong{
    font-size:15px!important;line-height:1.12!important;font-weight:780!important;
  }
  .current-trip-copy small{
    font-size:11px!important;line-height:1.18!important;
    padding-bottom:8px!important;
    border-bottom:1px solid rgba(198,208,214,.95)!important;
  }
  .current-trip-topline>b{
    font-size:23px!important;line-height:1!important;padding-top:2px!important;
  }
  .current-trip-stats{
    display:flex!important;align-items:center!important;gap:18px!important;
    margin:0!important;padding:1px 0 0!important;border:0!important;
    flex-wrap:nowrap!important;
  }
  .current-trip-stats>span{
    display:flex!important;align-items:center!important;gap:6px!important;
    min-width:0!important;padding:0!important;border-left:0!important;
  }
  .current-trip-stats>span:first-child,
  .current-trip-stats>span:last-child{padding:0!important;border-left:0!important}
  .current-trip-stats .np-icon{
    width:18px!important;height:18px!important;flex:0 0 18px!important;
    color:#102238!important;stroke-width:2!important;
  }
  .current-trip-stats strong{
    font-size:12px!important;line-height:1.2!important;font-weight:780!important;
  }

  /* Recent Activity: increase row rhythm and icon/text size to the mockup scale. */
  .map-panel .activity-card{padding:12px 13px 10px!important}
  .map-panel .section-line{margin:0 0 3px!important}
  .map-panel .section-line strong{font-size:16px!important;line-height:1.12!important}
  .activity-see-all{font-size:11px!important;padding:3px 0!important}
  .map-panel .activity-item{
    grid-template-columns:22px minmax(0,1fr) auto!important;
    gap:10px!important;min-height:46px!important;padding:6px 0!important;
  }
  .activity-icon{width:22px!important;height:22px!important}
  .activity-icon .np-icon{width:17px!important;height:17px!important}
  .activity-parked-dot{width:12px!important;height:12px!important}
  .activity-copy strong{font-size:13.5px!important;line-height:1.1!important;font-weight:740!important}
  .activity-time{font-size:10.5px!important;line-height:1.08!important}
}

@media(min-width:900px) and (max-width:1240px){
  .map-panel{width:420px!important;max-width:calc(100vw - var(--sidebar) - 30px)!important}
}


/* NordicPass · inline detailed budget on Trip detail only. */
.trip-budget-drilldown[hidden]{display:none!important}
.trip-budget-drilldown{display:grid;gap:20px;margin-top:20px;padding-top:20px;border-top:1px solid var(--line)}
.trip-budget-detail-block{min-width:0}
.trip-budget-detail-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:8px}
.trip-budget-detail-heading h3{margin:0;font-size:18px;letter-spacing:-.02em}
.trip-budget-detail-heading small{color:var(--muted);text-align:right}
.trip-budget-drilldown .budget-category-columns{margin-top:0}

/* Travel Journal uses the same › glyph as Past Trips. */
section[data-view="journal"] .timeline-place-chevron{
  display:inline-block;
  width:auto;
  height:auto;
  flex:0 0 auto;
  font-size:18px;
  line-height:1;
  font-weight:400;
  color:#9eacb6;
}

@media(max-width:759px){
  section[data-view="trip-detail"] .trip-budget-drilldown{
    gap:14px!important;
    margin-top:12px!important;
    padding-top:12px!important;
  }
  section[data-view="trip-detail"] .trip-budget-detail-heading{
    display:block!important;
    margin-bottom:5px!important;
  }
  section[data-view="trip-detail"] .trip-budget-detail-heading h3{
    font-size:13px!important;
    line-height:1.2!important;
  }
  section[data-view="trip-detail"] .trip-budget-detail-heading small{
    display:block!important;
    margin-top:2px!important;
    font-size:9px!important;
    line-height:1.3!important;
    text-align:left!important;
  }
  section[data-view="journal"] .timeline-place-chevron{
    width:auto!important;
    height:auto!important;
    flex:0 0 auto!important;
    font-size:23px!important;
    line-height:1!important;
    font-weight:400!important;
    color:#9eacb6!important;
  }
}

/* Travel Journal: keep the place chevron vertically centered in each row. */
section[data-view="journal"] .timeline-card-side{
  align-self:center!important;
}

/* Travel Journal polish: center the dot; make the desktop chevron easier to see. */
section[data-view="journal"] .timeline-dot{
  align-self:center!important;
  margin-top:0!important;
}

@media(min-width:760px){
  section[data-view="journal"] .timeline-place-chevron{
    font-size:28px!important;
    line-height:1!important;
    font-weight:500!important;
    color:#748896!important;
  }
}

/* NordicPass 3.0 · Travel Journal → Save as Place
   Unsaved stop rows are deliberate actions too: open Add Place prefilled from
   the recorded stop. Existing linked stops continue to open Place detail. */
section[data-view="journal"] .timeline-card.is-place-link{
  cursor:pointer;
  -webkit-tap-highlight-color:transparent;
}
section[data-view="journal"] .timeline-card.is-place-link:hover{
  border-color:#c9d9e2;
}


/* Travel Journal date detail: desktop has room for full month names; mobile keeps the compact form. */
section[data-view="journal"] .journal-date-desktop{display:inline}
section[data-view="journal"] .journal-date-mobile{display:none}
@media(max-width:759px){
  section[data-view="journal"] .journal-date-desktop{display:none!important}
  section[data-view="journal"] .journal-date-mobile{display:inline!important}
}

/* NordicPass 3.0 · FIX16 · Place visit -> Travel Journal */
.visit-card.is-journal-link{
  cursor:pointer;
  transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease;
}
.visit-card.is-journal-link:hover{
  border-color:#bfd4df;
  box-shadow:0 8px 22px rgba(16,34,56,.08);
  transform:translateY(-1px);
}
.visit-card.is-journal-link:focus-visible{
  outline:3px solid rgba(63,167,214,.28);
  outline-offset:2px;
}
.visit-journal-chevron{
  color:#8399a8;
  font-size:26px;
  line-height:1;
  font-weight:700;
  align-self:center;
}
section[data-view="journal"] .timeline-card.is-journal-target{
  border-color:#70b9dc;
  box-shadow:0 0 0 3px rgba(63,167,214,.16),0 12px 30px rgba(16,34,56,.08);
}


/* NordicPass 3.0 · FIX17 · richer Travel Journal + confirmed ferry geometry
   Keep the existing card layout, but replace the generic blue dot with a
   compact event/category badge and show cached country flags beside names. */
section[data-view="journal"] .timeline-card{
  grid-template-columns:42px minmax(0,1fr) auto!important;
  align-items:center!important;
  gap:14px!important;
}
section[data-view="journal"] .timeline-marker{
  width:38px;height:38px;border-radius:13px;
  display:grid;place-items:center;align-self:center;
  background:#e9f5fb;color:#268fbd;
  box-shadow:inset 0 0 0 1px rgba(38,143,189,.08);
}
section[data-view="journal"] .timeline-marker-icon{width:20px;height:20px;display:block}
section[data-view="journal"] .timeline-marker-drive{background:#e8f5fb;color:#278fbd}
section[data-view="journal"] .timeline-marker-ferry{background:#e6f5f6;color:#177f91}
section[data-view="journal"] .timeline-marker-crossing{background:#fff1f0;color:#c85b5b}
section[data-view="journal"] .timeline-marker-overnight{background:#ececf7;color:#25264f}
section[data-view="journal"] .timeline-marker-campsite{background:#eaf6ed;color:#358b4a}
section[data-view="journal"] .timeline-marker-stellplatz{background:#edf2f8;color:#456b8f}
section[data-view="journal"] .timeline-marker-parking{background:#eef3f6;color:#607d8b}
section[data-view="journal"] .timeline-marker-place{background:#e9f7f3;color:#258d7f}
section[data-view="journal"] .timeline-marker-stop{background:#eef6fa;color:#3fa7d6}
section[data-view="journal"] .journal-title-line{display:inline-flex;align-items:center;gap:7px;min-width:0}
section[data-view="journal"] .journal-title-line>span:last-child{min-width:0}
section[data-view="journal"] .journal-title-flag{display:inline-flex;align-items:center;flex:0 0 auto}
section[data-view="journal"] .journal-title-flag .country-flag-image{width:18px!important;height:18px!important;min-width:18px!important;max-width:18px!important;min-height:18px!important;max-height:18px!important}

@media(max-width:759px){
  section[data-view="journal"] .timeline-card{
    grid-template-columns:34px minmax(0,1fr) auto!important;
    gap:9px!important;
    align-items:center!important;
  }
  section[data-view="journal"] .timeline-marker{
    width:30px!important;height:30px!important;border-radius:10px!important;
  }
  section[data-view="journal"] .timeline-marker-icon{width:16px!important;height:16px!important}
  section[data-view="journal"] .journal-title-line{gap:5px!important}
  section[data-view="journal"] .journal-title-flag .country-flag-image{width:14px!important;height:14px!important;min-width:14px!important;max-width:14px!important;min-height:14px!important;max-height:14px!important}
}

/* NordicPass 3.0 · FIX19 · desktop Trip mockup parity
   Desktop adopts the Route + Travel Journal composition from the approved
   mockup. Mobile and tablet keep the existing NordicPass layout. */
.trip-map-div-icon{background:transparent!important;border:0!important}
.trip-map-marker{position:relative;width:34px;height:34px;border:3px solid #fff;border-radius:50%;display:grid;place-items:center;box-shadow:0 5px 14px rgba(8,22,37,.28);color:#fff}
.trip-map-marker-icon{width:18px;height:18px;display:block}
.trip-map-marker-saved{background:#2f914e}
.trip-map-marker-overnight{background:#20264f}
.trip-map-marker-ferry{background:#176da8}
.trip-map-marker-badge{position:absolute;right:-6px;bottom:-4px;width:18px;height:18px;border:2px solid #fff;border-radius:50%;background:#20264f;display:grid;place-items:center;color:#fff;box-shadow:0 3px 8px rgba(8,22,37,.24)}
.trip-map-marker-badge-icon{width:10px;height:10px}
.trip-map-popup{display:grid;gap:3px;min-width:170px;color:var(--ink)}
.trip-map-popup strong{font-size:13px;color:var(--navy-950)}
.trip-map-popup span{font-size:11px;color:#526678}
.trip-map-popup small{font-size:10px;color:var(--muted)}
.trip-map-layers{min-width:185px;padding:11px 12px;border:1px solid rgba(201,217,226,.95);border-radius:14px;background:rgba(255,255,255,.96);box-shadow:0 8px 24px rgba(16,34,56,.14);backdrop-filter:blur(12px);display:grid;gap:7px;color:var(--navy-950)}
.trip-map-layers>strong{font-size:12px;margin-bottom:1px}
.trip-map-layers label{display:flex;align-items:center;gap:8px;font-size:11px;cursor:pointer;white-space:nowrap}
.trip-map-layers label>span{display:flex;align-items:center;gap:6px}
.trip-map-layers input{width:16px;height:16px;margin:0;accent-color:#249fd2}
.trip-map-layer-icon{width:15px;height:15px;color:var(--navy-900)}
.trip-map-hint{display:flex;align-items:center;gap:7px;margin:10px 2px 0;color:var(--muted);font-size:11px}
.trip-map-hint .tiny-icon{width:15px;height:15px;color:var(--blue-700)}

.journal-mock-row{position:relative;display:grid;grid-template-columns:66px 24px minmax(0,1fr) 18px;align-items:center;gap:10px;min-width:0;padding:11px 14px;background:#fff;border-bottom:1px solid var(--line)}
.journal-mock-row:last-child{border-bottom:0}
.journal-mock-row.is-interactive{cursor:pointer;transition:background .14s ease}
.journal-mock-row.is-interactive:hover{background:#f8fbfc}
.journal-mock-row.is-interactive:focus-visible{outline:3px solid rgba(63,167,214,.24);outline-offset:-3px;z-index:1}
.journal-mock-thumb{position:relative;width:66px;height:58px;border-radius:12px;overflow:hidden;display:grid;place-items:center;background:#eaf4f8;color:var(--navy-900);box-shadow:inset 0 0 0 1px rgba(16,34,56,.04)}
.journal-mock-thumb-fallback{position:absolute;inset:0;display:grid;place-items:center}
.journal-mock-thumb-icon{width:23px;height:23px}
.journal-mock-thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1}
.journal-mock-thumb-ferry{background:#e6f3f8;color:#176da8}
.journal-mock-thumb-crossing{background:#fff0f0;color:#c35757}
.journal-mock-thumb-overnight{background:#ececf6;color:#20264f}
.journal-mock-thumb-campsite{background:#eaf5eb;color:#2f914e}
.journal-mock-thumb-stellplatz{background:#eaf1f7;color:#416c91}
.journal-mock-thumb-parking{background:#eef3f6;color:#5e7c8c}
.journal-mock-thumb-place{background:#eaf7f3;color:#248b7d}
.journal-mock-index{align-self:start;padding-top:4px;font-size:13px;font-weight:850;color:var(--navy-950);text-align:center}
.journal-mock-copy{min-width:0;display:grid;gap:3px}
.journal-mock-copy h3{display:flex;align-items:center;gap:6px;min-width:0;margin:0;font-size:13px;line-height:1.15;color:var(--navy-950)}
.journal-mock-copy h3>span:last-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.journal-mock-copy h3 .journal-title-flag{display:inline-flex;flex:0 0 auto}
.journal-mock-copy h3 .country-flag-image{width:17px!important;height:17px!important;min-width:17px!important;max-width:17px!important;min-height:17px!important;max-height:17px!important}
.journal-mock-copy>small{font-size:10.5px;line-height:1.2;color:var(--muted)}
.journal-mock-meta{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:1px}
.journal-mock-meta-item{display:inline-flex;align-items:center;gap:5px;color:#607284;font-size:10.5px;line-height:1.15}

.journal-photo-credit{font-size:10px;color:#607284;text-decoration:underline;text-underline-offset:2px}
.journal-photo-credit:hover{color:#10243a}
.journal-mock-meta-icon{width:15px;height:15px;color:#2b78ad}
.journal-mock-meta-overnight .journal-mock-meta-icon{color:#20264f}
.journal-mock-meta-campsite .journal-mock-meta-icon{color:#2f914e}
.journal-mock-meta-stellplatz .journal-mock-meta-icon{color:#416c91}
.journal-mock-meta-crossing .journal-mock-meta-icon{color:#c35757}
.journal-mock-meta-ferry .journal-mock-meta-icon{color:#176da8}
.journal-mock-chevron{font-size:28px;line-height:1;font-weight:500;color:#748896;align-self:center}

@media(min-width:1100px){
  section[data-view="trip-detail"] .trip-desktop-route-journal{display:grid;grid-template-columns:minmax(0,1.72fr) minmax(330px,.58fr);gap:18px;align-items:stretch}
  section[data-view="trip-detail"] .trip-route-showcase{display:flex;flex-direction:column;min-height:610px}
  section[data-view="trip-detail"] .trip-route-showcase .trip-map{height:530px;flex:1 1 auto}
  section[data-view="trip-detail"] .trip-journal-panel{height:610px;padding:0;overflow:hidden;display:flex;flex-direction:column}
  section[data-view="trip-detail"] .trip-journal-panel-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:19px 18px 14px;border-bottom:1px solid var(--line)}
  section[data-view="trip-detail"] .trip-journal-panel-head>div{display:grid;gap:3px}
  section[data-view="trip-detail"] .trip-journal-panel-head h2{margin:0;font-size:22px;letter-spacing:-.025em}
  section[data-view="trip-detail"] .trip-journal-panel-head small{color:var(--muted);font-size:11px}
  section[data-view="trip-detail"] .trip-journal-all{border:0;background:transparent;color:var(--blue-700);font-size:11px;font-weight:800;padding:4px 0}
  section[data-view="trip-detail"] .trip-journal-list{min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin}
  section[data-view="trip-detail"] .trip-journal-empty{padding:26px 18px;color:var(--muted);font-size:12px}
  section[data-view="trip-detail"] .trip-country-strip{padding:17px 20px}
  section[data-view="trip-detail"] .trip-country-strip .panel-title{margin-bottom:10px}
  section[data-view="trip-detail"] .trip-country-strip .country-chip{padding:7px 10px}
}

/* Full Travel Journal on desktop uses the same visual language as the
   "Travel Journal" column in Trip detail: one clean list, numbered rows,
   country flags, category colour and saved-place imagery when available. */
@media(min-width:1100px){
  section[data-view="journal"] #journal-list.journal-mock-list{max-width:1420px;margin:0 auto;display:block;overflow:hidden;background:#fff;border:1px solid var(--line);border-radius:22px;box-shadow:var(--soft-shadow)}
  section[data-view="journal"] #journal-list.journal-mock-list .journal-mock-row{grid-template-columns:82px 32px minmax(0,1fr) 24px;gap:14px;padding:13px 18px}
  section[data-view="journal"] #journal-list.journal-mock-list .journal-mock-thumb{width:82px;height:68px;border-radius:14px}
  section[data-view="journal"] #journal-list.journal-mock-list .journal-mock-thumb-icon{width:27px;height:27px}
  section[data-view="journal"] #journal-list.journal-mock-list .journal-mock-index{font-size:15px;padding-top:5px}
  section[data-view="journal"] #journal-list.journal-mock-list .journal-mock-copy h3{font-size:16px;gap:7px}
  section[data-view="journal"] #journal-list.journal-mock-list .journal-mock-copy>small{font-size:12px}
  section[data-view="journal"] #journal-list.journal-mock-list .journal-mock-meta-item{font-size:12px}
  section[data-view="journal"] #journal-list.journal-mock-list .journal-mock-meta-icon{width:17px;height:17px}
  section[data-view="journal"] #journal-list.journal-mock-list .journal-mock-copy h3 .country-flag-image{width:19px!important;height:19px!important;min-width:19px!important;max-width:19px!important;min-height:19px!important;max-height:19px!important}
  section[data-view="journal"] #journal-list.journal-mock-list .journal-mock-chevron{font-size:31px}
  section[data-view="journal"] #journal-list.journal-mock-list .journal-mock-row.is-journal-target{background:#f0f8fb;box-shadow:inset 0 0 0 2px rgba(63,167,214,.38)}
}
.trip-map-marker-campsite{background:#2f914e}
.trip-map-marker-stellplatz{background:#416c91}
.trip-map-marker-parking{background:#637f8e}
.trip-map-marker-place{background:#248b7d}


/* NordicPass · FIX21 · safe UI polish
   Keep the route card as the height source. The journal is matched to it by JS
   and scrolls internally; it must never make the map grow with the event list. */
.place-note-field{position:relative;z-index:5;display:grid;gap:6px;font-weight:750;font-size:13px;pointer-events:auto}
.place-note-field textarea{position:relative;z-index:6;width:100%;min-height:92px;border:1px solid var(--line);border-radius:13px;padding:11px 12px;background:#fff;color:var(--ink);outline:none;resize:vertical;pointer-events:auto!important;user-select:text;-webkit-user-select:text;touch-action:auto}
.place-note-field textarea:focus{border-color:var(--blue-500);box-shadow:0 0 0 3px rgba(102,179,212,.13)}

/* The custom mockup/map SVG classes use symbols from icons.svg. Give them the
   same stroke rules as normal NordicPass icons so they render as icons, not blobs. */
.journal-mock-thumb-icon,.journal-mock-meta-icon,.trip-map-marker-icon,.trip-map-marker-badge-icon,.trip-map-layer-icon{display:block;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.journal-mock-thumb-icon{width:28px;height:28px}
.journal-mock-thumb-stop,.journal-mock-thumb-activity{background:#e7f5fb;color:#248ebd}
.journal-mock-thumb-transport{background:#e9f2f8;color:#296e9b}
.journal-mock-thumb-ferry{background:#e4f2fb;color:#116ea9}
.journal-mock-thumb-crossing{background:#fff0f0;color:#c34d58}
.journal-mock-thumb-overnight{background:#eeeeF8;color:#20264f}
.journal-mock-thumb-campsite{background:#e8f6ec;color:#27864a}
.journal-mock-thumb-stellplatz{background:#e7f0f8;color:#356f9c}
.journal-mock-thumb-parking{background:#edf3f7;color:#477388}
.journal-mock-thumb-place{background:#e6f6f2;color:#16877a}

@media(min-width:1100px){
  section[data-view="trip-detail"] .trip-journal-panel{min-height:0;overflow:hidden;display:flex;flex-direction:column}
  section[data-view="trip-detail"] .trip-journal-list{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin}
  section[data-view="trip-detail"] .journal-mock-thumb-icon{width:27px;height:27px}
}
@media(max-width:759px){
  .place-note-field{gap:5px;font-size:12px!important}
  .place-note-field textarea{min-height:92px!important;border-radius:12px!important;padding:10px 11px!important;font-size:16px!important}
}


/* NordicPass · FIX22 · trip-stop visual polish */
.trip-map-marker-badge{font-size:11px;font-weight:900;line-height:1;font-variant-numeric:tabular-nums}
.journal-mock-thumb-icon,.journal-mock-meta-icon,.trip-map-marker-icon,.trip-map-marker-badge-icon,.trip-map-layer-icon{
  fill:none!important;stroke:currentColor!important;stroke-linecap:round!important;stroke-linejoin:round!important
}
.journal-mock-thumb{border:1px solid rgba(20,60,85,.06)}
.journal-mock-thumb img{transition:opacity .16s ease}
.journal-mock-thumb-stop,.journal-mock-thumb-activity{background:#e7f5fb;color:#218ebd}
.journal-mock-thumb-transport{background:#e8f2f8;color:#2a709b}
.journal-mock-thumb-ferry{background:#e3f2fb;color:#0e73ad}
.journal-mock-thumb-crossing{background:#fff0f1;color:#c44f58}
.journal-mock-thumb-overnight{background:#ececf7;color:#242852}
.journal-mock-thumb-campsite{background:#e7f6ec;color:#25894a}
.journal-mock-thumb-stellplatz{background:#e7f0f8;color:#356f9c}
.journal-mock-thumb-parking{background:#eef4f7;color:#47778c}
.journal-mock-thumb-place{background:#e5f7f2;color:#17887a}
@media(min-width:1100px){
  section[data-view="trip-detail"] .journal-mock-row{min-height:76px}
  section[data-view="trip-detail"] .journal-mock-thumb{width:68px;height:60px}
  section[data-view="trip-detail"] .journal-mock-thumb-icon{width:29px;height:29px}
  section[data-view="trip-detail"] .journal-mock-copy h3{font-size:13.5px}
}

/* NordicPass · FIX24 · active Map uses the same trip-highlight layers as Trip detail. */
@media(min-width:1100px){
  /* Keep the active-map layer chooser clear of the right-hand dashboard.
     It sits below the search field and to the right of the zoom controls. */
  .map-view .main-map-layer-control{
    margin-top:80px!important;
    margin-left:72px!important;
    margin-right:0!important;
  }
}
@media(max-width:1099px){
  .map-view .main-map-layer-control{display:none!important}
}

/* FIX25: make saved-place context explicit in the live vehicle popup. */
.stop-popup-place-meta{margin-top:-4px;color:var(--muted);font-size:10px;font-weight:750}


/* NordicPass · FIX27 · active-map graphic cleanup */
.leaflet-popup.np-map-highlight-popup .leaflet-popup-content-wrapper{overflow:hidden;border:1px solid rgba(198,214,223,.9);background:#fff}
.leaflet-popup.np-map-highlight-popup .leaflet-popup-content{width:auto!important;min-width:220px;max-width:310px!important}
.leaflet-popup.np-map-highlight-popup .trip-map-popup{padding:12px 14px 11px;gap:4px;min-width:200px}
.leaflet-popup.np-map-highlight-popup .trip-map-popup strong{font-size:14px;line-height:1.15}
.leaflet-popup.np-map-highlight-popup .trip-map-popup span{font-size:11px;line-height:1.25}
.leaflet-popup.np-map-highlight-popup .trip-map-popup small{font-size:10.5px;line-height:1.25}
/* If the van is parked on a saved Place, keep both symbols visible rather than
   deleting the Place pin. Only the drawn pin is nudged; its map coordinate stays exact. */
.trip-map-div-icon.np-place-near-live .trip-map-marker{transform:translateX(28px)}

/* FIX31 — Saved Place names are explicit navigation targets */
.stop-popup-place-title,
.trip-map-place-link,
.journal-place-name-link{
  appearance:none;
  border:0;
  background:transparent;
  color:inherit;
  font:inherit;
  font-weight:850;
  padding:0;
  margin:0;
  text-align:left;
  cursor:pointer;
}
.stop-popup-place-title{font-size:13px;letter-spacing:.01em;color:var(--navy-950)}
.trip-map-place-link{font-size:13px;color:var(--navy-950);line-height:1.15}
.journal-place-name-link{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--navy-950)}
.stop-popup-place-title:hover,
.trip-map-place-link:hover,
.journal-place-name-link:hover{color:var(--blue-700);text-decoration:underline;text-underline-offset:2px}
.stop-popup-place-title:focus-visible,
.trip-map-place-link:focus-visible,
.journal-place-name-link:focus-visible{outline:2px solid var(--blue-500,#2ba7d8);outline-offset:3px;border-radius:4px}

/* NordicPass 3.0 · Movement alarm */
.status-dot.is-danger{background:var(--danger);box-shadow:0 0 0 3px rgba(185,79,85,.13)}
.alarm-layout{max-width:1420px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr);gap:16px;align-items:start}
.alarm-main-column,.alarm-side-column{display:grid;gap:16px;min-width:0;align-content:start}
.alarm-status-card,.alarm-push-card,.alarm-history-card,.alarm-engine-card{border-radius:24px}
.alarm-status-card{overflow:hidden;position:relative}
.alarm-status-card::before{content:"";position:absolute;inset:0 auto 0 0;width:5px;background:#aebbc4}
.alarm-status-card.is-armed::before{background:#3ba778}
.alarm-status-card.is-triggered::before{background:var(--danger)}
.alarm-status-head{display:flex;align-items:flex-start;gap:14px;padding-bottom:18px;border-bottom:1px solid var(--line)}
.alarm-status-icon{width:52px;height:52px;border-radius:16px;background:#eef4f7;display:grid;place-items:center;color:var(--navy-900);flex:0 0 auto}
.alarm-status-card.is-armed .alarm-status-icon{background:#e9f5ef;color:#2d7f5c}
.alarm-status-card.is-triggered .alarm-status-icon{background:#faecee;color:var(--danger)}
.alarm-status-head h2{margin:3px 0 5px;font-size:28px;letter-spacing:-.035em}
.alarm-status-card.is-triggered .alarm-status-head h2{color:var(--danger)}
.alarm-status-head p{margin:0;color:var(--muted);font-size:13px}
.alarm-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:18px 0}
.alarm-metrics>div{border:1px solid var(--line);background:#fbfcfd;border-radius:15px;padding:12px;display:grid;gap:4px}
.alarm-metrics small{color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.06em;font-weight:800}
.alarm-metrics strong{font-size:17px}
.alarm-actions{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}
.alarm-threshold{display:grid!important;gap:6px!important;font-size:11px!important;font-weight:800!important;color:var(--muted)}
.alarm-threshold select{min-width:112px;border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:#fff;color:var(--navy-950);font-weight:800}
.alarm-arm-button{min-width:150px}
.alarm-rule-note{margin-top:16px;padding:11px 13px;border-radius:13px;background:#f4f7f9;color:#617280;font-size:11px;line-height:1.4}
.alarm-card-copy{color:var(--muted);font-size:12px;line-height:1.45;margin:0 0 14px}
.alarm-push-card .panel-title{align-items:center}
.alarm-push-card .connection-state{display:flex;align-items:center;gap:7px;font-size:12px}
.alarm-push-card .stats-list{margin-bottom:15px}
.alarm-push-actions{display:flex;gap:9px;flex-wrap:wrap}
.alarm-history-card{min-height:0;display:flex;flex-direction:column}
.alarm-history{display:grid;max-height:220px;overflow-y:auto;overscroll-behavior:contain;padding-right:5px;scrollbar-gutter:stable;min-height:0}
.alarm-event{display:grid;grid-template-columns:10px 1fr;gap:10px;align-items:center;padding:10px 0;border-top:1px solid var(--line)}
.alarm-event:first-child{border-top:0}
.alarm-event strong{display:block;font-size:12.5px}
.alarm-event small{display:block;color:var(--muted);font-size:10.5px;margin-top:2px}
.alarm-engine-card p{margin:0;color:var(--muted);font-size:12px;line-height:1.5}

@media (max-width:759px){
  .alarm-page-header{align-items:flex-start!important}
  .alarm-page-header #alarm-check-now{min-height:36px;padding:0 11px;font-size:11px}
  .alarm-layout{display:grid;grid-template-columns:1fr;gap:10px}
  .alarm-main-column,.alarm-side-column{display:grid;gap:10px}
  .alarm-status-card{padding:16px!important;border-radius:19px!important}
  .alarm-push-card,.alarm-history-card,.alarm-engine-card{padding:16px!important;border-radius:19px!important}
  .alarm-history{max-height:190px}
  .alarm-status-icon{width:44px;height:44px;border-radius:14px}
  .alarm-status-head{gap:11px;padding-bottom:14px}
  .alarm-status-head h2{font-size:22px}
  .alarm-status-head p{font-size:11.5px;line-height:1.35}
  .alarm-metrics{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;padding:14px 0}
  .alarm-metrics>div{padding:9px 8px;border-radius:12px}
  .alarm-metrics small{font-size:8.5px}
  .alarm-metrics strong{font-size:13px;white-space:nowrap}
  .alarm-actions{display:grid;grid-template-columns:1fr 1fr;align-items:end}
  .alarm-actions .alarm-threshold{grid-column:1/2}
  .alarm-actions .primary-button,.alarm-actions .secondary-button,.alarm-actions .danger-button{min-width:0;width:100%}
  .alarm-push-actions{display:grid;grid-template-columns:1fr 1fr}
  .alarm-push-actions .primary-button,.alarm-push-actions .secondary-button{min-width:0;width:100%}
  .alarm-rule-note{font-size:10px;margin-top:13px}
}

/* NordicPass 3.0 V9.4 · stop-based expenses */
.journal-mock-row{grid-template-columns:66px 24px minmax(0,1fr) auto}
.journal-mock-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;min-width:0}
.journal-expense-action,.timeline-expense-action{border:1px solid var(--line);background:#f7fafb;color:var(--navy-800);border-radius:10px;min-height:32px;padding:5px 9px;display:inline-flex;align-items:center;justify-content:center;gap:6px;font:inherit;font-size:12px;font-weight:800;cursor:pointer;white-space:nowrap}
.journal-expense-action:hover,.timeline-expense-action:hover{background:var(--blue-100);border-color:#b7d8e8;color:var(--blue-700)}
.journal-expense-icon,.timeline-expense-icon{width:15px;height:15px}
.timeline-card-side{gap:7px}
.timeline-expense-action{justify-self:end}
@media(max-width:700px){.journal-expense-action span,.timeline-expense-action span{display:none}.journal-expense-action,.timeline-expense-action{width:34px;padding:5px}.timeline-card-side{min-width:42px}}
@media(min-width:1100px){section[data-view="journal"] #journal-list.journal-mock-list .journal-mock-row{grid-template-columns:82px 32px minmax(0,1fr) auto}}

/* NordicPass 3.0 · 2026-10-07 · Sharing repair
   Share administration is readable/clickable and public trip shares reuse the
   same visual hierarchy as owner Trip detail while remaining read-only. */
#sharing-view .share-row{
  align-items:start;
  cursor:pointer;
}
#sharing-view .share-row:focus-visible{
  outline:3px solid rgba(63,167,214,.24);
  outline-offset:2px;
}
#sharing-view .share-row-main{display:grid;gap:8px;min-width:0}
#sharing-view .share-row-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
#sharing-view .share-row-title strong{font-size:15px}
#sharing-view .share-status{display:inline-flex;align-items:center;min-height:23px;padding:3px 8px;border-radius:999px;background:#eef4f7;color:#5d7180;font-size:10px;font-weight:850;text-transform:uppercase;letter-spacing:.06em}
#sharing-view .share-status.is-active{background:#e9f5ef;color:#287b57}
#sharing-view .share-status.is-revoked{background:#fff0f1;color:var(--danger)}
#sharing-view .share-status.is-expired{background:#f5f1ea;color:#8b6b3e}
#sharing-view .share-permissions{display:flex;gap:6px;flex-wrap:wrap}
#sharing-view .share-permissions span{display:inline-flex;align-items:center;min-height:26px;padding:4px 8px;border-radius:999px;background:var(--blue-100);color:var(--navy-900);font-size:11px;font-weight:750}
#sharing-view .share-row-main>small{display:block;color:var(--muted);font-size:11px;line-height:1.4}
#sharing-view .share-row-actions{display:flex;align-items:center;justify-content:flex-end;gap:9px;min-width:max-content}
#sharing-view .share-row-link-label{display:inline-flex;align-items:center;gap:5px;color:var(--blue-700);font-size:12px;font-weight:800;white-space:nowrap}
#sharing-view .share-row-link-label b{font-size:20px;line-height:1;color:#92a8b5;transition:transform .15s ease}
#sharing-view .share-row[aria-expanded="true"] .share-row-link-label b{transform:rotate(90deg)}
#sharing-view .share-row-detail{grid-column:1/-1;border-top:1px solid var(--line);padding-top:12px;cursor:default}
#sharing-view .share-row-detail[hidden]{display:none!important}
#sharing-view .share-link-detail-copy{display:grid;gap:7px;min-width:0}
#sharing-view .share-link-detail-copy>small{color:var(--muted);font-size:11px}
#sharing-view .share-link-field{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}
#sharing-view .share-link-field .share-url{margin:0;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
#sharing-view .share-link-field .secondary-button{min-height:40px;padding:0 13px;white-space:nowrap}
#sharing-view .share-link-loading{color:var(--muted);font-size:12px;padding:4px 0}
#sharing-view .share-link-legacy{display:grid;gap:6px;padding:11px;border-radius:12px;background:#f7f9fa}
#sharing-view .share-link-legacy strong{font-size:12px}
#sharing-view .share-link-legacy small{color:var(--muted);font-size:11px;line-height:1.45}
#sharing-view .share-link-legacy .secondary-button{justify-self:start;min-height:38px}
#sharing-view #share-created .share-link-detail-copy{margin-top:9px}
#sharing-view #share-created .share-link-field{margin-top:2px}

/* Public share shell: owner Trip detail appearance, no edit/create affordances. */
.public-share-app .public-share-avatar{border-radius:50%}
.public-share-app .public-share-view{background:#fbfcfd}
.public-share-app #share-content{width:100%}
.public-share-app .public-share-detail-header{position:relative}
.public-share-app .public-share-status{display:inline-flex;align-items:center;gap:7px;color:var(--muted);font-size:11px;font-weight:700}
.public-share-app .public-share-status .tiny-icon{width:14px;height:14px;color:var(--blue-700)}
.public-share-app .public-share-readonly-pill{display:inline-flex;align-items:center;min-height:34px;padding:0 12px;border-radius:999px;background:#eef4f7;color:#536b79;font-size:11px;font-weight:850;text-transform:uppercase;letter-spacing:.06em}
.public-share-app .trip-desktop-route-journal{display:grid;grid-template-columns:minmax(0,1.72fr) minmax(330px,.58fr);gap:18px;align-items:stretch}
.public-share-app .trip-route-showcase{display:flex;flex-direction:column;min-height:610px}
.public-share-app .trip-route-showcase .trip-map{height:530px;flex:1 1 auto}
.public-share-app .trip-journal-panel{height:610px;min-height:0;padding:0;overflow:hidden;display:flex;flex-direction:column}
.public-share-app .trip-journal-panel-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:19px 18px 14px;border-bottom:1px solid var(--line)}
.public-share-app .trip-journal-panel-head>div{display:grid;gap:3px}
.public-share-app .trip-journal-panel-head h2{margin:0;font-size:22px;letter-spacing:-.025em}
.public-share-app .trip-journal-panel-head small{color:var(--muted);font-size:11px}
.public-share-app .trip-journal-list{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin}
.public-share-app .trip-journal-empty{padding:18px;color:var(--muted);font-size:12px}
.public-share-app .public-share-stop-row{cursor:pointer}
.public-share-app .public-share-stop-row .journal-mock-copy h3{margin:0 0 3px;font-size:13px}
.public-share-app .public-share-stop-row .journal-mock-copy>small{color:var(--muted);font-size:10px}
.public-share-app .public-share-stop-note{margin:6px 0 0;color:var(--muted);font-size:10px;line-height:1.35}
.public-share-app .trip-country-strip{padding:17px 20px}
.public-share-app .trip-country-strip .panel-title{margin-bottom:10px}
.public-share-app .trip-country-strip .country-chip{padding:7px 10px}
.public-share-app .shared-position-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.public-share-app .public-share-note-list{display:grid}
.public-share-app .public-share-note-list article{display:grid;grid-template-columns:minmax(0,.45fr) minmax(0,1fr);gap:22px;padding:14px 0;border-top:1px solid var(--line)}
.public-share-app .public-share-note-list article:first-child{border-top:0;padding-top:2px}
.public-share-app .public-share-note-list article>div{display:grid;gap:4px;align-content:start}
.public-share-app .public-share-note-list article strong{font-size:13px}
.public-share-app .public-share-note-list article small{color:var(--muted);font-size:10px}
.public-share-app .public-share-note-list article p{margin:0;color:#344b5e;font-size:13px;line-height:1.55}
.public-share-app .trip-budget-panel .panel-actions{justify-content:flex-end}
.public-share-app .trip-map-hint{margin:10px 0 0;color:var(--muted);font-size:10px;display:flex;gap:5px;align-items:center}
.public-share-app .trip-map-hint .tiny-icon{width:13px;height:13px;color:var(--blue-700)}

@media(max-width:820px){
  #sharing-view .share-row{grid-template-columns:1fr!important}
  #sharing-view .share-row-actions{justify-content:space-between;min-width:0}
  #sharing-view .share-row-detail{grid-column:1}
  #sharing-view .share-link-field{grid-template-columns:1fr}
  #sharing-view .share-link-field .secondary-button{width:100%}
  .public-share-app .trip-desktop-route-journal{grid-template-columns:1fr}
  .public-share-app .trip-route-showcase{min-height:0}
  .public-share-app .trip-route-showcase .trip-map{height:360px;flex:none}
  .public-share-app .public-share-note-list article{grid-template-columns:1fr;gap:7px}
}

@media(max-width:759px){
  .public-share-app .public-share-view{padding-top:max(15px,env(safe-area-inset-top))!important;padding-left:14px!important;padding-right:14px!important;padding-bottom:max(18px,env(safe-area-inset-bottom))!important;min-height:100dvh!important}
  .public-share-app .detail-header{gap:8px!important;width:100%!important;max-width:none!important;margin:0 0 11px!important}
  .public-share-app .public-share-status{font-size:9px!important;line-height:1.3}
  .public-share-app .trip-title-row{display:grid!important;grid-template-columns:1fr!important;gap:9px!important;align-items:start!important}
  .public-share-app .trip-title-row .eyebrow{display:none!important}
  .public-share-app .trip-title-row h1{margin:0!important;font-size:27px!important;line-height:1.02!important;letter-spacing:-.045em!important}
  .public-share-app .trip-title-row p{margin:4px 0 0!important;font-size:11px!important;color:var(--muted)!important}
  .public-share-app .public-share-readonly-pill{min-height:28px;padding:0 9px;font-size:8px}
  .public-share-app .detail-metrics{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:7px!important;width:100%!important;max-width:none!important;margin:0 0 9px!important}
  .public-share-app .metric-card{min-width:0!important;min-height:68px!important;gap:8px!important;padding:9px 10px!important;border-radius:14px!important;box-shadow:0 2px 8px rgba(16,36,58,.035)!important}
  .public-share-app .metric-icon{width:34px!important;height:34px!important;flex:0 0 34px!important;border-radius:11px!important}
  .public-share-app .metric-icon .np-icon{width:18px!important;height:18px!important}
  .public-share-app .metric-card small{font-size:9.5px!important;margin:0 0 2px!important}
  .public-share-app .metric-card strong{font-size:15px!important;line-height:1.05!important}
  .public-share-app .overnight-strip{display:grid!important;grid-template-columns:auto minmax(0,1fr)!important;gap:8px!important;width:100%!important;max-width:none!important;margin:0 0 9px!important;padding:9px 10px!important;border-radius:14px!important;box-shadow:none!important}
  .public-share-app .overnight-breakdown{gap:5px!important;justify-content:flex-end!important}
  .public-share-app .overnight-breakdown>span{padding:5px 7px!important;font-size:9px!important}
  .public-share-app .trip-content-stack{width:100%!important;max-width:none!important;margin:0!important;gap:9px!important}
  .public-share-app .panel-card{min-width:0!important;width:100%!important;padding:11px!important;border-radius:15px!important;box-shadow:0 3px 12px rgba(16,36,58,.04)!important}
  .public-share-app .panel-title{margin:0 0 9px!important;gap:8px!important}
  .public-share-app .panel-title h2{font-size:17px!important;line-height:1.1!important}
  .public-share-app .panel-title small{font-size:9.5px!important}
  .public-share-app .section-icon{width:20px!important;height:20px!important}
  .public-share-app .trip-route-showcase{min-height:0!important}
  .public-share-app .trip-route-showcase .trip-map{height:220px!important;flex:0 0 220px!important;border-radius:13px!important}
  .public-share-app .trip-journal-panel{padding:0!important;max-height:420px}
  .public-share-app .trip-journal-panel-head{padding:12px 11px 9px}
  .public-share-app .trip-journal-panel-head h2{font-size:17px}
  .public-share-app .journal-mock-row{grid-template-columns:50px 18px minmax(0,1fr) 0!important;gap:7px!important;padding:8px 9px!important}
  .public-share-app .journal-mock-thumb{width:50px!important;height:46px!important;border-radius:10px!important}
  .public-share-app .journal-mock-index{font-size:9px!important}
  .public-share-app .shared-position-grid,.public-share-app .trip-statistics-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:7px!important}
  .public-share-app .data-tile{padding:9px 10px!important;border-radius:12px!important}
  .public-share-app .data-tile small{font-size:9.5px!important}
  .public-share-app .data-tile strong{font-size:15px!important;margin-top:3px!important}
  .public-share-app .trip-budget-panel .panel-title{display:grid!important;grid-template-columns:1fr!important}
  .public-share-app .trip-budget-panel .panel-actions{width:100%!important}
  .public-share-app .trip-budget-panel .panel-actions button{min-height:38px!important;width:100%!important;padding:7px 8px!important;border-radius:11px!important;font-size:10px!important}
  .public-share-app .budget-hero-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;margin-top:9px!important;border-radius:12px!important}
  .public-share-app .budget-hero-grid>div{padding:9px!important}
  .public-share-app .budget-hero-grid small{font-size:9px!important;margin-bottom:3px!important}
  .public-share-app .budget-hero-grid strong{font-size:14px!important}
  .public-share-app .diesel-row{grid-template-columns:minmax(108px,.42fr) minmax(0,.58fr)!important;gap:10px!important;padding:9px 0!important}
  .public-share-app .diesel-row-label{font-size:10.5px!important}
  .public-share-app .diesel-row strong{text-align:right!important;font-size:11px!important;padding-left:0!important}
  .public-share-app .country-chip{font-size:10px!important;padding:6px 8px!important}
}

@media(max-width:520px){
  #sharing-view .share-permissions{gap:4px!important}
  #sharing-view .share-permissions span{font-size:9.5px!important;min-height:23px!important;padding:3px 7px!important}
  #sharing-view .share-row-link-label{font-size:10px!important}
  .public-share-app .budget-category-columns{grid-template-columns:1fr}
  .public-share-app .public-share-note-list article p{font-size:12px}
}


/* Public share parity: the live marker and read-only stop drill-down use the same visual language as owner Trip detail. */
.trip-map-marker-live{background:#173d5f}
.public-share-app .public-share-journal-modal{max-height:min(68dvh,720px);overflow:auto;border:1px solid var(--line);border-radius:16px}
.public-share-app .public-share-stop-detail{display:grid;gap:12px}
.public-share-app .public-share-stop-detail .place-coordinate{margin:0}
.public-share-app .public-share-stop-detail .place-detail-note{margin:0}

/* NordicPass 3.0 · v9.8 · multi-trip shares */
#sharing-view .field-label{display:block;margin:0 0 6px;font-weight:800;font-size:12px}
#sharing-view .share-trip-picker{display:grid;gap:9px;border:1px solid var(--line);border-radius:15px;padding:10px;background:#f9fbfc}
#sharing-view .share-current-trip,
#sharing-view .share-trip-option{display:flex!important;grid-template-columns:none!important;align-items:flex-start!important;gap:9px!important;font-weight:400!important;cursor:pointer}
#sharing-view .share-current-trip{padding:9px 10px;border-radius:11px;background:#eef7fb}
#sharing-view .share-current-trip>span,
#sharing-view .share-trip-option>span{display:grid;gap:2px;min-width:0}
#sharing-view .share-current-trip strong,
#sharing-view .share-trip-option strong{font-size:12px;line-height:1.2}
#sharing-view .share-current-trip small,
#sharing-view .share-trip-option small{font-size:10px;line-height:1.3;color:var(--muted);font-weight:500}
#sharing-view .share-current-trip input[type="checkbox"],
#sharing-view .share-trip-option input[type="checkbox"]{width:18px!important;min-width:18px!important;max-width:18px!important;height:18px!important;min-height:18px!important;margin:1px 0 0!important;padding:0!important;flex:0 0 18px!important}
#sharing-view .share-trip-picker-head{display:flex;align-items:end;justify-content:space-between;gap:10px;padding:2px 2px 0}
#sharing-view .share-trip-picker-head strong{font-size:11px}
#sharing-view .share-trip-picker-head small{font-size:9px;color:var(--muted);text-align:right}
#sharing-view .share-trip-options{display:grid;gap:6px;max-height:250px;overflow:auto;overscroll-behavior:contain;padding-right:2px}
#sharing-view .share-trip-option{padding:8px 9px;border:1px solid var(--line);border-radius:10px;background:#fff}
#sharing-view .share-targets-summary{display:flex!important;align-items:center!important;gap:6px!important;color:#4e6574;font-size:11px;font-weight:750}
#sharing-view .share-targets-summary .tiny-icon{width:14px;height:14px;color:var(--blue-700);flex:0 0 auto}
#sharing-view .share-target-editor{display:grid;gap:10px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
#sharing-view .share-target-editor-head>div{display:grid;gap:2px}
#sharing-view .share-target-editor-head strong{font-size:12px}
#sharing-view .share-target-editor-head small{font-size:10px;color:var(--muted)}
#sharing-view .share-target-editor-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
#sharing-view .share-target-editor-actions [data-share-target-result]{font-size:10px;color:var(--muted)}
.public-share-app .public-share-home{cursor:pointer}
.public-share-app .public-share-home:focus-visible{outline:2px solid rgba(255,255,255,.72);outline-offset:-3px}
.public-share-app .public-share-trips-grid{max-width:1420px;margin:0 auto;grid-template-columns:repeat(auto-fit,minmax(330px,1fr))}
.public-share-app .public-share-trips-grid .trip-card{cursor:pointer}
.public-share-app .public-share-trips-grid .trip-stats{grid-template-columns:repeat(auto-fit,minmax(100px,1fr))}
.public-share-app .public-share-overview-position{max-width:1420px;margin:0 auto 18px!important}
.public-share-app [data-share-all-trips] .button-icon{transform:rotate(90deg)}

@media(max-width:759px){
  #sharing-view .share-trip-picker{padding:8px;border-radius:12px}
  #sharing-view .share-trip-picker-head{display:grid;gap:2px;align-items:start}
  #sharing-view .share-trip-picker-head small{text-align:left}
  #sharing-view .share-trip-options{max-height:220px}
  #sharing-view .share-target-editor-actions .secondary-button{width:100%}
  .public-share-app .public-share-trips-grid{grid-template-columns:1fr!important;gap:9px!important}
  .public-share-app .public-share-trips-grid .trip-card{border-radius:15px!important}
  .public-share-app .public-share-trips-grid .trip-card-main{padding:14px!important}
  .public-share-app .public-share-trips-grid .trip-card h2{font-size:20px!important;margin:9px 0 4px!important}
  .public-share-app .public-share-trips-grid .trip-card p{font-size:10px!important}
  .public-share-app .public-share-trips-grid .trip-stats{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .public-share-app .public-share-trips-grid .trip-stat{padding:10px 7px!important}
  .public-share-app .public-share-trips-grid .trip-stat:nth-child(odd){border-left:0!important}
  .public-share-app .public-share-trips-grid .trip-stat:nth-child(even){border-left:1px solid var(--line)!important}
  .public-share-app .public-share-trips-grid .trip-stat:nth-child(n+3){border-top:1px solid var(--line)!important}
  .public-share-app .public-share-trips-grid .trip-stat:last-child:nth-child(odd){grid-column:1/-1}
  .public-share-app .public-share-trips-grid .trip-stat strong{font-size:14px!important}
  .public-share-app .public-share-trips-grid .trip-stat small{font-size:8.5px!important}
  .public-share-app .trip-title-actions{grid-template-columns:1fr!important}
}

/* NordicPass 3.0 · v9.9 · shared overview priority + scoped stop thumbnails */
.public-share-app .public-share-stop-row .journal-mock-thumb img[data-shared-stop-photo]{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1;opacity:0;transition:opacity .16s ease}
.public-share-app .public-share-stop-row .journal-mock-thumb img[data-shared-stop-photo].is-loaded{opacity:1}

/* 2026-10-11 · Trip small non-Place stop layer (owner + shared). */
.trip-map-small-stop-icon{background:transparent!important;border:0!important}
.trip-map-small-stop{box-sizing:border-box;width:22px;height:22px;border:2px solid #fff;border-radius:50%;background:#5c7e94;color:#fff;display:grid;place-items:center;box-shadow:0 2px 8px rgba(8,22,37,.3)}
.trip-map-small-stop-glyph{width:12px;height:12px;display:block;fill:none!important;stroke:currentColor!important;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
/* Keep the smaller stops behind full-size saved/overnight markers. */
.trip-map-small-stop-icon{z-index:auto}
.leaflet-control-layers .trip-map-layer-icon{width:15px;height:15px}

/* 2026-10-12 · Camping Service records + a little room inside map popups. */
.leaflet-popup.np-stop-popup .trip-map-popup,
.leaflet-popup.np-stop-popup.np-map-highlight-popup .trip-map-popup{
  box-sizing:border-box;
  padding:16px 18px 15px;
  gap:6px;
  overflow-wrap:anywhere;
}
.leaflet-popup.np-stop-popup .trip-map-popup > *{min-width:0}
.journal-service-action.is-recorded{color:#177c76;border-color:#a9d8cd;background:#eaf8f4}
.journal-service-action:hover{color:var(--blue-700)}
.journal-mock-actions{flex-wrap:nowrap}
.journal-mock-row .journal-mock-copy{min-width:0}
.journal-mock-thumb-service{background:#e5f4f0;color:#177c76}
section[data-view="journal"] .timeline-marker-service{background:#e5f4f0;color:#177c76}
.camping-service-panel .panel-title{margin-bottom:14px}
.camping-service-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}
.camping-service-stat{border:1px solid var(--line);border-radius:15px;background:var(--np-theme-surface,#fff);padding:15px;display:flex;flex-direction:column;gap:12px;min-width:0}
.camping-service-stat>span{display:grid;gap:4px;color:var(--ink);font-size:13px;font-weight:750}
.camping-service-stat small{font-weight:400;font-size:11px;color:var(--muted)}
.camping-service-stat>strong{font-size:23px;letter-spacing:-.025em;color:var(--ink)}
.camping-service-note,.camping-service-intro{font-size:12px;color:var(--muted);line-height:1.45;margin:8px 0 0}
.camping-service-intro{margin:0 0 2px}
.service-form-group{border:1px solid var(--line);border-radius:15px;padding:13px;display:grid;gap:11px;background:var(--np-theme-surface,#fff)}
.service-form-check{display:flex!important;align-items:center;gap:10px;font-size:13px;font-weight:750;min-height:26px;cursor:pointer}
.service-form-check input[type="checkbox"]{width:18px!important;height:18px!important;min-width:18px;flex:0 0 18px;accent-color:var(--blue-600);padding:0!important;margin:0}
.service-form-check .mini-icon{width:17px;height:17px;color:var(--blue-700);flex:0 0 17px}
.service-form-check small{font-size:11px;font-weight:400;color:var(--muted)}
.service-volume{display:grid;gap:6px;font-size:12px;color:var(--muted);font-weight:650}
.service-volume input{width:100%;max-width:230px}
.service-volume input:disabled{opacity:.45}
@media(max-width:760px){
  .camping-service-stats{grid-template-columns:1fr;gap:8px}
  .camping-service-stat{flex-direction:row;align-items:center;justify-content:space-between;gap:12px}
  .camping-service-stat>strong{font-size:21px;white-space:nowrap}
  .journal-mock-actions{gap:4px}
}

/* Keep the narrow Trip sidebar readable beside two quick actions. */
section[data-view="trip-detail"] .journal-service-action{width:34px;min-width:34px;padding:5px}
section[data-view="trip-detail"] .journal-service-action span{display:none}
.service-form-check input[type="checkbox"]{min-height:18px!important;height:18px!important;border-radius:4px!important;padding:0!important;appearance:auto!important}
@media(max-width:700px){.camping-service-panel .panel-title{flex-wrap:wrap}.camping-service-panel .panel-title .small-button{margin-top:4px}}


/* 2026-10-12 · Vehicle dashboard wrapper groups diesel + camping service. */
.vehicle-dashboard-panel{display:grid;gap:16px}
/* Diesel and Camping Service are full-width stacked sections in ONE outer bubble. */
.vehicle-dashboard-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:0}
.vehicle-subpanel{border:0;border-radius:0;background:transparent;padding:0;display:grid;gap:12px;min-width:0}
.vehicle-subpanel+.vehicle-subpanel{border-top:1px solid var(--line);padding-top:20px;margin-top:20px}
.vehicle-subpanel .panel-title{margin-bottom:0}
.vehicle-subpanel .title-with-icon h2{margin:0}
.vehicle-subpanel .title-with-icon small{display:block;margin-top:4px}
.vehicle-subpanel .section-icon,.vehicle-subpanel .eyebrow{display:none}
.vehicle-subpanel .diesel-note,.vehicle-subpanel .camping-service-note{margin-top:0}
