/* ============================================================
   Deengen app shell: PWA chrome, mobile tab bar, command palette,
   sheets, toasts, motion. Loaded on every page after deengen.css.
   ============================================================ */
:root{
  --dg-tab-h:60px;
  --dg-safe-t:env(safe-area-inset-top,0px);
  --dg-safe-b:env(safe-area-inset-bottom,0px);
  --dg-ease:cubic-bezier(.2,.7,.2,1);
  --dg-spring:cubic-bezier(.32,.72,0,1);
}
html{-webkit-tap-highlight-color:transparent}
a,button,summary,label,[role=button]{-webkit-tap-highlight-color:transparent;touch-action:manipulation}

/* ---------- cross-document view transitions ---------- */
@view-transition{navigation:auto}
::view-transition-old(root){animation:dgvt-out .14s ease-in both}
::view-transition-new(root){animation:dgvt-in .26s var(--dg-ease) both}
@keyframes dgvt-out{to{opacity:0}}
@keyframes dgvt-in{from{opacity:0;transform:translateY(8px)}}
header.site{view-transition-name:dg-header}
.dg-tabbar{view-transition-name:dg-tabbar}
::view-transition-old(dg-header),::view-transition-old(dg-tabbar){animation:none;opacity:0}
::view-transition-new(dg-header),::view-transition-new(dg-tabbar){animation:none}
::view-transition-group(dg-header),::view-transition-group(dg-tabbar){animation-duration:0s}
@media (prefers-reduced-motion:reduce){
  @view-transition{navigation:none}
  ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}
}

/* ---------- press feedback ---------- */
.btn:active{transform:scale(.97);transition-duration:.08s}
a.card:active,.dg-more-link:active,.dg-more-me:active{transform:scale(.985)}
.dg-more-link,.dg-more-me{transition:transform .12s ease,border-color .2s,background .2s}

/* ---------- header additions (desktop) ---------- */
.dg-ptitle{display:none}
.dg-search-btn{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 6px 0 10px;background:var(--panel);border:1px solid var(--line-2);border-radius:8px;color:var(--muted);font:500 13px/1 'IBM Plex Mono',monospace;cursor:pointer;transition:border-color .2s,color .2s,transform .12s}
.dg-search-btn:hover{border-color:var(--mint);color:var(--text)}
.dg-search-btn:active{transform:scale(.95)}
.dg-search-btn svg{width:16px;height:16px;flex-shrink:0}
.dg-search-lbl{display:none}
.dg-kbd{font:500 10.5px/1.5 'IBM Plex Mono',monospace;color:var(--faint);border:1px solid var(--line-2);background:var(--panel-2);border-radius:5px;padding:1px 0;min-width:44px;text-align:center;letter-spacing:.02em}
.dg-me-btn,.dg-more-btn{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;border-radius:50%}
.dg-more-btn{display:none;background:none;border:0;padding:0;cursor:pointer;color:inherit}
.dg-av{width:34px;height:34px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--panel-2);border:1px solid var(--line-2);color:var(--muted);font:600 11.5px/1 'IBM Plex Mono',monospace;letter-spacing:.02em;transition:border-color .2s,color .2s,transform .12s;flex-shrink:0}
.dg-av svg{width:17px;height:17px}
.dg-av.in{color:var(--mint);border-color:rgba(105,240,192,.38);background:rgba(105,240,192,.08)}
.dg-me-btn:hover .dg-av,.dg-more-btn:hover .dg-av{border-color:var(--mint);color:var(--mint)}
.dg-me-btn:active .dg-av,.dg-more-btn:active .dg-av{transform:scale(.92)}
header.site nav{gap:14px}
header.site .navlinks{gap:17px}
header.site .navlinks a{font-size:13.5px}
header.site .navcta{gap:8px}
html[lang=fr] header.site .navlinks,html[lang=tr] header.site .navlinks,html[lang=de] header.site .navlinks{gap:12px}
html[lang=fr] header.site .navlinks a,html[lang=tr] header.site .navlinks a,html[lang=de] header.site .navlinks a{font-size:13px}
html[lang=fr] header.site .navlinks{gap:9px}
html[lang=fr] header.site nav{gap:10px}html[lang=fr] header.site .navlinks a{font-size:12.5px}
/* collapse the text nav earlier than the base CSS so long translations never collide */
@media (min-width:821px) and (max-width:1140px){
  header.site .navlinks,header.site .navcta .btn-ghost.hide-sm{display:none}
  header.site .menu-toggle{display:flex}
}

