*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overscroll-behavior:none}
body{background:#f2f3f5;font-family:-apple-system,'Helvetica Neue',Arial,sans-serif;overflow:hidden;position:fixed;inset:0;width:100%}

/* ══════════════════════════════════════════════════
   V2 DESIGN TOKENS — light, flat, Loganair red
   (airBaltic-style structure, Loganair's own brand colour)
══════════════════════════════════════════════════ */
:root{
    --log-red:      #c8102e;
    --log-red-dark: #97081f;
    --log-red-tint: rgba(200,16,46,.08);
    --log-red-tint2:rgba(200,16,46,.14);
    --ink:      #16233c;
    --ink-soft: #4b5668;
    --ink-faint:#8791a1;
    --line:     #e3e6ea;
    --line2:    #d3d7dd;
    --paper:    #ffffff;
    --paper2:   #f7f8fa;
    --paper3:   #eef0f3;
    --brand-rule: linear-gradient(90deg,var(--log-red),#8b0a1f 50%,var(--log-red));
    --surface-solid: #16233c;
}
:root[data-theme="dark"]{
    --log-red:      #ff4d5e;
    --log-red-dark: #c8102e;
    --log-red-tint: rgba(255,77,94,.12);
    --log-red-tint2:rgba(255,77,94,.2);
    --ink:      #f1f3f7;
    --ink-soft: #aab2c0;
    --ink-faint:#6b7484;
    --line:     #262c3a;
    --line2:    #333a4a;
    --paper:    #121722;
    --paper2:   #0c1019;
    --paper3:   #1a2030;
}
body{transition:background-color .2s ease}
:root[data-theme="dark"] body{background:#0c1019}
.brand-rule{position:absolute;top:0;left:0;right:0;height:3px;background:var(--brand-rule);z-index:41;pointer-events:none}

/* ── Fullscreen app shell — fills the viewport on any device, no device chrome ── */
#efb-wrap{position:fixed;inset:0;width:100%;height:100%;height:100dvh}
#ipad{position:absolute;inset:0;width:100%;height:100%;background:var(--paper)}

/* Floating power/home controls replace the old device bezel — small, unobtrusive, real webapp controls */
.ipad-home-btn{
    position:absolute;bottom:calc(14px + env(safe-area-inset-bottom));right:calc(14px + env(safe-area-inset-right));
    width:42px;height:42px;border-radius:50%;
    background:rgba(255,255,255,.85);backdrop-filter:blur(12px);
    border:1.5px solid var(--line);box-shadow:0 4px 14px rgba(22,35,60,.14);
    cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .12s;z-index:40
}
.ipad-home-btn:active{transform:scale(.9)}
.ipad-home-inner{width:20px;height:20px;border-radius:6px;border:1.5px solid var(--ink-faint);background:rgba(0,0,0,.02)}
.ipad-power-btn{
    position:absolute;top:calc(10px + env(safe-area-inset-top));right:calc(14px + env(safe-area-inset-right));
    width:30px;height:8px;border-radius:4px;
    background:rgba(0,0,0,.06);border:1px solid var(--line);
    cursor:pointer;z-index:40;transition:background .12s
}
.ipad-power-btn:hover{background:rgba(0,0,0,.12)}
.ipad-power-btn:active{background:rgba(0,0,0,.03)}
:root[data-theme="dark"] .ipad-home-btn{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.14)}
:root[data-theme="dark"] .ipad-power-btn{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.14)}
:root[data-theme="dark"] .ipad-power-btn:hover{background:rgba(255,255,255,.18)}
#screen{position:absolute;inset:0;overflow:hidden;background:var(--paper)}
.sbar{padding-top:env(safe-area-inset-top);height:calc(30px + env(safe-area-inset-top))}

/* ── Responsive home-grid: reflows icon count by available width instead of scaling a fixed canvas ── */
@media(min-width:900px){.home-grid{grid-template-columns:repeat(6,1fr)}}
@media(min-width:600px) and (max-width:899px){.home-grid{grid-template-columns:repeat(4,1fr)}}
@media(max-width:599px){
    .home-grid{grid-template-columns:repeat(3,1fr);gap:20px 10px;padding:16px 14px}
    .app-ico{width:72px;height:72px}
    .lock-body{flex-direction:column;padding:40px 24px;gap:28px;justify-content:center}
    .lock-time{font-size:56px}
    .lock-slider{width:100%}
}
.ss{position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity .35s ease}
.ss.active{opacity:1;pointer-events:all}
#s-off{background:#0c1220;display:flex;align-items:center;justify-content:center}
.off-hint{color:rgba(255,255,255,.35);font-size:13px;text-align:center}
#s-boot{background:var(--paper)}
.boot-bg{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 40%,var(--log-red-tint),transparent 60%)}
.boot-body{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px}
.boot-logo img{width:72px;height:72px;object-fit:contain;filter:drop-shadow(0 4px 16px rgba(200,16,46,.25))}
.boot-brand{font-size:32px;font-weight:700;color:var(--ink);letter-spacing:-.03em}
.boot-sub{font-size:11px;color:var(--ink-faint);letter-spacing:.15em;text-transform:uppercase}
.boot-ver{font-size:10px;color:var(--ink-faint);letter-spacing:.08em;margin-top:-4px}
.boot-track{width:200px;height:3px;background:var(--paper3);border-radius:2px;overflow:hidden;margin-top:22px}
.boot-fill{height:100%;width:0%;background:linear-gradient(to right,var(--log-red),#ff4a6e);border-radius:2px;transition:width .3s ease}
.boot-msg{font-size:11px;color:var(--ink-faint)}
#s-lock{background:linear-gradient(160deg,#fbfbfc 0%,#f2f3f5 60%,#eceef1 100%)}
:root[data-theme="dark"] #s-lock{background:linear-gradient(160deg,#141a26 0%,#0c1019 60%,#0a0d14 100%)}
#s-maint{background:linear-gradient(160deg,#fbfbfc 0%,#f2f3f5 60%,#eceef1 100%)}
:root[data-theme="dark"] #s-maint{background:linear-gradient(160deg,#141a26 0%,#0c1019 60%,#0a0d14 100%)}
.maint-body{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:40px;text-align:center}
.maint-ico{font-size:56px;filter:grayscale(.2)}
.maint-title{font-size:22px;font-weight:700;color:var(--ink)}
.maint-msg{font-size:14px;color:var(--ink-soft);max-width:360px;line-height:1.6}
.maint-sub{font-size:11px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.08em;margin-top:8px}
.lock-bg{position:absolute;inset:0;background:radial-gradient(circle at 50% 15%,var(--log-red-tint),transparent 45%)}
.lock-body{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:26px;padding:40px}
.lock-left{display:flex;flex-direction:column;align-items:center;gap:8px;flex-shrink:0}
.lock-time{font-size:64px;font-weight:200;color:var(--ink);letter-spacing:-.03em;line-height:1}
.lock-date{font-size:13px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.08em}
.lock-avatar{width:52px;height:52px;border-radius:50%;border:2px solid var(--log-red);object-fit:cover;margin-top:10px}
.lock-avatar-fb{display:flex;align-items:center;justify-content:center;background:var(--log-red);font-size:22px}
.lock-pilot{font-size:13px;color:var(--ink);font-weight:600}
.lock-right{display:flex;flex-direction:column;align-items:center;gap:14px;width:100%;max-width:340px}
.lock-slider{position:relative;width:100%;height:52px;border-radius:14px;background:var(--paper);border:1px solid var(--line2);box-shadow:0 2px 10px rgba(22,35,60,.06);overflow:hidden;user-select:none;touch-action:none}
.lock-slider-track{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--ink-soft);font-size:14px;font-weight:600;letter-spacing:.01em}
.lock-slider-progress{position:absolute;left:0;top:0;bottom:0;width:0;background:linear-gradient(90deg,var(--log-red-tint2),rgba(200,16,46,.03));transition:width .14s}
.lock-slider-handle{position:absolute;top:4px;left:4px;width:44px;height:44px;border-radius:50%;background:linear-gradient(145deg,var(--log-red),var(--log-red-dark));box-shadow:0 8px 20px rgba(200,16,46,.35);display:flex;align-items:center;justify-content:center;color:#fff;font-size:22px;font-weight:700;cursor:grab;transition:left .14s ease}
.lock-slider.ready .lock-slider-handle{cursor:grabbing;transition:none}
.lock-airline{font-size:11px;color:var(--ink-faint);letter-spacing:.12em;text-transform:uppercase;text-align:center}
#s-home{background:var(--paper);overflow:hidden}
.wall{position:absolute;inset:0;transition:background .6s ease;background-size:cover;background-position:center}
.wall.wp-default{background:linear-gradient(180deg,#fdfdfe 0%,#f2f3f5 100%)}
.wall.wp-arctic{background:linear-gradient(180deg,#eef6fb 0%,#dcecf5 100%)}
.wall.wp-sunset{background:linear-gradient(180deg,#fff4ea 0%,#fde3d0 100%)}
.wall.wp-forest{background:linear-gradient(180deg,#eef7ee 0%,#dcefdd 100%)}
.wall.wp-night{background:linear-gradient(180deg,#e9eaf5 0%,#d9daea 100%)}

/* Status bar — minimal, airBaltic style: pilot name + logout on left, clock centred, battery right */
.sbar{position:absolute;top:0;left:0;right:0;height:30px;z-index:10;display:flex;align-items:center;justify-content:space-between;padding:0 18px;font-size:12px;font-weight:600;color:var(--ink);background:rgba(255,255,255,.55);backdrop-filter:blur(14px);border-bottom:1px solid rgba(22,35,60,.05)}
:root[data-theme="dark"] .sbar{background:rgba(12,16,25,.55);border-bottom-color:rgba(255,255,255,.06)}
.sbar-c{display:flex;align-items:center;gap:8px;line-height:1}
.sbar-brand{background:var(--log-red);color:#fff;font-size:9px;font-weight:800;letter-spacing:.06em;padding:2px 6px;border-radius:5px}
.sbar-pilot{font-size:12px;font-weight:700;color:var(--ink)}
.sbar-logout{font-size:11px;font-weight:600;color:var(--ink-soft);background:var(--paper3);border:1px solid var(--line);border-radius:999px;padding:3px 10px;cursor:pointer;transition:all .12s}
.sbar-logout:hover{background:var(--paper2);color:var(--ink)}
.sig-bars{display:none}
.wifi-ico{display:none}
.sbar-r{display:flex;align-items:center;gap:6px;line-height:1;color:var(--ink-soft)}
.bat-shell{width:24px;height:12px;border-radius:3px;border:1.5px solid var(--ink-faint);position:relative;overflow:hidden;vertical-align:middle;flex-shrink:0}
.bat-fill{position:absolute;left:1px;top:1px;bottom:1px;background:#22a55e;border-radius:1.5px;width:85%;transition:width .5s}
.bat-nub{position:absolute;right:-3.5px;top:50%;transform:translateY(-50%);width:2.5px;height:5px;border-radius:0 1px 1px 0;background:var(--ink-faint)}

/* ── Home Grid ── */
.home-grid{position:absolute;top:36px;bottom:calc(20px + env(safe-area-inset-bottom));left:0;right:0;display:grid;grid-auto-rows:auto;gap:20px;padding:22px calc(24px + env(safe-area-inset-right)) 16px calc(24px + env(safe-area-inset-left));align-items:start;align-content:start}
.app{display:flex;flex-direction:column;align-items:center;gap:7px;cursor:pointer;position:relative;transition:transform .15s;user-select:none}
.app:active:not(.jiggling){transform:scale(.9)}
.app-ico{width:86px;height:86px;border-radius:26px;overflow:hidden;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 20px rgba(22,35,60,.2),0 1px 4px rgba(22,35,60,.12),inset 0 1px 0 rgba(255,255,255,.25);transition:box-shadow .2s,transform .15s;font-size:34px;background:var(--paper);position:relative}
.app-ico::before{content:'';position:absolute;inset:0;background:linear-gradient(160deg,rgba(255,255,255,.22) 0%,rgba(255,255,255,0) 42%);pointer-events:none}
.app-ico::after{content:'';position:absolute;left:9px;right:9px;bottom:5px;height:3px;border-radius:2px;background:var(--cat-accent,var(--log-red));opacity:.65}
.app[data-cat="weather"] .app-ico{--cat-accent:#2563eb}
.app[data-cat="nav"] .app-ico{--cat-accent:#178a4c}
.app[data-cat="utils"] .app-ico{--cat-accent:#6b7484}
.app[data-cat="custom"] .app-ico{--cat-accent:#8028c9}
.app-ico img{width:100%;height:100%;object-fit:cover}
.app:not(.jiggling):hover .app-ico{box-shadow:0 10px 26px rgba(22,35,60,.24),0 2px 5px rgba(22,35,60,.12),inset 0 1px 0 rgba(255,255,255,.3);transform:translateY(-3px) scale(1.03)}
.app-ico svg{width:100%;height:100%}
.app-lbl{font-size:11px;color:var(--ink);font-weight:600;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100px;background:rgba(255,255,255,.55);backdrop-filter:blur(6px);padding:2px 8px;border-radius:7px}
:root[data-theme="dark"] .app-lbl{background:rgba(12,16,25,.55)}
.app-badge{position:absolute;top:-4px;right:2px;background:var(--log-red);color:#fff;font-size:8px;font-weight:700;padding:1px 4px;border-radius:999px;border:1.5px solid var(--paper);display:none}
.app-new-badge{position:absolute;top:-5px;left:-4px;background:#178a4c;color:#fff;font-size:7px;font-weight:800;letter-spacing:.04em;padding:1px 5px;border-radius:5px;text-transform:uppercase;z-index:2;box-shadow:0 2px 6px rgba(23,138,76,.4)}

/* ── Jiggle / edit mode ── */
@keyframes jiggle{0%,100%{transform:rotate(-1.8deg)}50%{transform:rotate(1.8deg)}}
.jiggling{animation:jiggle .22s infinite ease-in-out!important;cursor:grab!important}
.jiggling:active{cursor:grabbing!important}
.app-delete-btn{position:absolute;top:-6px;left:-6px;width:20px;height:20px;border-radius:50%;background:var(--log-red);border:1.5px solid #fff;color:#fff;font-size:13px;line-height:1;display:none;align-items:center;justify-content:center;cursor:pointer;z-index:10;font-weight:700}
.jiggling .app-delete-btn{display:flex}
.app.dragging-ghost{opacity:.4;pointer-events:none}
.app.drag-over .app-ico{box-shadow:0 0 0 2px var(--log-red),0 8px 22px rgba(22,35,60,.18)!important}
.edit-mode-bar{position:absolute;top:30px;left:0;right:0;height:30px;background:rgba(255,255,255,.85);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:center;z-index:15;display:none}
:root[data-theme="dark"] .edit-mode-bar{background:rgba(12,16,25,.85)}
.edit-mode-bar.visible{display:flex}
.edit-mode-hint{font-size:11px;color:var(--ink-soft);letter-spacing:.04em}
.edit-done-btn{position:absolute;right:14px;font-size:11px;font-weight:700;color:var(--log-red);background:none;border:none;cursor:pointer;padding:4px 8px;font-family:inherit}



/* ── App overlay ── */
#app-overlay{position:absolute;inset:0;background:var(--paper2);z-index:20}
@keyframes zoomIn{from{opacity:0;transform:scale(.93)}to{opacity:1;transform:scale(1)}}
@keyframes zoomOut{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.93)}}
#app-overlay.opening{animation:zoomIn .22s ease forwards}
#app-overlay.closing{animation:zoomOut .18s ease forwards}
.app-bar{height:44px;background:rgba(255,255,255,.9);backdrop-filter:blur(16px);border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 16px;gap:12px;position:relative;z-index:5;flex-shrink:0}
.app-back{font-size:12px;font-weight:700;color:var(--log-red);background:none;border:none;cursor:pointer;padding:6px 10px;border-radius:8px;transition:background .12s;font-family:inherit}
.app-back:hover{background:var(--log-red-tint)}
.app-bar-title{flex:1;text-align:center;font-size:13px;font-weight:700;color:var(--ink)}
.app-bar-time{font-size:11px;font-weight:600;color:var(--ink-faint)}
#app-views{position:absolute;inset:44px 0 0 0;overflow:hidden}
.av{display:none;position:absolute;inset:0;overflow:hidden;background:var(--paper2)}
.av.active{display:flex;flex-direction:column}
.av-scroll{flex:1;overflow-y:auto;padding:20px 22px;scrollbar-width:thin;scrollbar-color:var(--line2) transparent}
.av-hdr{display:flex;align-items:center;gap:14px;margin-bottom:18px;padding-bottom:16px;border-bottom:1px solid var(--line)}
.av-ico{width:46px;height:46px;border-radius:14px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:22px;background:var(--paper);box-shadow:0 3px 10px rgba(22,35,60,.14),inset 0 1px 0 rgba(255,255,255,.22);position:relative;overflow:hidden}
.av-ico::before{content:'';position:absolute;inset:0;background:linear-gradient(160deg,rgba(255,255,255,.2) 0%,rgba(255,255,255,0) 45%);pointer-events:none}
.av-ico img{width:100%;height:100%;object-fit:cover}
.av-ico svg{width:100%;height:100%}
.av-title{font-size:17px;font-weight:700;color:var(--ink)}
.av-sub{font-size:11px;color:var(--ink-faint);margin-top:3px}

/* ── OFP Tabs ── */
.ofp-tabs{display:flex;gap:2px;background:var(--paper3);border-radius:12px;padding:3px;margin-bottom:16px;flex-shrink:0}
.ofp-tab{flex:1;padding:8px 6px;border-radius:9px;font-size:11px;font-weight:700;color:var(--ink-soft);text-align:center;cursor:pointer;transition:all .18s;border:none;background:none;font-family:inherit;white-space:nowrap}
.ofp-tab.active{background:var(--paper);color:var(--ink);box-shadow:0 1px 4px rgba(22,35,60,.1)}
.ofp-tab-pane{display:none}
.ofp-tab-pane.active{display:block}

/* ── OFP Cards ── */
.ofp-hero{background:linear-gradient(135deg,var(--log-red-tint),rgba(37,99,235,.06));border:1px solid var(--line);border-radius:16px;padding:16px;margin-bottom:14px}
.ofp-route-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px}
.ofp-apt{text-align:center}
.ofp-apt-icao{font-size:26px;font-weight:200;color:var(--ink);letter-spacing:-.02em;line-height:1}
.ofp-apt-name{font-size:9px;color:var(--ink-faint);margin-top:2px}
.ofp-arrow{font-size:18px;color:var(--ink-faint);flex:1;text-align:center}
.ofp-meta-row{display:flex;gap:8px;flex-wrap:wrap}
.ofp-meta-pill{flex:1;min-width:80px;background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:8px 10px;text-align:center}
.ofp-meta-val{font-size:14px;font-weight:700;color:var(--ink)}
.ofp-meta-lbl{font-size:9px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.06em;margin-top:2px}
.fuel-bar-wrap{background:var(--paper);border:1px solid var(--line);border-radius:13px;overflow:hidden;margin-bottom:14px}
.fuel-bar-hdr{padding:10px 14px 6px;font-size:9.5px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-faint)}
.fuel-stacked{padding:0 14px 12px;display:flex;flex-direction:column;gap:8px}
.fuel-item{display:flex;align-items:center;gap:10px}
.fuel-item-lbl{font-size:11px;color:var(--ink-soft);width:68px;flex-shrink:0}
.fuel-item-bar-wrap{flex:1;height:8px;background:var(--paper3);border-radius:4px;overflow:hidden}
.fuel-item-bar{height:100%;border-radius:4px;transition:width .6s ease}
.fuel-item-val{font-size:11px;font-weight:700;color:var(--ink);width:80px;text-align:right;flex-shrink:0;font-family:monospace}
.fuel-total-row{border-top:1px solid var(--line);padding:10px 14px;display:flex;justify-content:space-between;align-items:center}
.fuel-total-lbl{font-size:11px;color:var(--ink-soft)}
.fuel-total-val{font-size:16px;font-weight:700;color:#2563eb}
.route-box{background:rgba(37,99,235,.05);border:1px solid rgba(37,99,235,.15);border-radius:12px;padding:12px 14px;margin-bottom:14px}
.route-text{font-family:monospace;font-size:11px;color:#2563eb;line-height:1.8;word-break:break-all;margin-top:6px}
.ofp-wx-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:4px}
.ofp-wx-btn{display:flex;flex-direction:column;align-items:center;gap:4px;background:var(--paper);border:1px solid var(--line);border-radius:11px;padding:10px 6px;cursor:pointer;transition:all .15s;font-family:inherit}
.ofp-wx-btn:hover{background:var(--paper2);border-color:var(--line2)}
.ofp-wx-icao{font-size:14px;font-weight:700;color:var(--ink)}
.ofp-wx-role{font-size:9px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.06em}
.ofp-status-bar{display:flex;align-items:center;gap:8px;padding:10px 0;margin-bottom:12px}
.ofp-status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.ofp-status-text{font-size:12px;color:var(--ink-soft)}

/* ── Shared form/card styles ── */
.form-row{display:flex;gap:10px;align-items:flex-end;margin-bottom:14px;flex-wrap:wrap}
.form-field{flex:1;min-width:100px}
.form-field label{display:block;font-size:10px;font-weight:700;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.08em;margin-bottom:5px}
.form-field input,.form-field select{width:100%;background:var(--paper);border:1px solid var(--line2);border-radius:10px;padding:9px 12px;color:var(--ink);font-size:12px;outline:none;font-family:inherit;transition:border-color .15s;appearance:none}
.form-field input:focus,.form-field select:focus{border-color:var(--log-red)}
.btn{padding:9px 16px;border-radius:10px;font-size:12px;font-weight:700;cursor:pointer;border:none;white-space:nowrap;transition:filter .15s,transform .1s;font-family:inherit}
.btn:hover{filter:brightness(1.08)}
.btn:active{transform:scale(.96)}
.btn--blue{background:#2563eb;color:#fff}
.btn--sky{background:#0284c7;color:#fff}
.btn--teal{background:#0891b2;color:#fff}
.btn--red{background:var(--log-red);color:#fff;box-shadow:0 4px 14px rgba(200,16,46,.25)}
.btn--ghost{background:var(--paper);color:var(--ink-soft);border:1px solid var(--line2)}
.btn--ghost:hover{background:var(--paper2)}
.btn--green{background:#16a34a;color:#fff}
.res-card{background:var(--paper);border:1px solid var(--line);border-radius:13px;margin-bottom:12px;overflow:hidden}
.res-sec{padding:11px 14px;border-bottom:1px solid var(--line)}
.res-sec:last-child{border:none}
.res-sec-lbl{font-size:9.5px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:7px}
.res-row{display:flex;justify-content:space-between;gap:12px;font-size:12px;padding:4px 0;color:var(--ink-soft)}
.res-row strong{color:var(--ink);font-weight:600;text-align:right}
.metar-raw,.taf-raw{font-family:monospace;font-size:11px;color:#2563eb;background:rgba(37,99,235,.05);padding:10px 11px;border-radius:8px;white-space:pre-wrap;word-break:break-word;line-height:1.75;margin:8px 0}
.weather-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:8px}
.weather-pill{display:flex;flex-direction:column;gap:3px;background:var(--paper2);border:1px solid var(--line);border-radius:10px;padding:10px}
.weather-pill span{font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);font-weight:700}
.weather-pill strong{font-size:13px;color:var(--ink);font-weight:700}
.cat-pill{display:inline-flex;padding:2px 8px;border-radius:999px;font-size:9.5px;font-weight:700}
.cat-vfr{background:rgba(34,197,94,.14);color:#178a4c}
.cat-mvfr{background:rgba(59,130,246,.14);color:#1d5fc9}
.cat-ifr{background:rgba(239,68,68,.14);color:#c62828}
.cat-lifr{background:rgba(168,85,247,.14);color:#8028c9}
.atis-box{background:rgba(8,145,178,.05);border:1px solid rgba(8,145,178,.15);border-radius:12px;padding:16px;margin-bottom:10px}
.atis-letter{font-size:36px;font-weight:200;color:#0891b2;text-align:center;margin-bottom:7px}
.atis-raw{font-family:monospace;font-size:11px;color:var(--ink-soft);white-space:pre-wrap;line-height:1.8}
.lb-tbl{width:100%;border-collapse:collapse;font-size:11.5px}
.lb-tbl th{text-align:left;padding:6px 8px;color:var(--ink-faint);font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;border-bottom:1px solid var(--line)}
.lb-tbl td{padding:8px 8px;color:var(--ink-soft);border-bottom:1px solid var(--line)}
.lb-tbl tr:hover td{background:var(--paper2)}
.lb-cs{color:var(--log-red);font-weight:700}
.clr-g{color:#178a4c}.clr-a{color:#b8860b}.clr-r{color:#c62828}
.ntm-card{background:rgba(217,119,6,.05);border:1px solid rgba(217,119,6,.16);border-radius:11px;padding:12px;margin-bottom:9px}
.ntm-title{font-size:12.5px;font-weight:600;color:#b8860b;margin-bottom:4px}
.ntm-body{font-size:11px;color:var(--ink-soft);line-height:1.6}
.stg-list{border-radius:14px;overflow:hidden;border:1px solid var(--line)}
.stg-section{font-size:10px;font-weight:700;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.09em;padding:12px 14px 4px;background:var(--paper2)}
.stg-row{display:flex;justify-content:space-between;align-items:center;padding:11px 14px;font-size:12.5px;color:var(--ink);border-top:1px solid var(--line);background:var(--paper);transition:background .12s}
.stg-row:hover{background:var(--paper2)}
.stg-val{color:var(--ink-faint);font-size:12px}
.stg-val.online{color:#178a4c}
.wp-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-top:8px;width:100%}
.wp-swatch{height:52px;border-radius:10px;cursor:pointer;border:2px solid var(--line);transition:all .2s;position:relative;overflow:hidden}
.wp-swatch.active{border-color:var(--log-red);box-shadow:0 0 0 3px var(--log-red-tint)}
.wp-swatch span{position:absolute;bottom:3px;left:0;right:0;text-align:center;font-size:8px;color:var(--ink-soft);font-weight:600}
.wp-default{background:linear-gradient(180deg,#fdfdfe,#f2f3f5)}
.wp-arctic{background:linear-gradient(180deg,#eef6fb,#dcecf5)}
.wp-sunset{background:linear-gradient(180deg,#fff4ea,#fde3d0)}
.wp-forest{background:linear-gradient(180deg,#eef7ee,#dcefdd)}
.wp-night{background:linear-gradient(180deg,#e9eaf5,#d9daea)}
.cl-phase{margin-bottom:14px;background:var(--paper);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.cl-phase.complete{border:1px solid rgba(34,197,94,.4);box-shadow:0 0 0 3px rgba(34,197,94,.1)}
.cl-phase.complete .cl-phase-hdr{background:rgba(34,197,94,.1);color:#178a4c}
.cl-phase.complete .cl-progress{color:#178a4c;font-weight:700}
.cl-phase-hdr{padding:10px 14px;font-size:11px;font-weight:700;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.08em;background:var(--paper2);cursor:pointer;display:flex;justify-content:space-between;align-items:center;transition:background .12s}
.cl-phase-hdr:hover{background:var(--paper3)}
.cl-progress{font-size:10px;color:var(--ink-faint);font-weight:500;text-transform:none;letter-spacing:0}
.cl-items{padding:6px 0}
.cl-item{display:flex;align-items:center;gap:10px;padding:8px 14px;cursor:pointer;transition:background .1s}
.cl-item:hover{background:var(--paper2)}
.cl-item.done .cl-item-text{text-decoration:line-through;color:var(--ink-faint)}
.cl-item.done .cl-checkbox{background:#16a34a;border-color:#16a34a}
.cl-item.done .cl-checkbox::after{opacity:1}
.cl-checkbox{width:18px;height:18px;border-radius:5px;flex-shrink:0;border:1.5px solid var(--line2);background:transparent;position:relative;transition:all .15s}
.cl-checkbox::after{content:'✓';position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:11px;color:#fff;font-weight:700;opacity:0;transition:opacity .15s}
.cl-item-text{font-size:12px;color:var(--ink);flex:1}
.cl-item-value{font-size:11px;color:var(--ink-faint);font-weight:600;font-family:monospace}
.cl-reset-btn{display:block;width:calc(100% - 28px);margin:10px 14px;padding:8px;border-radius:9px;font-size:11px;font-weight:700;background:var(--paper2);color:var(--ink-soft);border:1px solid var(--line);cursor:pointer;text-align:center;transition:all .15s;font-family:inherit}
.cl-reset-btn:hover{background:var(--paper3);color:var(--ink)}
.cl-empty{padding:30px;text-align:center;color:var(--ink-faint);font-size:12px}
.cl-ofp-hint{background:rgba(37,99,235,.05);border:1px solid rgba(37,99,235,.15);border-radius:10px;padding:10px 14px;margin-bottom:14px;font-size:11px;color:#2563eb;line-height:1.6}
.loading-txt{text-align:center;padding:32px;color:var(--ink-faint);font-size:12px}
.err-txt{color:#c62828;font-size:11px;padding:10px 12px;background:rgba(198,40,40,.06);border-radius:9px;margin-bottom:8px}
.ok-txt{color:#178a4c;font-size:11px;padding:10px 12px;background:rgba(23,138,76,.06);border-radius:9px;margin-bottom:8px}
.spin{display:inline-block;width:18px;height:18px;border-radius:50%;border:2px solid var(--line2);border-top-color:var(--log-red);animation:spin 1s linear infinite;margin-bottom:10px}
select{background:var(--paper);color:var(--ink)}
select option{background:var(--paper);color:var(--ink)}
select option:checked{background:var(--log-red-tint);color:var(--ink)}
@keyframes spin{to{transform:rotate(360deg)}}

/* ── App Store ── */
.as-search{display:flex;gap:8px;margin-bottom:12px}
.as-search input{flex:1;background:var(--paper);border:1px solid var(--line2);border-radius:10px;padding:9px 12px;color:var(--ink);font-size:12px;outline:none;font-family:inherit}
.as-search input:focus{border-color:var(--log-red)}
.as-cat{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}
.as-cat-pill{padding:5px 12px;border-radius:999px;font-size:11px;font-weight:700;cursor:pointer;border:1px solid var(--line2);background:var(--paper);color:var(--ink-soft);transition:all .15s}
.as-cat-pill.active{background:var(--log-red);border-color:var(--log-red);color:#fff}
.as-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.as-card{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:14px;display:flex;gap:12px;align-items:flex-start;transition:background .15s}
.as-card:hover{background:var(--paper2)}
.as-card-ico{width:48px;height:48px;border-radius:14px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:22px;position:relative;overflow:hidden;box-shadow:0 3px 10px rgba(22,35,60,.14),inset 0 1px 0 rgba(255,255,255,.22)}
.as-card-ico::before{content:'';position:absolute;inset:0;background:linear-gradient(160deg,rgba(255,255,255,.2) 0%,rgba(255,255,255,0) 45%);pointer-events:none}
.as-card-ico img{width:100%;height:100%;object-fit:cover}
.as-card-info{flex:1;min-width:0}
.as-card-name{font-size:13px;font-weight:700;color:var(--ink);margin-bottom:2px}
.as-card-sub{font-size:10px;color:var(--ink-faint);margin-bottom:6px;text-transform:uppercase;letter-spacing:.06em}
.as-card-desc{font-size:11px;color:var(--ink-soft);line-height:1.5;margin-bottom:8px}
.as-card-actions{display:flex;gap:6px;flex-wrap:wrap}
.as-card-btn{padding:4px 14px;border-radius:999px;font-size:11px;font-weight:700;border:none;cursor:pointer;font-family:inherit;transition:filter .15s}
.as-card-btn.installed{background:var(--paper3);color:var(--ink-faint)}
.as-card-btn.uninstall{background:rgba(198,40,40,.08);color:#c62828;border:1px solid rgba(198,40,40,.18)}
.as-card-btn.install{background:var(--log-red);color:#fff}
.as-card-btn:hover{filter:brightness(1.1)}
.as-card-btn.open-btn{background:rgba(37,99,235,.12);color:#1d5fc9;border:1px solid rgba(37,99,235,.2)}
.as-banner{background:linear-gradient(135deg,var(--log-red-tint2),rgba(37,99,235,.06));border:1px solid var(--line);border-radius:16px;padding:20px;margin-bottom:14px;display:flex;align-items:center;gap:16px}
.as-banner-ico{font-size:40px}
.as-banner-title{font-size:18px;font-weight:700;color:var(--ink);margin-bottom:4px}
.as-banner-sub{font-size:11px;color:var(--ink-soft)}

/* ── Windy ── */
#av-windy{display:none;position:absolute;inset:0;flex-direction:column}
#av-windy.active{display:flex}
#windyFrame{flex:1;width:100%;border:none}

/* ── Flappy Bird ── */
#flappyGame{display:none;position:absolute;inset:0;z-index:9999;overflow:hidden}
#flappyCanvas{position:absolute;inset:0;width:100%;height:100%}
.flappy-exit{position:absolute;top:10px;right:10px;background:var(--log-red);border:none;color:white;padding:6px 12px;border-radius:8px;cursor:pointer;z-index:10;font-weight:700;font-size:12px;font-family:inherit}
.flappy-score{position:absolute;top:10px;left:0;right:0;text-align:center;color:#fff;font-size:22px;font-weight:700;text-shadow:0 2px 8px rgba(0,0,0,.8);pointer-events:none;z-index:10}
.flappy-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;pointer-events:none;z-index:10}
.flappy-title{font-size:28px;font-weight:700;color:#fff;text-shadow:0 2px 14px rgba(0,0,0,.9)}
.flappy-hint{font-size:13px;color:rgba(255,255,255,.75);text-shadow:0 1px 6px rgba(0,0,0,.8);text-align:center}
.flappy-gameover{font-size:22px;font-weight:700;color:#f87171;text-shadow:0 2px 14px rgba(0,0,0,.9)}

/* ── Delete confirm modal ── */
.delete-modal{position:absolute;inset:0;background:rgba(22,35,60,.35);backdrop-filter:blur(8px);z-index:50;display:flex;align-items:center;justify-content:center;display:none}
.delete-modal.visible{display:flex}
.delete-modal-box{background:var(--paper);border:1px solid var(--line);border-radius:20px;padding:24px 28px;width:240px;text-align:center;box-shadow:0 20px 60px rgba(22,35,60,.2)}
.delete-modal-ico{font-size:36px;margin-bottom:10px}
.delete-modal-title{font-size:14px;font-weight:700;color:var(--ink);margin-bottom:6px}
.delete-modal-sub{font-size:11px;color:var(--ink-soft);margin-bottom:18px;line-height:1.5}
.delete-modal-btns{display:flex;gap:8px}
.delete-modal-btns button{flex:1;padding:10px;border-radius:12px;font-size:12px;font-weight:700;cursor:pointer;border:none;font-family:inherit}

/* ── Disabled app styles ── */
.app.app--disabled .app-ico{filter:grayscale(1) brightness(.9);opacity:.5}
.app.app--disabled .app-lbl{color:var(--ink-faint)}
.app.app--disabled:active{transform:none!important}
.app-disabled-badge{position:absolute;top:-4px;right:-4px;width:18px;height:18px;border-radius:50%;background:var(--paper);border:1.5px solid var(--line);display:flex;align-items:center;justify-content:center;font-size:10px;z-index:5}
.app.app--disabled:not(.jiggling):hover .app-ico{transform:none!important;box-shadow:0 5px 16px rgba(22,35,60,.18),0 1px 3px rgba(22,35,60,.1),inset 0 1px 0 rgba(255,255,255,.25)!important}

/* ── Coming Soon overlay ── */
#comingSoonOverlay{position:absolute;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.92);backdrop-filter:blur(12px);display:none}
#comingSoonOverlay.visible{display:flex}
.cs-box{text-align:center;padding:32px;max-width:320px}
.cs-ico{font-size:52px;margin-bottom:16px;filter:grayscale(1);opacity:.5}
.cs-title{font-size:20px;font-weight:700;color:var(--ink);margin-bottom:8px}
.cs-badge{display:inline-flex;align-items:center;gap:6px;background:rgba(198,40,40,.08);border:1px solid rgba(198,40,40,.2);color:#c62828;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:4px 12px;border-radius:999px;margin-bottom:16px}
.cs-body{font-size:12px;color:var(--ink-soft);line-height:1.7;margin-bottom:24px}
.cs-board{display:flex;align-items:center;gap:8px;background:var(--paper2);border:1px solid var(--line);border-radius:12px;padding:12px 16px;margin-bottom:20px;text-align:left}
.cs-board-ico{font-size:20px;flex-shrink:0}
.cs-board-text{font-size:11px;color:var(--ink-soft);line-height:1.5}
.cs-board-text strong{color:var(--ink);display:block;margin-bottom:2px}
.as-disabled-badge{display:inline-flex;align-items:center;gap:4px;background:rgba(198,40,40,.08);border:1px solid rgba(198,40,40,.18);color:#c62828;font-size:9px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:2px 8px;border-radius:999px;margin-bottom:6px}

/* ══════════════════════════════════════════════════
   V2 TECH LOG — airBaltic-style structured flight-log form
══════════════════════════════════════════════════ */
.tl-section{background:var(--paper);border:1px solid var(--line);border-top:3px solid var(--log-red);border-radius:14px;padding:18px 20px;margin-bottom:14px}
.tl-section-title{font-size:14px;font-weight:700;color:var(--ink);margin-bottom:16px;display:flex;align-items:center;gap:8px}
.tl-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px}
.tl-grid.tl-grid-2{grid-template-columns:1fr 1fr}
@media(max-width:700px){.tl-grid,.tl-grid.tl-grid-2{grid-template-columns:1fr 1fr}}
.tl-field label{display:block;font-size:10px;font-weight:700;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.08em;margin-bottom:6px}
.tl-input-group{display:flex;align-items:stretch;border-radius:10px;overflow:hidden;border:1px solid var(--line2)}
.tl-input-group:focus-within{border-color:var(--log-red)}
.tl-tag{background:var(--log-red-tint);color:var(--log-red);font-weight:800;font-size:12px;display:flex;align-items:center;padding:0 10px;flex-shrink:0;white-space:nowrap}
.tl-input-group input{border:none;flex:1;min-width:0;padding:9px 12px;font-size:13px;color:var(--ink);outline:none;font-family:inherit;background:var(--paper)}
.tl-plain-input{width:100%;border:1px solid var(--line2);border-radius:10px;padding:9px 12px;font-size:13px;color:var(--ink);outline:none;font-family:inherit;background:var(--paper);transition:border-color .15s}
.tl-plain-input:focus{border-color:var(--log-red)}
.tl-computed{background:var(--log-red-tint);border-radius:12px;padding:12px 16px}
.tl-computed label{display:block;font-size:10px;font-weight:700;color:var(--log-red);text-transform:uppercase;letter-spacing:.08em;margin-bottom:4px}
.tl-computed-val{font-size:20px;font-weight:700;color:var(--ink);font-family:monospace;letter-spacing:.02em}
.tl-toggle-row{display:flex;align-items:center;justify-content:space-between}
.tl-toggle-label{font-size:14px;font-weight:700;color:var(--ink)}
.tl-switch{position:relative;width:46px;height:26px;flex-shrink:0}
.tl-switch input{opacity:0;width:0;height:0;position:absolute}
.tl-switch-track{position:absolute;inset:0;background:var(--paper3);border:1px solid var(--line2);border-radius:999px;cursor:pointer;transition:all .18s}
.tl-switch-track::after{content:'';position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 4px rgba(22,35,60,.3);transition:all .18s}
.tl-switch input:checked + .tl-switch-track{background:var(--log-red);border-color:var(--log-red)}
.tl-switch input:checked + .tl-switch-track::after{transform:translateX(20px)}
.tl-sign-row{display:flex;gap:10px;align-items:stretch}
.tl-sign-row .tl-plain-input{flex:1}
.tl-sign-btn{background:var(--surface-solid);color:#fff;border:none;border-radius:10px;padding:0 22px;font-weight:700;font-size:13px;cursor:pointer;transition:filter .15s;white-space:nowrap}
.tl-sign-btn:hover{filter:brightness(1.15)}
.tl-sign-btn.signed{background:#178a4c}
.tl-send-btn{background:var(--log-red);color:#fff;border:none;border-radius:12px;padding:14px 28px;font-weight:700;font-size:14px;cursor:pointer;box-shadow:0 6px 20px rgba(200,16,46,.3);transition:filter .15s,transform .1s;float:right}
.tl-send-btn:hover{filter:brightness(1.08)}
.tl-send-btn:active{transform:scale(.97)}
.tl-send-btn:disabled{opacity:.5;cursor:not-allowed;filter:none}
.tl-history-item{background:var(--paper);border:1px solid var(--line);border-left:3px solid var(--log-red);border-radius:10px;padding:12px 14px;margin-bottom:8px}
.a-badge{display:inline-flex;align-items:center;padding:2px 9px;border-radius:999px;font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}
.a-badge-blue{background:rgba(37,99,235,.1);color:#1d5fc9}
.a-badge-amber{background:rgba(217,119,6,.1);color:#b8860b}
.a-badge-red{background:rgba(200,16,46,.1);color:var(--log-red)}
.a-badge-green{background:rgba(23,138,76,.1);color:#178a4c}

/* ── Tech Log step wizard ── */
.tl-steps{display:flex;align-items:center;justify-content:center;gap:0;margin-bottom:18px;padding:0 8px}
.tl-step-dot{display:flex;flex-direction:column;align-items:center;gap:5px;flex-shrink:0}
.tl-step-dot span{width:28px;height:28px;border-radius:50%;background:var(--paper3);border:1.5px solid var(--line2);color:var(--ink-faint);font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;transition:all .2s}
.tl-step-dot label{font-size:9px;font-weight:700;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.05em}
.tl-step-dot.active span{background:var(--log-red);border-color:var(--log-red);color:#fff}
.tl-step-dot.active label{color:var(--log-red)}
.tl-step-dot.done span{background:#178a4c;border-color:#178a4c;color:#fff}
.tl-step-line{flex:1;height:2px;background:var(--line2);margin:0 6px;margin-bottom:16px;max-width:60px}
.tl-step{display:none}
.tl-step.active{display:block}
.tl-next-btn,.tl-back-btn{border:none;border-radius:12px;padding:12px 22px;font-weight:700;font-size:13px;cursor:pointer;transition:filter .15s,transform .1s}
.tl-next-btn{background:var(--surface-solid);color:#fff;float:right}
.tl-back-btn{background:var(--paper3);color:var(--ink-soft);float:left}
.tl-next-btn:hover,.tl-back-btn:hover{filter:brightness(1.1)}
.tl-chip-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.tl-chip{background:var(--paper2);border:1px solid var(--line2);border-radius:999px;padding:7px 14px;font-size:11.5px;font-weight:600;color:var(--ink-soft);cursor:pointer;transition:all .15s;font-family:inherit}
.tl-chip:hover{background:var(--log-red-tint);border-color:var(--log-red);color:var(--log-red)}

/* ── Delay Report — route swap, stepper, cause-code chips ── */
.dr-route-row{display:flex;align-items:flex-end;gap:8px}
.dr-swap-btn{flex-shrink:0;width:36px;height:36px;border-radius:10px;border:1px solid var(--line2);background:var(--paper2);color:var(--ink-soft);font-size:16px;cursor:pointer;transition:all .15s;margin-bottom:0}
.dr-swap-btn:hover{background:var(--log-red-tint);border-color:var(--log-red);color:var(--log-red)}
.dr-stepper{display:flex;align-items:center;justify-content:center;gap:24px}
.dr-stepper-btn{width:52px;height:52px;border-radius:50%;border:none;background:var(--log-red-tint);color:var(--log-red);font-size:26px;font-weight:700;cursor:pointer;transition:all .15s;line-height:1}
.dr-stepper-btn:hover{background:var(--log-red);color:#fff}
.dr-stepper-val{text-align:center;min-width:90px}
.dr-stepper-val span{display:block;font-size:36px;font-weight:700;color:var(--ink);font-family:monospace;line-height:1}
.dr-stepper-val label{font-size:10px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.08em}
.dr-code-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}
.dr-code-chip{background:var(--paper2);border:1px solid var(--line2);border-radius:10px;padding:10px 12px;font-size:12px;font-weight:600;color:var(--ink-soft);cursor:pointer;transition:all .15s;text-align:left;font-family:inherit}
.dr-code-chip:hover{border-color:var(--log-red)}
.dr-code-chip.active{background:var(--log-red-tint);border-color:var(--log-red);color:var(--log-red)}
.dr-code-chip .dr-code-num{font-family:monospace;font-weight:700;margin-right:4px}

/* ── Plane Swipe ── */
.ps-stack{position:relative;width:100%;max-width:340px;height:400px;margin:16px 0}
.ps-card{position:absolute;inset:0;background:var(--paper);border:1px solid var(--line);border-radius:20px;box-shadow:0 12px 30px rgba(22,35,60,.18);display:flex;flex-direction:column;overflow:hidden;transition:transform .3s ease,opacity .3s ease;touch-action:none;cursor:grab}
.ps-card:active{cursor:grabbing}
.ps-stamp{position:absolute;top:20px;z-index:5;font-size:26px;font-weight:800;letter-spacing:.1em;padding:6px 14px;border-radius:8px;border:3px solid;opacity:0;pointer-events:none;transition:opacity .05s linear}
.ps-stamp--like{left:20px;color:#4ade80;border-color:#4ade80;transform:rotate(-18deg)}
.ps-stamp--pass{right:20px;color:#f87171;border-color:#f87171;transform:rotate(18deg)}
.ps-card.swiping-like{transform:translateX(120%) rotate(18deg);opacity:0}
.ps-card.swiping-pass{transform:translateX(-120%) rotate(-18deg);opacity:0}
.ps-card-img{flex:1;display:flex;align-items:center;justify-content:center;font-size:72px;background:linear-gradient(160deg,var(--log-red-tint),transparent);overflow:hidden;position:relative}
.ps-card-img-bg{position:absolute;inset:0;object-fit:cover;filter:blur(18px) brightness(.55) saturate(1.1);transform:scale(1.15);z-index:0}
.ps-card-img img.ps-photo-main{position:relative;width:100%;height:100%;object-fit:contain;z-index:1}
.ps-card-credit{font-size:9px;color:var(--ink-faint);margin-top:8px}
.ps-card-credit a{color:var(--log-red)}
.ps-card-body{padding:16px 18px;border-top:1px solid var(--line)}
.ps-card-name{font-size:16px;font-weight:700;color:var(--ink)}
.ps-card-type{font-size:11px;color:var(--log-red);font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}
.ps-card-fact{font-size:12px;color:var(--ink-soft);line-height:1.6}
.ps-card-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(70px,1fr));gap:8px;margin-top:10px}
.ps-stat{background:var(--paper2);border:1px solid var(--line);border-radius:9px;padding:6px 4px;text-align:center}
.ps-stat-val{font-size:14px;font-weight:700;color:var(--log-red)}
.ps-stat-lbl{font-size:9px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.05em;margin-top:2px}
.ps-actions{display:flex;gap:24px;margin-top:8px}
.ps-btn{width:56px;height:56px;border-radius:50%;border:none;font-size:22px;cursor:pointer;box-shadow:0 6px 18px rgba(22,35,60,.18);transition:transform .1s}
.ps-btn:active{transform:scale(.9)}
.ps-btn--pass{background:var(--paper);color:var(--ink-faint);border:1px solid var(--line2)}
.ps-btn--like{background:var(--log-red);color:#fff}
.ps-score{margin-top:14px;font-size:11px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.06em}

/* ── Baggage Tetris ── */
.bt-hud{display:flex;gap:20px;padding:10px 16px;align-items:center}
.bt-hud-item{display:flex;flex-direction:column;align-items:center;gap:2px}
.bt-hud-item label{font-size:9px;color:rgba(255,255,255,.4);text-transform:uppercase;letter-spacing:.08em}
.bt-hud-item span{font-size:18px;font-weight:700;color:#fff;font-family:monospace}
#btNextCanvas{background:rgba(255,255,255,.05);border-radius:8px}
.bt-canvas{max-width:100%;image-rendering:pixelated}
.bt-controls{display:flex;gap:10px;padding:10px 16px calc(10px + env(safe-area-inset-bottom));flex-shrink:0}
.bt-ctrl-btn{flex:1;height:46px;border-radius:12px;border:1px solid rgba(255,255,255,.15);background:rgba(255,255,255,.08);color:#fff;font-size:18px;cursor:pointer;user-select:none}
.bt-ctrl-btn:active{background:rgba(255,255,255,.18)}
.bt-overlay{position:absolute;inset:0;background:rgba(12,18,32,.9);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center;padding:24px;cursor:pointer}
.bt-overlay-title{font-size:26px;font-weight:700;color:#fff}
.bt-overlay-hint{font-size:13px;color:rgba(255,255,255,.7);line-height:1.6}
