/* gesture.css — objects with tap / double tap (gesture.js 1.0.0): no double-tap zoom on them, the expanded object, the trace panel.
   1.17.0: visitor note and e-mail in the wish form; the sign-in line of the object menu.
   1.18.0: the object and wish menu above Lleu (2147483300 > Lleu 2147483000) — it opened behind Lleu.
   1.19.0: the empty workshop page (wish point cards).
   1.20.0: the card mark is one „?“; the object menu starts with what the part is; „Mit Lleu besprechen“ in the wish form.
   version: 1.20.0 · created 2026-11-01 by Pascal Ehlig, ITS · edited 2026-11-02 by Pascal Ehlig, ITS */
[data-gw-tap],[data-gw-dbltap]{touch-action:manipulation}
.gw-expanded{position:fixed!important;z-index:70!important;left:10px!important;right:10px!important;top:calc(var(--sheet-top,64px) + 8px)!important;bottom:calc(var(--sheet-bottom,130px) + 8px)!important;
  margin:0!important;overflow:auto!important;transform:none!important;box-shadow:0 18px 50px rgb(16 42 67 / .3)!important;background:var(--surface,#fff)!important;animation:gw-grow .22s ease-out}
@keyframes gw-grow{from{transform:scale(.94);opacity:.6}to{transform:none;opacity:1}}
.gw-expand-close{position:absolute;top:8px;right:8px;width:44px;height:44px;margin:0;grid-area:auto;border:1px solid var(--border);border-radius:999px;background:var(--surface,#fff);color:var(--text);font:600 1.4rem/1 system-ui;cursor:pointer;z-index:1}
.gw-has-expanded main>.fa-sheet{overflow:hidden!important}
@media (prefers-reduced-motion:reduce){.gw-expanded{animation:none}}
.gw-trace{position:fixed;left:8px;right:8px;top:calc(var(--sheet-top,64px) + 4px);z-index:99;display:flex;flex-direction:column;gap:2px;padding:6px 8px;border-radius:10px;background:rgb(16 42 67 / .9);color:#fff;font:500 .75rem/1.3 ui-monospace,monospace;pointer-events:none}
/* 1.1.0: two fingers are ours — the page does not zoom by itself; the line that says what the pinch does */
@media (pointer:coarse){html{touch-action:pan-x pan-y}[data-gw-tap],[data-gw-dbltap]{touch-action:pan-x pan-y}}
.gw-pinch{position:fixed;left:50%;top:calc(var(--sheet-top,64px) + 12px);transform:translateX(-50%);z-index:98;padding:8px 14px;border-radius:999px;background:var(--text,#102a43);color:var(--surface,#fff);
  font:600 .95rem/1.2 var(--sans,system-ui);box-shadow:0 8px 24px rgb(16 42 67 / .25);pointer-events:none}
.gw-pinch[hidden]{display:none}
.gw-expanded{padding-right:60px!important}
/* 1.2.0: the top layer of an expanded object — above header, bars and the sheets; a tap beside it closes */
.gw-layer{position:fixed;inset:0;z-index:2147481000;background:rgb(16 42 67 / .35);animation:gw-fade .18s ease}
.gw-layer[hidden]{display:none}
.gw-layer>.gw-expanded{position:absolute!important;left:12px!important;right:12px!important;top:calc(max(12px,env(safe-area-inset-top)) + 8px)!important;bottom:calc(max(12px,env(safe-area-inset-bottom)) + 8px)!important;z-index:1!important}
@keyframes gw-fade{from{opacity:0}}
@media (prefers-reduced-motion:reduce){.gw-layer{animation:none}}
/* 1.3.0: no plain text selection outside fields; the reference menu of a long press / secondary click */
body{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
input,textarea,select,[contenteditable],[contenteditable] *,.gw-refmenu-head{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}
.gw-refmenu{position:fixed;z-index:2147483300;min-width:220px;max-width:min(92vw,360px);padding:6px;border-radius:16px;background:var(--surface,#fff);color:var(--text,#102a43);border:1px solid var(--border);box-shadow:0 18px 48px rgb(16 42 67 / .28);font:500 .95rem/1.3 -apple-system,BlinkMacSystemFont,system-ui,sans-serif;animation:gw-pop .16s ease-out;transform-origin:top center}
.gw-refmenu-head{margin:4px 8px 6px;font:600 .8rem/1.3 ui-monospace,monospace;color:var(--muted,#486581);overflow-wrap:anywhere}
.gw-refmenu-label{margin:8px 8px 2px;font:600 .72rem/1 system-ui;letter-spacing:.04em;text-transform:uppercase;color:var(--muted,#486581)}
.gw-refmenu button{display:block;width:100%;min-height:44px;padding:8px 12px;border:0;border-radius:10px;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}
.gw-refmenu button:hover,.gw-refmenu button:focus-visible{background:color-mix(in srgb,var(--accent,#fb683e) 14%,transparent);outline:none}
.gw-refmenu button[disabled]{color:var(--muted,#486581);cursor:default}.gw-refmenu button small{font-size:.75rem}
.gw-refmenu-note{margin:4px 8px;font-size:.8rem;color:var(--muted,#486581)}
[data-gw-ref]{outline:2px solid var(--accent,#fb683e);outline-offset:3px;border-radius:12px}
@keyframes gw-pop{from{transform:scale(.92);opacity:0}}
@media (prefers-reduced-motion:reduce){.gw-refmenu{animation:none}}
/* 1.3.1: the lock behind an object opened big; the object 96 % with a frame */
html.gw-locked,html.gw-locked body{overflow:hidden!important;overscroll-behavior:none}
html.gw-locked body{position:fixed;left:0;right:0;top:var(--gw-lock-y,0)}
html.gw-locked main,html.gw-locked main>.fa-sheet{overflow:hidden!important;touch-action:none}
html.gw-locked .fa-board,html.gw-locked .fa-edge,html.gw-locked .fa-pager-bar,html.gw-locked .fold-rail,html.gw-locked header.top,html.gw-locked body>footer{pointer-events:none}
.gw-layer{background:rgb(16 42 67 / .55);-webkit-backdrop-filter:blur(3px) saturate(.8);backdrop-filter:blur(3px) saturate(.8);touch-action:none;overscroll-behavior:contain}
.gw-layer .gw-expanded{left:2vw!important;right:2vw!important;top:2vh!important;bottom:2vh!important;width:auto!important;height:auto!important;overflow:auto!important;overscroll-behavior:contain;touch-action:pan-y;
  border:3px solid var(--accent,#fb683e)!important;border-radius:22px!important;box-shadow:0 0 0 6px color-mix(in srgb,var(--surface,#fff) 60%,transparent),0 24px 60px rgb(0 0 0 / .4)!important;padding-top:56px!important}
.gw-layer-ctx{display:contents!important;margin:0!important;padding:0!important}
.gw-layer .gw-expanded{position:absolute!important;z-index:1!important;background:var(--surface,#fff)!important}
/* 1.4.0: Sehen & Bedienen — the modes a person can try and keep */
.gw-refmenu{max-height:calc(100vh - 24px);overflow:auto}
.gw-refmenu button[role="menuitemcheckbox"][aria-checked="true"]::after{content:" ✓";color:var(--accent,#fb683e);font-weight:700}
[data-gw-bigger]{font-size:1.3em!important;line-height:1.55!important}
html.gw-assist-calm *,html.gw-assist-calm *::before,html.gw-assist-calm *::after{animation:none!important;transition:none!important;box-shadow:none!important;text-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
html.gw-assist-calm body{filter:saturate(.55)}
html.gw-assist-calm [data-gw-current]{transform:none!important}
html.gw-assist-contrast{--muted:var(--text,#102a43);--border:var(--text,#102a43)}
html.gw-assist-contrast body{filter:contrast(1.15)}
html.gw-assist-contrast a{text-decoration:underline!important}
html.gw-assist-spacing main{line-height:1.9!important;letter-spacing:.02em;word-spacing:.08em}
html.gw-assist-spacing main p{margin-bottom:1em}
/* 1.4.1: the stop button while reading — always reachable, above the bars, in the thumb zone */
.gw-speak-stop{position:fixed;left:50%;bottom:calc(var(--sheet-bottom,72px) + 12px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:2147482600;
  min-height:48px;padding:10px 20px;border:2px solid var(--accent,#fb683e);border-radius:999px;background:var(--text,#102a43);color:var(--surface,#fff);
  font:600 1rem/1.2 var(--sans,system-ui);box-shadow:0 10px 30px rgb(16 42 67 / .3);cursor:pointer;animation:gw-pop .16s ease-out}
.gw-speak-stop:focus-visible{outline:3px solid var(--accent,#fb683e);outline-offset:3px}
@media (prefers-reduced-motion:reduce){.gw-speak-stop{animation:none}}
@media (forced-colors:active){.gw-speak-stop{border-color:ButtonText;background:ButtonFace;color:ButtonText}}
/* 1.6.0: the wish form in the object menu */
.gw-wish-label{display:block;margin:6px 8px 4px;font-weight:600}
.gw-wish-text{display:block;width:calc(100% - 16px);margin:0 8px;padding:8px;border:1px solid var(--border);border-radius:10px;background:var(--surface,#fff);color:var(--text,#102a43);font:inherit;resize:vertical;box-sizing:border-box;-webkit-user-select:text;user-select:text}
.gw-wish-ctx{margin:6px 8px;font-size:.8rem;color:var(--muted,#486581)}.gw-wish-ctx pre{max-height:9rem;overflow:auto;white-space:pre-wrap;margin:4px 0 0;font-size:.72rem}
.gw-wish-row{display:flex;justify-content:space-between;gap:8px;margin:8px}.gw-refmenu .gw-wish-row button{width:auto;flex:1;justify-content:center;border:1px solid var(--border)}
.gw-refmenu .gw-wish-row .gw-wish-send{background:var(--accent,#fb683e);color:#fff;border-color:transparent}
/* 1.8.0: the object menu in groups — the object's name on top, four groups that open one at a time, each with a sign and one line */
.gw-refmenu{min-width:min(320px,calc(100vw - 16px));max-width:min(92vw,380px);padding:8px}
.gw-refmenu-top{padding:6px 8px 8px;border-bottom:1px solid var(--border)}
.gw-refmenu-name{margin:0;font:700 1rem/1.3 var(--sans,system-ui);color:var(--text,#102a43);overflow-wrap:anywhere}
.gw-refmenu-q{margin:2px 0 0;font-size:.82rem;color:var(--muted,#486581)}
.gw-mg{border-bottom:1px solid color-mix(in srgb,var(--border) 70%,transparent)}
.gw-mg>summary{display:flex;align-items:center;gap:10px;min-height:52px;padding:6px 8px;border-radius:12px;cursor:pointer;list-style:none}
.gw-mg>summary::-webkit-details-marker{display:none}
.gw-mg>summary::after{content:"›";margin-left:auto;color:var(--muted,#486581);font-size:1.2rem;transition:transform .15s}
.gw-mg[open]>summary::after{transform:rotate(90deg)}
.gw-mg>summary:hover,.gw-mg>summary:focus-visible{background:color-mix(in srgb,var(--accent,#fb683e) 10%,transparent);outline:none}
.gw-mg-icon{flex:none;display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:color-mix(in srgb,var(--accent,#fb683e) 14%,transparent);color:var(--accent-text,var(--accent,#fb683e));font:700 1rem/1 var(--sans,system-ui)}
.gw-mg>summary b{display:block;font-size:.95rem}.gw-mg>summary small{display:block;color:var(--muted,#486581);font-size:.78rem;line-height:1.3}
.gw-mg-body{display:flex;flex-direction:column;padding:2px 0 8px 44px}
.gw-mg-body button{min-height:40px}
.gw-refmenu>.gw-refmenu-head{margin:8px 8px 2px;font-size:.7rem;opacity:.75}
/* change.js 1.0.0 (owner change orders) — kept here, not in a file of its own: the project site is at its file limit */

[data-gw-moving]{outline:3px dashed var(--accent,#fb683e)!important;outline-offset:3px;border-radius:10px;opacity:.85}
.gw-snap{position:fixed;z-index:2147483150;width:30px;height:30px;margin:-15px 0 0 -15px;padding:0;border:3px solid var(--accent,#fb683e);border-radius:50%;
  background:color-mix(in srgb,var(--accent,#fb683e) 25%,var(--surface,#fff));cursor:pointer;animation:gw-snap-glow 1.2s ease-in-out infinite}
.gw-snap::after{content:"";position:absolute;background:var(--accent,#fb683e);border-radius:2px}
.gw-snap-v::after{left:50%;top:-14px;bottom:-14px;width:3px;margin-left:-1.5px}
.gw-snap-h::after{top:50%;left:-14px;right:-14px;height:3px;margin-top:-1.5px}
.gw-snap:hover,.gw-snap:focus-visible{transform:scale(1.25);outline:none}
@keyframes gw-snap-glow{0%,100%{box-shadow:0 0 0 0 color-mix(in srgb,var(--accent,#fb683e) 45%,transparent)}50%{box-shadow:0 0 0 8px transparent}}
.gw-move-bar{position:fixed;left:50%;top:calc(var(--sheet-top,64px) + 8px);transform:translateX(-50%);z-index:2147483200;display:flex;flex-wrap:wrap;align-items:center;gap:8px;
  width:min(600px,calc(100vw - 20px));box-sizing:border-box;padding:10px 12px;border-radius:14px;background:var(--text,#102a43);color:var(--surface,#fff);box-shadow:0 14px 34px rgb(0 0 0 / .3)}
.gw-move-bar p{flex:1 1 16rem;margin:0;font-weight:600}
.gw-move-bar button{min-height:40px;padding:0 14px;border:1px solid currentColor;border-radius:10px;background:transparent;color:inherit;font:600 .85rem/1 var(--sans,system-ui);cursor:pointer}
.gw-move-bar .gw-move-yes{background:var(--accent,#fb683e);border-color:transparent;color:#fff}
.gw-order-for{color:var(--muted);font-size:.85rem;overflow-wrap:anywhere}
@media (prefers-reduced-motion:reduce){.gw-snap{animation:none}}
@media (forced-colors:active){.gw-snap{border-color:Highlight}[data-gw-moving]{outline-color:Highlight!important}}
/* 1.14.0 (gesture.js 1.15.0): the long-press mark of a card, the ring under the finger, the depth row in the object menu */
main section[id]:has(> .gw-lp-mark){position:relative}
.gw-lp-mark{position:absolute;top:8px;right:8px;z-index:2;display:inline-flex;align-items:center;justify-content:center;gap:3px;width:40px;height:32px;padding:0;
  border:1px solid color-mix(in srgb,var(--border) 70%,transparent);border-radius:999px;background:color-mix(in srgb,var(--surface,#fff) 80%,transparent);cursor:pointer;opacity:.7;transition:opacity .15s,border-color .15s}
.gw-lp-mark i{display:block;width:4px;height:4px;border-radius:50%;background:var(--muted)}
.gw-lp-mark:hover,.gw-lp-mark:focus-visible{opacity:1;border-color:var(--accent,#fb683e);outline:none}
.gw-lp-mark:hover i,.gw-lp-mark:focus-visible i{background:var(--accent,#fb683e)}
.gw-lp-mark:focus-visible{box-shadow:0 0 0 3px var(--focus,#2563eb)}
@media (hover:none){.gw-lp-mark::after{content:"";position:absolute;inset:-6px}}   /* a bigger target for the finger */
.gw-press-ring{position:fixed;z-index:2147482000;width:64px;height:64px;margin:-32px 0 0 -32px;border-radius:50%;pointer-events:none;
  background:conic-gradient(var(--accent,#fb683e) var(--gw-p,0%),color-mix(in srgb,var(--accent,#fb683e) 18%,transparent) 0);
  -webkit-mask:radial-gradient(circle,transparent 24px,#000 25px);mask:radial-gradient(circle,transparent 24px,#000 25px);animation:gw-press .4s linear forwards}
@property --gw-p{syntax:"<percentage>";inherits:false;initial-value:0%}
@keyframes gw-press{from{--gw-p:0%;opacity:.4;transform:scale(.7)}to{--gw-p:100%;opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.gw-press-ring{animation:none;--gw-p:100%}}
.gw-lv-row{display:flex;align-items:center;gap:6px;margin:4px 0}
.gw-lv-row button{flex:none;min-height:40px;padding:0 10px;border:1px solid var(--border);border-radius:10px;background:var(--surface,#fff);color:var(--text);font:600 .82rem/1 var(--sans,system-ui);cursor:pointer}
.gw-lv-row button:disabled{opacity:.4;cursor:default}
.gw-lv-now{flex:1;min-width:0;text-align:center;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
[data-view="text"] .gw-lp-mark,[data-view="print"] .gw-lp-mark{display:none}
main section[id]:has(> .gw-lp-mark)>:is(h1,h2,h3):first-of-type{padding-right:44px}   /* the title never runs under the mark */
.gw-refmenu .gw-mg-body .gw-lv-row{display:flex!important;flex-direction:row}
.gw-refmenu .gw-mg-body .gw-lv-row>button{display:inline-flex;align-items:center;width:auto!important;flex:none;margin:0}
.gw-refmenu .gw-mg-body .gw-lv-row>.gw-lv-now{display:block}
.gw-refmenu .gw-mg-body .gw-lv-row{flex-wrap:wrap}
.gw-refmenu .gw-mg-body .gw-lv-row>.gw-lv-now{order:-1;flex:1 0 100%;padding:2px 0 4px}
.gw-refmenu .gw-mg-body .gw-lv-row>button{flex:1 1 0;justify-content:center}
main section[id]:has(> .gw-lp-mark) :is(h1,h2){padding-right:44px}
/* 1.14.2: the × of the object menu */
.gw-refmenu-top{position:relative;padding-right:44px}
.gw-refmenu-x{position:absolute;top:6px;right:6px;display:grid;place-items:center;width:36px;height:36px;padding:0;border:0;border-radius:50%;background:none;color:var(--muted);font:400 1.4rem/1 var(--sans,system-ui);cursor:pointer}
.gw-refmenu-x:hover{background:var(--sunken);color:var(--text)}
.gw-refmenu-x:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
section:has(> .gw-lp-mark) :is(h1,h2){padding-right:44px}
/* the hero's big one-line heading keeps its whole width: the mark sits above it (fit-line.js fits the line) */
section.hero:has(> .gw-lp-mark) :is(h1,h2,.display){padding-right:0!important}
html.fa-pager main>.fa-sheet>section.hero:has(> .gw-lp-mark){padding-top:44px!important}
section:has(> .gw-lp-mark){position:relative}section > .gw-lp-mark{position:absolute!important;top:8px!important;right:8px!important;left:auto!important;margin:0!important}
section > .gw-lp-mark{grid-area:auto!important}   /* a grid card would take its placed area as the containing block */
.gw-wish-direct{display:flex;align-items:center;gap:8px;min-height:44px;margin:4px 0;font-size:.88rem;cursor:pointer}.gw-wish-direct input{width:20px;height:20px;accent-color:var(--accent,#fb683e)}
.gw-refmenu-quick{display:flex;flex-direction:column;margin:2px 0 6px}.gw-refmenu-quick button{font-weight:600}
.gw-wish-guest { font-size: .85em; opacity: .85; margin: .3rem 0 .5rem; }
.gw-wish-mail { width: 100%; box-sizing: border-box; min-height: 40px; margin: .2rem 0 .5rem; border-radius: 10px; border: 1px solid color-mix(in srgb, currentColor 25%, transparent); padding: 6px 10px; font: inherit; background: transparent; color: inherit; }
.gw-refmenu-sign { font-size: .85em; opacity: .85; margin: .5rem 0 .2rem; }
.gw-refmenu-sign a { font-weight: 600; }
/* empty_site.py: the empty workshop page — wish points */
.ws-empty{margin:2rem 0}
.ws-empty>.sub{max-width:52rem}
.ws-wish-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,15rem),1fr));gap:14px;margin:1.2rem 0}
.ws-wish{display:flex;flex-direction:column;gap:8px;padding:16px;border-radius:18px;border:2px dashed color-mix(in srgb,var(--accent,#fb683e) 45%,transparent);background:color-mix(in srgb,var(--accent,#fb683e) 5%,transparent)}
.ws-wish h3{margin:0;font-size:1.05rem}
.ws-wish p{margin:0;flex:1;opacity:.85}
.ws-wish-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ws-wish-row .cta{white-space:normal}
.ws-wish-q{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:50%;border:1px solid var(--border,#d9e2ec);background:var(--surface,#fff);color:inherit;font:700 1rem/1 inherit;cursor:pointer}
.ws-what{display:flex;align-items:center;gap:8px;opacity:.85}
html:not([data-owner]) .ws-wish-owner{display:none}
.ws-wish-owner{border-style:solid}
/* 1.20.0: one „?“ per card; the menu explains first */
.gw-lp-mark.gw-lp-q{width:40px;height:40px;border-radius:50%;font:700 1.05rem/1 var(--sans,system-ui);color:var(--muted,#486581)}
.gw-refmenu-about{margin:4px 0 2px}
.gw-refmenu-abouttext{margin:0;font-size:.92rem;line-height:1.4;opacity:.9}
.gw-refmenu-more{margin-top:6px;min-height:36px;padding:0 12px;border-radius:999px;border:1px solid var(--border,#d9e2ec);background:transparent;color:inherit;font:600 .85rem/1 inherit;cursor:pointer}
.gw-wish-lleu{min-height:44px;padding:0 12px;border-radius:12px;border:1px solid var(--border,#d9e2ec);background:transparent;color:inherit;font:600 .9rem/1 inherit;cursor:pointer}
.gw-wish-row{flex-wrap:wrap}
.gw-refmenu>.gw-refmenu-top{position:static}   /* 1.20.0: the × at the menu's own corner (the head grew with the explanation) */
.gw-refmenu>.gw-refmenu-top>.gw-refmenu-x{top:10px;right:10px;z-index:2}
[data-ctl-side="left"] .gw-refmenu>.gw-refmenu-top>.gw-refmenu-x{right:auto;left:10px}