/* app layout top bar (dashboard, screener, planner, portfolio, briefs, academy) */
.dg-tb-actions{display:flex;align-items:center;gap:8px}
.topbar .tb-right{gap:10px}

/* ---------- mobile tab bar ---------- */
.dg-tabbar{display:none;position:fixed;left:0;right:0;bottom:0;z-index:70;height:calc(var(--dg-tab-h) + var(--dg-safe-b));padding:0 4px var(--dg-safe-b);background:rgba(8,11,13,.93);-webkit-backdrop-filter:blur(20px) saturate(160%);backdrop-filter:blur(20px) saturate(160%);border-top:1px solid var(--line);justify-content:space-around;align-items:stretch}
.dg-tab{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;color:#7A878E;font:500 10.5px/1 'IBM Plex Mono',monospace;letter-spacing:.02em;position:relative;transition:color .15s;user-select:none;-webkit-user-select:none}
.dg-tab svg{width:23px;height:23px;transition:transform .2s var(--dg-spring)}
.dg-tab span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 2px}
.dg-tab.on{color:var(--mint)}
.dg-tab.on svg{filter:drop-shadow(0 0 6px rgba(105,240,192,.35))}
.dg-tab.on::before{content:"";position:absolute;top:-1px;left:50%;width:24px;height:2px;margin-left:-12px;border-radius:0 0 2px 2px;background:var(--mint);box-shadow:0 0 10px rgba(105,240,192,.75)}
.dg-tab:active svg{transform:scale(.84)}
.dg-tab:focus-visible{outline:2px solid var(--mint);outline-offset:-4px;border-radius:10px}

/* ---------- mobile chrome (<= 820px) ---------- */
@media (max-width:820px){
  body[data-dg-shell~=tabs]{padding-bottom:calc(var(--dg-tab-h) + var(--dg-safe-b))}
  body[data-dg-shell~=tabs] .dg-tabbar{display:flex}
  html.dg-kb .dg-tabbar{display:none!important}
  html.dg-kb body[data-dg-shell~=tabs]{padding-bottom:0}
  .sticky-cta{display:none!important}
  .menu-toggle,.mm,.mm.open{display:none!important}

  header.site{padding-top:var(--dg-safe-t)}
  header.site .wrap{padding:0 12px 0 16px}
  header.site nav{height:54px;position:relative;gap:8px}
  header.site .navcta{gap:8px}
  header.site .navcta > .btn,header.site .navcta > .langsel,header.site .dg-me-btn{display:none!important}
  header.site .brand .mark{width:28px;height:28px}
  header.site[data-dg-titled] .brand .wordmark{display:none!important}
  .dg-ptitle{display:block;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);max-width:calc(100% - 200px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:600 16px/1.2 'Inter',system-ui,sans-serif;letter-spacing:-.015em;color:var(--text);pointer-events:none}
  .dg-search-btn{width:38px;height:38px;padding:0;justify-content:center;border-radius:50%;background:var(--panel)}
  .dg-search-btn svg{width:18px;height:18px}
  .dg-search-lbl,.dg-kbd{display:none!important}
  .dg-more-btn{display:inline-flex}
  .dg-av{width:38px;height:38px}

  .topbar{padding-top:var(--dg-safe-t);height:auto;min-height:calc(56px + var(--dg-safe-t))}
  .topbar .tb-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
  .topbar > div:first-child{min-width:0}
  .side.open{z-index:95;padding-bottom:calc(20px + var(--dg-safe-b))}

  footer.site{margin-top:56px;padding-bottom:24px}
  .demo-tag{bottom:calc(var(--dg-tab-h) + var(--dg-safe-b) + 10px)}
  body[data-dg-shell~=tabs] .consentbar{bottom:calc(var(--dg-tab-h) + var(--dg-safe-b));border-bottom:1px solid var(--line)}
}
/* phones: long translated words must wrap instead of widening the page
   (a wider layout viewport would push the fixed tab bar off-screen) */
