/* DomainHunter.si - page chrome: the top strip, the sidebar's own bits, the footer line and
   the document ("front matter") pages. The utility classes used in the markup come from
   base.css (generated). This file holds:
     1. the strip's sheet, which the design reference injects as a <style> block (ported rule
        for rule; the unused dismiss, logo and document-link rules are left out),
     2. every inline style of the reference, turned into a class (the policy forbids inline styles),
     3. the few rules the base has no class for.
   Colours come from the theme tokens; the strip keeps its own solved per-theme values. */

/* ------------------------------------------------------------------ 1. The strip */

:root{--dh-banner-h:32px}
.dh-banner{position:sticky;top:0;overflow:hidden;background:#eef3f8;color:rgba(27,44,63,.92);
  box-shadow:inset 0 -1px 0 rgba(21,48,74,.22),0 1px 0 rgba(21,48,74,.06),0 3px 8px -6px rgba(21,48,74,.30)}
.dh-banner{z-index:45}
.dh-banner .mb-wash{position:absolute;inset:-70% 0;z-index:0;pointer-events:none;opacity:.85;
  background:conic-gradient(from 0deg,#dce7f1,#c6daed 22%,#d6d8ea 48%,#c6e1e6 74%,#dce7f1);
  transform-origin:50% 50%;
  transform:translate3d(0,calc(-40px - 8vw),0) rotate(8deg) scale(2.6)}
.dh-banner .mb-veil{position:absolute;inset:0;z-index:1;pointer-events:none;background:rgba(28,54,82,.07)}
.dh-banner .mb-veil::after{content:'';position:absolute;top:-40%;bottom:-40%;left:0;width:62%;
  pointer-events:none;opacity:0;transform:translate3d(-105%,0,0);
  will-change:transform,opacity;
  background-image:linear-gradient(100deg,rgba(255,255,255,0) 0%,rgba(255,255,255,.13) 26%,
    rgba(255,255,255,.42) 46%,rgba(255,255,255,.60) 52%,rgba(255,255,255,.38) 59%,
    rgba(255,255,255,.11) 76%,rgba(255,255,255,0) 100%);
  animation:dh-banner-rake 38s linear 6.4s infinite}
@keyframes dh-banner-rake{
  0%{transform:translate3d(-105%,0,0);opacity:0}
  4%{transform:translate3d(-72%,0,0);opacity:.11}
  9%{transform:translate3d(-30%,0,0);opacity:.28}
  15%{transform:translate3d(22%,0,0);opacity:.32}
  21%{transform:translate3d(70%,0,0);opacity:.28}
  26%{transform:translate3d(105%,0,0);opacity:.10}
  29%{transform:translate3d(125%,0,0);opacity:0}
  100%{transform:translate3d(125%,0,0);opacity:0}
}
.dh-banner .mb-ring{position:relative;display:inline-flex;padding:1.5px;border-radius:999px;
  flex-shrink:0;vertical-align:middle;margin-left:8px;z-index:5}
.dh-banner .mb-pill{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;
  height:22px;padding:0 10px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap;
  background:transparent;color:#132437;text-decoration:none;
  box-shadow:inset 0 0 0 1px rgba(21,48,74,.32);transition:background .25s,box-shadow .25s}
.dh-banner .mb-pill:hover{text-decoration:none}
.dh-banner .mb-brand{position:absolute;left:12px;top:50%;transform:translateY(-50%);z-index:3;
  display:inline-flex;gap:6px;align-items:center;line-height:1;
  text-decoration:none;color:inherit;transition:opacity .2s}
.dh-banner .mb-brand:hover{opacity:1;text-decoration:underline}
.dh-banner .mb-brand-i{width:17px;height:17px;flex-shrink:0}
.dh-banner .mb-brand-t{font-size:13px;font-weight:800;letter-spacing:-.02em;white-space:nowrap}
.dh-banner .mb-brand-a{color:hsl(var(--primary))}
.dh-banner .mb-chrome{position:absolute;right:8px;top:50%;transform:translateY(-50%);z-index:4;
  display:none;align-items:center;gap:1px}
.dh-banner .mb-ic{display:inline-flex;align-items:center;justify-content:center;
  width:26px;height:26px;border-radius:7px;color:inherit;opacity:.82;text-decoration:none;
  background:none;border:0;padding:0;cursor:pointer;transition:opacity .15s}
.dh-banner .mb-ic:hover,.dh-banner .mb-ic.on{opacity:1;text-decoration:none}
.dh-banner .mb-pill-m{display:none}
@media (max-width:900px){
  .dh-banner .mb-full{display:none}
  .dh-banner .mb-short{display:inline-block}
}
.dh-banner p{display:inline-flex;align-items:center;gap:8px;white-space:nowrap;
  max-width:100%;min-width:0}
.dh-banner .mb-full,.dh-banner .mb-short{overflow:hidden;text-overflow:ellipsis;min-width:0}
.dh-banner .mb-ring{flex:none}
.dh-banner .mb-short{display:none}
@media (max-width:640px){
  .dh-banner{padding-left:10px;padding-right:10px}
  .dh-banner p{font-size:12px;gap:6px;padding:0 20px 0 40px;opacity:1;transition:opacity .25s}
  .dh-banner .mb-brand-t{display:none}
  .dh-banner .mb-pill-w{display:none}
  .dh-banner .mb-pill-m{display:inline}
  .dh-banner .mb-full{display:none}
  .dh-banner .mb-short{display:inline-block}
  .dh-banner .mb-pill{position:relative}
  .dh-banner .mb-pill::after{content:'';position:absolute;inset:-8px -10px}
}

/* Per-theme strips: base = theme ground, ink = theme foreground, wash from the theme's own
   neighbourhood. The theme classes on <html> are exclusive. */
.paper .dh-banner{background:#f3f5f7;color:rgba(24,24,24,.92);
  box-shadow:inset 0 -1px 0 rgba(29,27,22,.22),0 1px 0 rgba(29,27,22,.06),0 3px 8px -6px rgba(29,27,22,.3)}
.paper .dh-banner .mb-wash{
  background:conic-gradient(from 0deg,#e8ebed,#dce0e5 22%,#e0e3e7 48%,#dee2e6 74%,#e8ebed)}
.paper .dh-banner .mb-veil{background:rgba(29,27,22,.07)}
.paper .dh-banner .mb-pill{color:#1d1b16}
.light .dh-banner{background:#e7e7e7;color:rgba(23,23,23,.92);
  box-shadow:inset 0 -1px 0 rgba(23,23,23,.22),0 1px 0 rgba(23,23,23,.06),0 3px 8px -6px rgba(23,23,23,.3)}
.light .dh-banner .mb-wash{
  background:conic-gradient(from 0deg,#d0d0d0,#d0d0d0 22%,#d5d5d5 48%,#d2d2d2 74%,#d0d0d0)}
.light .dh-banner .mb-veil{background:rgba(23,23,23,.07)}
.light .dh-banner .mb-pill{color:#171717}
.stone .dh-banner{background:#f6f1e7;color:rgba(31,27,20,.92);
  box-shadow:inset 0 -1px 0 rgba(31,27,20,.22),0 1px 0 rgba(31,27,20,.06),0 3px 8px -6px rgba(31,27,20,.3)}
.stone .dh-banner .mb-wash{
  background:conic-gradient(from 0deg,#e0e0e0,#d5cec4 22%,#dad5cb 48%,#d7d2c8 74%,#e0e0e0)}
.stone .dh-banner .mb-veil{background:rgba(31,27,20,.07)}
.stone .dh-banner .mb-pill{color:#1f1b14}
.dark .dh-banner{background:#2d3035;color:rgba(246,246,246,.95);
  box-shadow:inset 0 -1px 0 rgba(227,229,234,.14),0 1px 0 rgba(0,0,0,.30),0 3px 10px -6px rgba(0,0,0,.55)}
.dark .dh-banner .mb-wash{opacity:.9;
  background:conic-gradient(from 0deg,#32353a,#393c41 22%,#36393e 48%,#3a3d42 74%,#32353a)}
.dark .dh-banner .mb-veil{background:rgba(227,229,234,.06)}
.dark .dh-banner .mb-veil::after{
  background-image:linear-gradient(105deg,transparent 0 34%,rgba(255,255,255,.05) 44%,
    rgba(255,255,255,.12) 50%,rgba(255,255,255,.05) 56%,transparent 66%)}
.dark .dh-banner .mb-pill{color:#f6f6f6}

/* Below 1024px the strip is the header: it carries the navigation toggle and the theme
   button, and the centre line stands down to make the room. Order decides this block. */
.dh-banner .mb-menu{display:none}
@media (max-width:1023px){
  .dh-banner .mb-chrome{display:inline-flex}
  .dh-banner .mb-menu{display:inline-flex;position:absolute;left:4px;top:50%;
    transform:translateY(-50%);z-index:4}
  .dh-banner .mb-brand{left:36px}
  .dh-banner .mb-full,.dh-banner .mb-short{display:none}
}
/* The pill: an opening cut into the strip. Every value is a share of the strip's own ink. */
.dh-banner .mb-pill{
  gap:6px;
  border-radius:4px 11px 11px 4px;
  background:transparent;
  border:1px solid currentColor;
  border-color:color-mix(in srgb,currentColor 30%,transparent);
  box-shadow:none;
  box-shadow:inset 0 1px 0 color-mix(in srgb,currentColor 10%,transparent);
  transition:background-color 160ms cubic-bezier(.2,0,0,1)}
.dh-banner .mb-pill:hover{
  background:transparent;
  background:color-mix(in srgb,currentColor 17%,transparent)}
.dh-banner .mb-pill:active{
  background:transparent;
  background:color-mix(in srgb,currentColor 21%,transparent);
  box-shadow:none;
  box-shadow:inset 0 1px 2px color-mix(in srgb,currentColor 28%,transparent)}
.dh-banner .mb-pill:focus-visible{outline:2px solid currentColor;outline-offset:2px}
.dh-banner .mb-pill svg{width:9px;height:9px;flex:none;
  transition:transform 160ms cubic-bezier(.2,0,0,1)}
.dh-banner .mb-pill:hover svg,
.dh-banner .mb-pill:focus-visible svg{transform:translate(1px,-1px)}
.dh-banner .mb-pill-w,.dh-banner .mb-pill-m{display:inline}
@media (prefers-reduced-motion:reduce){
  .dh-banner .mb-pill,.dh-banner .mb-pill svg{transition:none}
  .dh-banner .mb-pill:hover svg,
  .dh-banner .mb-pill:focus-visible svg{transform:none}
}
@media (prefers-reduced-motion:reduce){
  .dh-banner .mb-veil::after{animation:none;will-change:auto;
    transform:translate3d(-6%,0,0);opacity:.24}
}

/* Strip additions of this site: keyboard focus for the brand and the glyph buttons (the pill
   has its own above), and no navigation toggle when scripts are off. */
.dh-banner .mb-brand:focus-visible,
.dh-banner .mb-ic:focus-visible{outline:2px solid currentColor;outline-offset:1px;opacity:1;box-shadow:none}
.dh-banner .mb-brand:focus-visible{outline-offset:3px;border-radius:3px}
html:not(.js) .dh-banner .mb-menu,
html:not(.js) .dh-banner .mb-chrome{display:none}
.dh-banner .dh-theme-ico-strip{width:15px;height:15px}

/* ------------------------------------------------------------------ 2. Shell */

/* The hidden attribute must win over the display utilities (the Watch row, rail-only parts). */
[hidden]{display:none !important}

.dh-skip{position:fixed;left:8px;top:-60px;z-index:60;padding:8px 12px;border-radius:9px;
  background:hsl(var(--foreground));color:hsl(var(--background));
  font-size:13px;font-weight:600;text-decoration:none}
.dh-skip:focus{top:8px;outline:2px solid hsl(var(--ring));outline-offset:2px}

#main:focus{outline:none;box-shadow:none}

/* The page column fills the window below the strip (the base rule reads the strip height
   under another name; this one, loaded later, reads ours). */
.min-h-screen.flex.flex-col{min-height:calc(100vh - var(--dh-banner-h,0px))}

/* The sidebar's inline styles in the reference: it sits under the strip and fills the rest. */
.dh-side{top:var(--dh-banner-h,0px);height:calc(100vh - var(--dh-banner-h,0px));
  height:calc(100dvh - var(--dh-banner-h,0px));align-self:flex-start}
.dh-side a:focus-visible,
.dh-side button:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:1px;box-shadow:none}

/* The collapse button belongs to the wide layout only (the reference renders it there only). */
@media (max-width:1023px){
  .dh-lg-only{display:none !important}
  /* A closed drawer is off screen: it must not take keyboard focus either. */
  .dh-side:not(.translate-x-0){visibility:hidden;transition:transform .2s cubic-bezier(.4,0,.2,1),visibility 0s linear .2s}
  .dh-side.translate-x-0{visibility:visible}
}
/* Collapsed state before shell.js has swapped the class strings (no flash on load). */
@media (min-width:1024px){
  html.dh-rail .dh-side{width:44px;transition:none}
  html.dh-rail .dh-side [data-rail-hide]{display:none}
}
@media (prefers-reduced-motion:reduce){
  .dh-side,#dh-backdrop{transition:none !important}
}

/* Theme switcher: the icon and the name of the current theme, picked by the class on <html>. */
.dh-theme-ico,.dh-theme-name{display:none}
.paper .dh-theme-ico.dh-theme-paper,
.light .dh-theme-ico.dh-theme-light,
.stone .dh-theme-ico.dh-theme-stone,
.slate .dh-theme-ico.dh-theme-slate{display:block}
.paper .dh-theme-name.dh-theme-paper,
.light .dh-theme-name.dh-theme-light,
.stone .dh-theme-name.dh-theme-stone,
.slate .dh-theme-name.dh-theme-slate{display:inline}

/* Small screens without scripts: the drawer cannot open, so the links sit in a plain row. */
.dh-nojs-nav{display:none}
@media (max-width:1023px){
  .dh-nojs-nav{display:flex;flex-wrap:wrap;gap:4px 16px;padding:8px 16px;
    border-bottom:1px solid hsl(var(--border));background:hsl(var(--background));
    font-size:13px;font-weight:550;color:hsl(var(--muted-foreground))}
  .dh-nojs-nav a{color:inherit;text-decoration:underline;text-underline-offset:3px}
}

/* The footer line. The reference pins it to the bottom of the window; this one carries two
   sentences, so on phones it stays in the flow and only pins from 640px up. */
.dh-foot{position:static}
@media (min-width:640px){
  .dh-foot{position:sticky;bottom:0}
  /* Two stacked lines on phones; one running, centred line from here up. */
  .dh-foot-line{display:block}
  .dh-foot-line > span:first-child{margin-right:6px}
}

/* ------------------------------------------------------------------ 3. Document pages */

/* font-family: the reference pins Inter on the page, the title and the section heads. */
.dh-inter{font-family:Inter,"DM Sans",system-ui,sans-serif}

/* The index column scrolls without a scrollbar of its own, and the window scrollbar is hidden
   on document pages (shell.js sets the class): the index and its marker show the position. */
.dh-log-scroll{scrollbar-width:none;-ms-overflow-style:none}
.dh-log-scroll::-webkit-scrollbar{width:0;height:0;display:none}
html.dh-hide-scrollbar{scrollbar-width:none}
html.dh-hide-scrollbar::-webkit-scrollbar{width:0;height:0}

/* Contents index: the spine, the dotted leaders and the marker that moves to the section
   being read (shell.js sets its transform). */
.dh-spine{background:linear-gradient(to bottom,hsl(var(--border)) 0%,hsl(var(--border)) calc(100% - 36px),transparent 100%)}
.dh-leader{background-image:radial-gradient(circle,hsl(var(--muted-foreground) / 0.55) 0.7px,transparent 0.8px);
  background-size:5px 1px;background-repeat:repeat-x}
.dh-marker{transform:translateY(36px);transition-timing-function:cubic-bezier(0.2,0,0,1)}

/* The em dash in front of a list item (the base has the position and colour classes). */
.dh-dash::before{--tw-content:'\2014';content:var(--tw-content)}

/* The not-found page: one centred lockup. */
.dh-notfound{min-height:calc(100vh - var(--dh-banner-h,0px) - 96px);min-height:calc(100dvh - var(--dh-banner-h,0px) - 96px)}

/* Links inside the running text. */
.dh-doc a{color:hsl(var(--foreground));text-decoration:underline;text-decoration-color:hsl(var(--muted-foreground) / 0.6);
  text-underline-offset:3px;border-radius:2px}
.dh-doc a:hover{text-decoration-color:currentColor}
.dh-doc a:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px;box-shadow:none}
.dh-doc strong{font-weight:600;color:hsl(var(--foreground))}

/* Term lists on the guide page: a term, then what it means. */
.dh-terms{margin:0}
.dh-terms dt{margin:0;font-weight:600;color:hsl(var(--foreground))}
.dh-terms dd{margin:2px 0 0}
.dh-terms dd + dt{margin-top:14px;padding-top:14px;border-top:1px solid hsl(var(--border) / 0.6)}
.dh-terms .dh-how{font-size:14px;line-height:20px;color:hsl(var(--muted-foreground))}

@media print{
  .dh-banner,.dh-side,.dh-foot,.dh-skip,#dh-backdrop,.dh-nojs-nav{display:none !important}
}