@media (max-width:820px){
  .split > *,.grid > *,.g2 > *,.g3 > *{min-width:0}
  h1,h2,h3,h4,.lead{overflow-wrap:break-word;hyphens:auto;-webkit-hyphens:auto}
  .btn{max-width:100%}
  .btn:not(.btn-sm){white-space:normal;text-align:center;line-height:1.3}
}
.appbody .grid > *,.appbody .metrics > *{min-width:0}
.appbody .metric{container-type:inline-size}
.appbody .metric .v{font-size:clamp(16px,21cqi,28px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* member-app pages set desktop grids inline; stack them on phones */
@media (max-width:820px){
  .appbody .grid[style*="grid-template-columns"]{grid-template-columns:1fr!important}
  .appbody .metrics[style*="grid-template-columns"]{grid-template-columns:1fr 1fr!important}
  .appbody .grid > *,.appbody .metrics > *{min-width:0}
  .appbody h3 > span[style*="display:flex"]{flex-wrap:wrap}
}
@media (max-width:620px){
  .topbar{padding-left:14px;padding-right:12px}
  .topbar .tb-right > .btn,.topbar .tb-right > a.btn{display:none}
}

/* ---------- installed app (standalone) ---------- */
@media (display-mode:standalone){
  footer.site .fgrid > :not(.fcol-legal){display:none}
  footer.site .fgrid{grid-template-columns:1fr!important;margin-bottom:18px}
  footer.site{margin-top:40px;padding-top:26px}
  .sticky-cta{display:none!important}
}
html.dg-standalone footer.site .fgrid > :not(.fcol-legal){display:none}
html.dg-standalone footer.site .fgrid{grid-template-columns:1fr!important;margin-bottom:18px}
html.dg-standalone .sticky-cta{display:none!important}
footer.site .fcol-legal{min-width:0}

/* long marketing footer: skip rendering work until it scrolls near */
footer.site{content-visibility:auto;contain-intrinsic-size:auto 720px}

/* ---------- toasts ---------- */
.dg-toasts{position:fixed;left:0;right:0;bottom:calc(24px + var(--dg-safe-b));z-index:140;display:flex;flex-direction:column-reverse;align-items:center;gap:8px;pointer-events:none;padding:0 16px}
@media (max-width:820px){
  body[data-dg-shell~=tabs] .dg-toasts{bottom:calc(var(--dg-tab-h) + var(--dg-safe-b) + 12px)}
}
.dg-toast{pointer-events:auto;display:flex;align-items:center;gap:12px;width:max-content;max-width:min(440px,100%);background:rgba(20,27,33,.97);border:1px solid var(--line-2);border-radius:12px;padding:11px 11px 11px 14px;box-shadow:0 14px 36px rgba(0,0,0,.5);font-size:14px;line-height:1.4;color:var(--text);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transform:translateY(14px) scale(.97);opacity:0;transition:transform .32s var(--dg-spring),opacity .2s ease}
.dg-toast.in{transform:none;opacity:1}
.dg-toast.out{opacity:0;transform:translateY(8px) scale(.97);transition-duration:.18s}
.dg-toast .dg-tdot{width:8px;height:8px;border-radius:50%;background:var(--cyan);box-shadow:0 0 8px rgba(55,212,226,.6);flex-shrink:0}
.dg-toast.ok .dg-tdot{background:var(--mint);box-shadow:0 0 8px rgba(105,240,192,.7)}
.dg-toast.warn .dg-tdot{background:var(--amber);box-shadow:0 0 8px rgba(242,196,90,.6)}
.dg-toast .dg-tmsg{flex:1;min-width:0}
.dg-toast .dg-tact{font:600 12.5px/1 'IBM Plex Mono',monospace;color:var(--mint);background:rgba(105,240,192,.08);border:1px solid rgba(105,240,192,.28);border-radius:8px;padding:8px 11px;white-space:nowrap;cursor:pointer;transition:transform .12s,background .2s}
.dg-toast .dg-tact:hover{background:rgba(105,240,192,.14)}
.dg-toast .dg-tact:active{transform:scale(.95)}
.dg-toast .dg-tx{background:none;border:0;color:var(--faint);cursor:pointer;width:26px;height:26px;display:flex;align-items:center;justify-content:center;border-radius:6px;flex-shrink:0}
.dg-toast .dg-tx svg{width:14px;height:14px}

/* ---------- sheet (bottom sheet on mobile, modal from 720px) ---------- */
.dg-sheet-root{position:fixed;inset:0;z-index:120;display:flex;align-items:flex-end;justify-content:center;visibility:hidden;transition:visibility 0s linear .4s}
.dg-sheet-root.open{visibility:visible;transition-delay:0s}
.dg-sheet-bg{position:absolute;inset:0;background:rgba(2,4,5,.64);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);opacity:0;transition:opacity .28s ease}
.dg-sheet-root.open .dg-sheet-bg{opacity:1}
.dg-sheet{position:relative;width:100%;max-height:88vh;max-height:88dvh;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line-2);border-bottom:0;border-radius:20px 20px 0 0;box-shadow:0 -24px 60px rgba(0,0,0,.5);transform:translateY(100%);transition:transform .4s var(--dg-spring);padding-bottom:var(--dg-safe-b);outline:none;will-change:transform}
.dg-sheet-root.open .dg-sheet{transform:none}
.dg-sheet.dragging{transition:none}
.dg-sheet-grab{padding:10px 0 2px;display:flex;justify-content:center;cursor:grab;touch-action:none;flex-shrink:0}
.dg-sheet-grab i{width:38px;height:4px;border-radius:4px;background:var(--line-2)}
.dg-sheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 16px 8px 20px;touch-action:none;flex-shrink:0;min-height:44px}
.dg-sheet-title{font-weight:600;font-size:16.5px;letter-spacing:-.015em}
.dg-sheet-x{width:32px;height:32px;border-radius:50%;background:var(--panel-2);border:1px solid var(--line-2);color:var(--muted);display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;margin-left:auto;transition:transform .12s,color .2s}
.dg-sheet-x:hover{color:var(--text)}
.dg-sheet-x:active{transform:scale(.9)}
.dg-sheet-x svg{width:15px;height:15px}
.dg-sheet-body{overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:4px 20px 24px}
.dg-sheet.notitle .dg-sheet-head{position:absolute;top:10px;right:10px;padding:0;min-height:0;z-index:2}
.dg-sheet.notitle .dg-sheet-title{display:none}
.dg-sheet.notitle .dg-sheet-body{padding-top:12px}
@media (max-width:719px){.dg-sheet.notitle .dg-sheet-head{display:none}}
.dg-sheet-body p{color:var(--muted);font-size:14.5px;line-height:1.65}
@media (min-width:720px){
  .dg-sheet-root{align-items:center;padding:24px}
  .dg-sheet{max-width:520px;border-radius:16px;border-bottom:1px solid var(--line-2);box-shadow:0 30px 80px rgba(0,0,0,.6);transform:translateY(12px) scale(.97);opacity:0;transition:transform .26s var(--dg-ease),opacity .2s ease;padding-bottom:0;max-height:min(80vh,760px)}
  .dg-sheet-root.open .dg-sheet{opacity:1;transform:none}
  .dg-sheet-grab{display:none}
  .dg-sheet-head{padding:16px 16px 8px 22px}
  .dg-sheet-body{padding:4px 22px 24px}
}
html.dg-lock,html.dg-lock body{overflow:hidden}

/* ---------- "more" sheet content ---------- */
.dg-more-src{display:none!important}
.dg-more-me{display:flex;align-items:center;gap:14px;padding:14px;border:1px solid var(--line-2);border-radius:14px;background:var(--panel-2);color:var(--text)}
.dg-more-me:hover{border-color:rgba(105,240,192,.35)}
.dg-av-lg{width:46px!important;height:46px!important}
.dg-av-lg svg{width:21px;height:21px}
.dg-more-me-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.dg-more-me-t b{font-size:16px;font-weight:600}
.dg-more-me-t small{font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dg-more-me > svg{width:18px;height:18px;color:var(--faint);flex-shrink:0}
.dg-more-auth{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
.dg-more-auth .btn{padding:11px 14px}
.dg-more-auth[hidden]{display:none}
.dg-more-h{font:500 10.5px/1 'IBM Plex Mono',monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);margin:24px 2px 10px}
.dg-more-h[hidden]{display:none}
.dg-more-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.dg-more-link{display:flex;align-items:center;gap:10px;padding:12px;border-radius:11px;background:var(--bg);border:1px solid var(--line);font-size:14px;color:var(--text);min-height:50px;line-height:1.25}
.dg-more-link:hover{border-color:var(--line-2);background:#080B0D}
.dg-more-link svg{width:18px;height:18px;color:var(--mint);flex-shrink:0}
.dg-more-lang{display:flex;flex-wrap:wrap;gap:6px}
.dg-more-lang a{font:500 12.5px/1 'IBM Plex Mono',monospace;padding:10px 12px;border-radius:9px;border:1px solid var(--line-2);color:var(--muted);background:var(--bg);min-width:46px;text-align:center}
.dg-more-lang a.current{color:var(--mint);border-color:rgba(105,240,192,.4);background:rgba(105,240,192,.07)}
.dg-more-install{margin-top:20px;width:100%;display:flex;align-items:center;justify-content:center;gap:10px;padding:14px;border-radius:12px;border:1px dashed rgba(105,240,192,.42);background:rgba(105,240,192,.05);color:var(--mint);font:600 13.5px/1 'IBM Plex Mono',monospace;cursor:pointer;transition:transform .12s,background .2s}
.dg-more-install:hover{background:rgba(105,240,192,.09)}
.dg-more-install:active{transform:scale(.98)}
.dg-more-install svg{width:18px;height:18px}
.dg-more-install[hidden]{display:none}
.dg-more-legal{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:24px;font-size:12.5px}
.dg-more-legal a{color:var(--muted)}
.dg-more-legal a:hover{color:var(--mint)}
.dg-more-disc{font-size:11.5px!important;color:var(--faint)!important;margin-top:10px;line-height:1.55}

/* install instructions (iOS) */
.dg-steps{list-style:none;display:flex;flex-direction:column;gap:10px;margin-top:6px;counter-reset:dgs}
.dg-steps li{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--bg);font-size:14.5px;color:var(--text);line-height:1.5}
.dg-steps li::before{counter-increment:dgs;content:counter(dgs);font:600 12px/24px 'IBM Plex Mono',monospace;width:24px;height:24px;border-radius:50%;text-align:center;background:rgba(105,240,192,.1);color:var(--mint);flex-shrink:0}
.dg-steps svg{width:17px;height:17px;vertical-align:-3px;color:var(--cyan)}
.dg-install-hero{display:flex;align-items:center;gap:14px;margin-bottom:14px}
.dg-install-hero img{width:56px;height:56px;border-radius:13px;border:1px solid var(--line-2)}
.dg-install-hero b{display:block;font-size:16px}
.dg-install-hero span{display:block;font-size:13px;line-height:1.45;color:var(--muted);margin-top:3px}

/* ---------- command palette ---------- */
.dg-pal-root{position:fixed;inset:0;z-index:130;display:none}
.dg-pal-root.open{display:block}
.dg-pal-bg{position:absolute;inset:0;background:rgba(2,4,5,.68);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:dgfade .18s ease both}
@keyframes dgfade{from{opacity:0}}
.dg-pal{position:absolute;left:50%;top:11vh;width:min(640px,calc(100vw - 32px));transform:translateX(-50%);background:var(--panel);border:1px solid var(--line-2);border-radius:14px;box-shadow:0 30px 90px rgba(0,0,0,.65),0 0 0 1px rgba(105,240,192,.05);display:flex;flex-direction:column;max-height:min(72vh,640px);overflow:hidden;animation:dgpal-in .22s var(--dg-ease) both}
@keyframes dgpal-in{from{opacity:0;transform:translateX(-50%) translateY(-8px) scale(.98)}}
@keyframes dgpal-up{from{opacity:0;transform:translateY(28px)}}
.dg-pal-head{display:flex;align-items:center;gap:10px;padding:0 12px 0 16px;border-bottom:1px solid var(--line);height:58px;flex-shrink:0}
.dg-pal-head > svg{width:19px;height:19px;color:var(--mint);flex-shrink:0}
.dg-pal-in{flex:1;min-width:0;background:none;border:0;outline:0;color:var(--text);font:400 16.5px/1.2 'Inter',system-ui,sans-serif;height:100%;-webkit-appearance:none;appearance:none}
.dg-pal-in::placeholder{color:var(--faint)}
.dg-pal-in::-webkit-search-cancel-button{display:none}
.dg-pal-esc{font:500 11px/1 'IBM Plex Mono',monospace;color:var(--faint);border:1px solid var(--line-2);border-radius:6px;padding:5px 7px;background:var(--panel-2);cursor:pointer}
.dg-pal-cancel{display:none;background:none;border:0;color:var(--mint);font:500 15px/1 'Inter',system-ui,sans-serif;cursor:pointer;padding:8px 2px 8px 6px}
.dg-pal-list{overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:4px 8px 10px;flex:1;min-height:0}
.dg-pal-grp{font:500 10.5px/1 'IBM Plex Mono',monospace;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);padding:14px 10px 7px}
.dg-pal-it{display:flex;align-items:center;gap:12px;padding:8px 10px;border-radius:9px;cursor:pointer;color:var(--text);position:relative;min-height:50px}
.dg-pal-it.act{background:var(--panel-2);box-shadow:inset 0 0 0 1px var(--line-2)}
.dg-pal-it.act::before{content:"";position:absolute;left:-8px;top:12px;bottom:12px;width:2px;border-radius:2px;background:var(--mint);box-shadow:0 0 8px rgba(105,240,192,.7)}
.dg-pal-ic{width:34px;height:34px;border-radius:9px;background:var(--panel-2);border:1px solid var(--line-2);display:flex;align-items:center;justify-content:center;color:var(--muted);flex-shrink:0;font:600 10px/1 'IBM Plex Mono',monospace;letter-spacing:-.02em;overflow:hidden}
.dg-pal-it.act .dg-pal-ic{border-color:rgba(105,240,192,.3);color:var(--mint)}
.dg-pal-ic svg{width:16px;height:16px}
.dg-pal-ic.sym{color:var(--text);font-size:10.5px}
.dg-pal-tx{flex:1;min-width:0}
.dg-pal-t{font-size:14.5px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dg-pal-t mark{background:none;color:var(--mint)}
.dg-pal-t .sym{font-family:'IBM Plex Mono',monospace;font-weight:600;margin-right:6px}
.dg-pal-s{font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.dg-pal-it.term .dg-pal-s{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.45}
.dg-pal-chip{display:inline-flex;align-items:center;gap:6px;font:500 10.5px/1 'IBM Plex Mono',monospace;padding:5px 8px;border-radius:6px;border:1px solid var(--line-2);color:var(--muted);white-space:nowrap;flex-shrink:0}
.dg-pal-chip i{width:6px;height:6px;border-radius:50%;background:currentColor}
.dg-pal-chip.pass{color:var(--mint);border-color:rgba(105,240,192,.3);background:rgba(105,240,192,.06)}
.dg-pal-chip.review{color:var(--amber);border-color:rgba(242,196,90,.3);background:rgba(242,196,90,.06)}
.dg-pal-chip.fail{color:var(--crimson);border-color:rgba(255,111,111,.3);background:rgba(255,111,111,.06)}
.dg-pal-star{color:var(--amber);font-size:12px;margin-left:4px}
.dg-pal-go{width:16px;height:16px;color:var(--faint);flex-shrink:0;opacity:0;transition:opacity .15s}
.dg-pal-it.act .dg-pal-go{opacity:1}
@media (hover:none){
  .dg-pal-root:not(.kbd) .dg-pal-it.act{background:none;box-shadow:none}
  .dg-pal-root:not(.kbd) .dg-pal-it.act::before{display:none}
  .dg-pal-root:not(.kbd) .dg-pal-it.act .dg-pal-ic{border-color:var(--line-2);color:var(--muted)}
  .dg-pal-root:not(.kbd) .dg-pal-go{opacity:0}
  .dg-pal-it:active{background:var(--panel-2)}
}
.dg-pal-empty{padding:34px 16px;text-align:center;color:var(--muted);font-size:14px;line-height:1.6}
.dg-pal-empty b{color:var(--text)}
.dg-pal-foot{display:flex;gap:16px;align-items:center;padding:10px 16px;border-top:1px solid var(--line);font:400 11px/1 'IBM Plex Mono',monospace;color:var(--faint);flex-shrink:0}
.dg-pal-foot kbd{font:500 10.5px/1 'IBM Plex Mono',monospace;border:1px solid var(--line-2);background:var(--panel-2);border-radius:4px;padding:3px 5px;margin-right:5px;color:var(--muted)}
.dg-pal-foot .r{margin-left:auto}
.dg-pal-clear{background:none;border:0;color:var(--faint);font:500 10.5px/1 'IBM Plex Mono',monospace;cursor:pointer;float:right;letter-spacing:.06em;text-transform:uppercase;padding:0}
.dg-pal-clear:hover{color:var(--mint)}
@media (max-width:720px){
  .dg-pal{left:0;top:0;width:100%;height:100%;max-height:none;transform:none;border-radius:0;border:0;padding-top:var(--dg-safe-t);animation:dgpal-up .28s var(--dg-spring) both}
  .dg-pal-head{height:60px;padding:0 10px 0 16px}
  .dg-pal-esc{display:none}
  .dg-pal-cancel{display:block}
  .dg-pal-foot{display:none}
  .dg-pal-list{padding-bottom:calc(16px + var(--dg-safe-b))}
  .dg-pal-in{font-size:17px}
  .dg-pal-it{min-height:54px}
}

/* ---------- skeleton utility ---------- */
.skel{position:relative;overflow:hidden;background:var(--panel-2);border-radius:6px;color:transparent!important;pointer-events:none}
.skel *{visibility:hidden}
.skel::after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,rgba(230,237,239,.05),transparent);animation:dgskel 1.4s ease-in-out infinite}
.skel-line{display:block;height:12px;margin:8px 0;border-radius:4px}
.skel-line.w60{width:60%}.skel-line.w40{width:40%}.skel-line.w80{width:80%}
.skel-block{display:block;min-height:64px;border-radius:12px}
@keyframes dgskel{to{transform:translateX(100%)}}

@media (prefers-reduced-motion:reduce){
  .skel::after{animation:none}
  .dg-sheet,.dg-toast,.dg-pal,.dg-pal-bg,.dg-sheet-bg{transition:none!important;animation:none!important}
  .btn:active,a.card:active,.dg-tab:active svg{transform:none}
}

/* RTL */
[dir=rtl] .dg-more-me > svg{transform:scaleX(-1)}
[dir=rtl] .dg-pal-it.act::before{left:auto;right:-8px}
[dir=rtl] .dg-pal-foot .r{margin-left:0;margin-right:auto}
/* app-feel: tighter page heroes on phones */
@media (max-width:720px){
  .pagehero{padding:22px 0 18px}
  .pagehero h1,.pagehero .h1{font-size:28px!important;line-height:1.1}
  .pagehero p,.pagehero .lead-p{font-size:15.5px!important;margin-top:10px!important}
}

/* directional slide between tabs (cross-document view transitions with types) */
@keyframes dgvt-slide-out-l{to{transform:translateX(-18%);opacity:0}}
@keyframes dgvt-slide-in-r{from{transform:translateX(18%);opacity:0}}
@keyframes dgvt-slide-out-r{to{transform:translateX(18%);opacity:0}}
@keyframes dgvt-slide-in-l{from{transform:translateX(-18%);opacity:0}}
html:active-view-transition-type(dg-fwd)::view-transition-old(root){animation:dgvt-slide-out-l .2s ease-in both}
html:active-view-transition-type(dg-fwd)::view-transition-new(root){animation:dgvt-slide-in-r .28s var(--dg-ease,ease-out) both}
html:active-view-transition-type(dg-back)::view-transition-old(root){animation:dgvt-slide-out-r .2s ease-in both}
html:active-view-transition-type(dg-back)::view-transition-new(root){animation:dgvt-slide-in-l .28s var(--dg-ease,ease-out) both}
@media (prefers-reduced-motion: reduce){html:active-view-transition-type(dg-fwd)::view-transition-old(root),html:active-view-transition-type(dg-fwd)::view-transition-new(root),html:active-view-transition-type(dg-back)::view-transition-old(root),html:active-view-transition-type(dg-back)::view-transition-new(root){animation:none}}
/* installed app: no rubber-band on the page edges, no accidental text selection on chrome */
html.dg-standalone body{overscroll-behavior-y:none}
.dg-tabbar,header.site{-webkit-user-select:none;user-select:none}
