@import url("/static/v1.19.1/assets/bootstrap/css/bootstrap.min.css");@import url("https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.2/font/bootstrap-icons.css");@import url("/static/v1.19.1/assets/css/Datathesys/custom_bootstrap.css");@import url("/static/v1.19.1/assets/css/Datathesys/ui_components.css");@import url("/static/v1.19.1/assets/css/Datathesys/responsive.css");@import url("/static/v1.19.1/assets/css/Datathesys/sidebar.css");@import url("/static/v1.19.1/assets/css/Datathesys/nav_shared.css");@import url("/static/v1.19.1/assets/css/Datathesys/common_dark.css");@import url("/static/v1.19.1/pages/pages.css");@import url("/static/v1.19.1/modules/calendar.css");

/* I token stanno anche su :root perche' i <dialog> e i pannelli a comparsa vivono FUORI da .gr-app
   (il browser li porta nel top layer, oppure il JS li appende a <body>): senza questo si ritrovavano
   senza --gr-* e tornavano all'aspetto grezzo del browser (angoli vivi, bordo grigio). */
:root, .gr-app, .aa-modern{
  --gr-r:18px; --gr-r-sm:12px; --gr-r-xs:8px;
  --gr-primary: var(--dt-primary, #a78bfa);
  --gr-primary-strong: var(--dt-primary-strong, #c4b5fd);
  --gr-primary-dim: var(--dt-primary-trasparent, rgba(167,139,250,.18));
  --gr-on-primary: #1a1030;
  --gr-hair: var(--dt-panel-border, rgba(255,255,255,.09));
  --gr-fill: rgba(255,255,255,.055);
  --gr-fill-2: rgba(255,255,255,.03);
  --gr-card-bg: rgba(255,255,255,.028);
  --gr-card-shadow: -1px 0 20px 0 rgba(171,214,251,.13);
  --gr-muted: color-mix(in srgb, currentColor 62%, transparent);
  --gr-faint: color-mix(in srgb, currentColor 42%, transparent);
  --gr-mono: var(--mono, ui-monospace, SFMono-Regular, Menlo, monospace);
  --gr-ok: #2e9e6b;  --gr-ok-soft: rgba(46,158,107,.14);
  --gr-warn: #e0a24b; --gr-warn-soft: rgba(224,162,75,.14);
  --gr-crit: #ff6b6b; --gr-crit-soft: rgba(255,107,107,.14);
  --gr-idle: var(--gr-faint);
  --gr-cls-1:#f5b83d; --gr-cls-2:#4fa3ff; --gr-cls-3:#3ecfb2; --gr-cls-4:#ff8f5a; --gr-cls-5:#e668a6; --gr-cls-6:#a78bfa;
  /* compat: alias per i pochi punti in cui l'admin usa ancora --aa-* con lo skin AA incluso */
  --gr-led-blue:#6E93FF; --gr-led-red:#FF7A63; --gr-led-farred:#E668A6;
}
body.theme-light, body.theme-light .gr-app, body.theme-light .aa-modern{
  --gr-on-primary:#ffffff;
  --gr-fill: rgba(15,23,42,.05);
  --gr-fill-2: rgba(15,23,42,.03);
  --gr-card-bg:#ffffff;
  --gr-card-shadow: 0 2px 14px rgba(15,23,42,.08);
  --gr-cls-1:#d99a1c; --gr-cls-2:#2b7fe0; --gr-cls-3:#169c84; --gr-cls-4:#e0642f; --gr-cls-5:#c2417f; --gr-cls-6:#7c3aed;
}

/* ===== scaffold pagina ===== */
.gr-page{ padding:22px 26px 28px; }
.gr-app a, dialog.cc-dialog a{ color:inherit; }
/* le tabelle ereditano il colore del contenitore anche se un tema lo forza su body */
.gr-app table, .gr-app th, .gr-app td,
dialog.cc-dialog table, dialog.cc-dialog th, dialog.cc-dialog td{ color:inherit; }
.gr-app a:hover{ color:var(--gr-primary-strong); }
.gr-head{ display:flex; align-items:flex-end; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:18px; }
.gr-head > div:first-child{ min-width:0; }
.gr-crumbs{ display:flex; align-items:center; gap:6px; font-family:var(--gr-mono); font-size:.66rem; letter-spacing:.11em; text-transform:uppercase; color:var(--gr-primary); margin:0 0 6px; flex-wrap:wrap; }
.gr-crumbs a{ color:var(--gr-faint); text-decoration:none; }
.gr-crumbs a:hover{ color:var(--gr-primary-strong); }
.gr-crumbs .sep{ color:var(--gr-faint); opacity:.6; }
.gr-title{ font-size:1.5rem; font-weight:650; letter-spacing:-.02em; margin:0; line-height:1.15; display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.gr-title small{ font-size:.78rem; font-weight:500; color:var(--gr-faint); }
.gr-lede{ color:var(--gr-muted); font-size:.88rem; margin:6px 0 0; max-width:64ch; line-height:1.5; }
.gr-head-actions{ display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.gr-toolbar{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:16px; }
.gr-toolbar .sp{ flex:1 1 auto; }

/* ===== card ===== */
.gr-card{ background:var(--gr-card-bg); border:1px solid var(--gr-hair); border-radius:var(--gr-r); box-shadow:var(--gr-card-shadow); padding:18px 20px; }
.gr-card-sm{ padding:14px 16px; }
.gr-card-flat{ box-shadow:none; background:var(--gr-fill-2); }
.gr-sec{ border-top:1px solid var(--gr-hair); margin-top:18px; padding-top:16px; }
.gr-sec:first-of-type{ border-top:none; margin-top:0; padding-top:0; }
.gr-sec-label{ display:flex; align-items:center; flex-wrap:wrap; gap:9px; font-family:var(--gr-mono); font-size:.66rem; letter-spacing:.11em; text-transform:uppercase; color:var(--gr-faint); margin-bottom:13px; }
.gr-sec-label .n{ width:18px; height:18px; border-radius:5px; background:var(--gr-primary-dim); color:var(--gr-primary-strong); display:grid; place-items:center; font-weight:700; font-size:.62rem; }
.gr-sec-label .sp{ flex:1; }

/* ===== testo ===== */
.gr-hint{ font-size:.76rem; color:var(--gr-faint); }
.gr-help{ font-size:.72rem; color:var(--gr-faint); line-height:1.45; }
.gr-mono{ font-family:var(--gr-mono); }
.gr-app h1,.gr-app h2,.gr-app h3,.gr-app h4{ letter-spacing:-.015em; }

/* ===== form ===== */
.gr-grid{ display:grid; grid-template-columns:repeat(auto-fit, minmax(200px, 1fr)); gap:12px 16px; }
.gr-grid-2{ grid-template-columns:1fr 1fr; }
.gr-grid-info{ grid-template-columns:2fr 1fr 1fr 1.4fr; }
.gr-grid-when{ grid-template-columns:200px 1fr; align-items:end; }
.gr-field{ display:flex; flex-direction:column; gap:6px; min-width:0; }
.gr-field label, .gr-app label, dialog.cc-dialog label{ font-size:.76rem; color:var(--gr-muted); font-weight:600; margin:0; display:flex; align-items:center; gap:6px; }
/* anche dentro i <dialog>: stanno fuori da .gr-app (top layer / appesi a <body>) e senza questo
   i campi tornavano bianchi come quelli di Bootstrap in mezzo a una finestra scura */
.gr-app .form-input-custom, .gr-app .form-control, .gr-app .form-select,
dialog.cc-dialog .form-input-custom, dialog.cc-dialog .form-control, dialog.cc-dialog .form-select,
.aa-modern .gr-input{
  background:var(--gr-fill)!important; border:1px solid var(--gr-hair)!important; border-radius:var(--gr-r-sm)!important;
  color:inherit; box-shadow:none!important; transition:.15s; padding:9px 12px; font-size:.88rem; width:100%;
}
.gr-app .form-input-custom:focus, .gr-app .form-control:focus, .gr-app .form-select:focus,
dialog.cc-dialog .form-input-custom:focus, dialog.cc-dialog .form-control:focus, dialog.cc-dialog .form-select:focus{ outline:2px solid var(--gr-primary-dim); border-color:var(--gr-primary)!important; }
.gr-app .form-input-custom[readonly]{ color:var(--gr-muted); }
.gr-app .form-select, dialog.cc-dialog .form-select{ appearance:auto; }
.gr-app input[type="checkbox"], dialog.cc-dialog input[type="checkbox"]{ accent-color:var(--gr-primary); }
.gr-check{ display:inline-flex; align-items:center; gap:8px; font-size:.84rem; cursor:pointer; }
.gr-check input{ width:16px; height:16px; margin:0; }
/* input con unita' a destra (min, giorni) */
.gr-unit-wrap{ position:relative; display:inline-block; }
.gr-unit-wrap input.form-input-custom{ padding-right:44px!important; }
.gr-unit-wrap input[type="number"]::-webkit-outer-spin-button, .gr-unit-wrap input[type="number"]::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }
.gr-unit-wrap input[type="number"]{ -moz-appearance:textfield; }
.gr-unit{ position:absolute; right:11px; top:50%; transform:translateY(-50%); font-size:.66rem; font-weight:700; color:var(--gr-faint); pointer-events:none; letter-spacing:.02em; }

/* ===== bottoni ===== */
.gr-btn{
  display:inline-flex; align-items:center; justify-content:center; gap:6px; padding:8px 14px; border-radius:var(--gr-r-sm);
  font-size:.84rem; font-weight:600; border:1px solid transparent; background:transparent; color:inherit; text-decoration:none;
  cursor:pointer; transition:.15s; line-height:1.2; white-space:nowrap;
}
.gr-btn:hover{ text-decoration:none; }
.gr-btn-sm{ padding:6px 11px; font-size:.78rem; }
.gr-btn-xs{ padding:4px 9px; font-size:.72rem; border-radius:var(--gr-r-xs); }
.gr-btn-primary{ background:var(--gr-primary)!important; color:var(--gr-on-primary)!important; border-color:transparent!important; box-shadow:0 8px 20px -10px var(--gr-primary-dim); }
.gr-btn-primary:hover{ background:var(--gr-primary-strong)!important; color:var(--gr-on-primary)!important; }
.gr-btn-ghost{ background:transparent!important; border:1px solid var(--gr-hair)!important; color:inherit!important; border-radius:var(--gr-r-sm)!important; font-weight:600; transition:.15s; }
.gr-btn-ghost:hover{ border-color:var(--gr-primary)!important; color:var(--gr-primary-strong)!important; }
.gr-btn-run{ background:var(--gr-ok-soft)!important; border:1px solid transparent!important; color:var(--gr-ok)!important; border-radius:var(--gr-r-sm)!important; font-weight:650; transition:.15s; }
.gr-btn-run:hover{ background:var(--gr-ok)!important; color:#06301e!important; }
.gr-btn-stop{ background:var(--gr-warn-soft)!important; border:1px solid transparent!important; color:var(--gr-warn)!important; border-radius:var(--gr-r-sm)!important; font-weight:650; transition:.15s; }
.gr-btn-stop:hover{ background:var(--gr-warn)!important; color:#3a2400!important; }
.gr-btn-danger{ color:var(--gr-crit)!important; }
.gr-btn-danger:hover{ background:var(--gr-crit-soft)!important; border-color:var(--gr-crit)!important; }
.gr-btn-icon{ width:32px; height:32px; padding:0; border-radius:var(--gr-r-xs); font-size:.9rem; }
.gr-btn-icon.gr-btn-sm{ width:28px; height:28px; font-size:.82rem; }
.gr-btn[disabled], .gr-btn.disabled{ opacity:.45; pointer-events:none; }
.gr-icon-btn{
  width:27px; height:27px; flex-shrink:0; display:inline-flex; align-items:center; justify-content:center;
  border-radius:8px!important; border:1px solid var(--gr-hair)!important; background:transparent!important;
  color:var(--gr-muted)!important; transition:.15s; padding:0!important; font-size:.84rem; cursor:pointer;
}
.gr-icon-btn:hover{ border-color:var(--gr-crit)!important; color:var(--gr-crit)!important; background:var(--gr-crit-soft)!important; }
.gr-fav-btn{
  background:transparent!important; border:none!important; color:var(--gr-faint)!important;
  font-size:1rem; padding:0!important; width:27px; height:27px; flex-shrink:0;
  display:inline-flex; align-items:center; justify-content:center; transition:.15s; cursor:pointer;
}
.gr-fav-btn:hover, .gr-fav-btn.active{ color:var(--gr-warn)!important; }

/* ===== chip / segmented / pill / badge ===== */
.gr-chip{ font-size:.78rem; padding:4px 12px; border-radius:999px; border:1px solid var(--gr-hair); color:var(--gr-muted); text-decoration:none; transition:.16s; white-space:nowrap; background:transparent; cursor:pointer; display:inline-flex; align-items:center; gap:6px; line-height:1.3; }
.gr-chip:hover{ color:var(--gr-primary-strong); border-color:var(--gr-primary); text-decoration:none; }
.gr-chip.active{ background:var(--gr-primary-dim); border-color:transparent; color:var(--gr-primary-strong); font-weight:600; }
.gr-chip i{ font-size:.8em; }
.gr-chips{ display:flex; gap:6px; flex-wrap:wrap; align-items:center; }
.gr-seg{ display:inline-flex; gap:2px; background:var(--gr-fill); padding:3px; border-radius:999px; max-width:100%; }
.gr-seg-btn{
  border:none!important; background:transparent!important; color:var(--gr-muted)!important; text-decoration:none;
  font-size:.78rem; font-weight:650; padding:6px 16px!important; border-radius:999px!important; cursor:pointer; white-space:nowrap; text-align:center;
  display:inline-flex; align-items:center; gap:6px; line-height:1.2; transition:.15s; text-transform:none; letter-spacing:0; font-family:var(--bs-body-font-family, system-ui, sans-serif);
}
.gr-seg-btn:hover{ color:inherit!important; }
.gr-seg-btn.active{ background:var(--gr-primary)!important; color:var(--gr-on-primary)!important; }
.gr-seg-sm .gr-seg-btn{ font-size:.64rem; font-weight:700; padding:3px 0!important; min-width:52px; }
.gr-pill{ display:inline-flex; align-items:center; gap:5px; padding:3px 9px 3px 7px; border-radius:999px; font-size:.68rem; font-weight:600; white-space:nowrap; }
.gr-pill .dot{ width:6px; height:6px; border-radius:50%; flex-shrink:0; }
.gr-pill.on{ background:var(--gr-ok-soft); color:var(--gr-ok); }
.gr-pill.on .dot{ background:var(--gr-ok); box-shadow:0 0 0 3px var(--gr-ok-soft); }
.gr-pill.warn{ background:var(--gr-warn-soft); color:var(--gr-warn); }
.gr-pill.warn .dot{ background:var(--gr-warn); }
.gr-pill.crit{ background:var(--gr-crit-soft); color:var(--gr-crit); }
.gr-pill.crit .dot{ background:var(--gr-crit); }
.gr-pill.idle{ background:var(--gr-fill); color:var(--gr-idle); }
.gr-pill.idle .dot{ background:var(--gr-idle); }
.gr-status-badge{ display:inline-flex; align-items:center; padding:2px 9px; border-radius:999px; font-size:.66rem; font-weight:700; text-transform:uppercase; letter-spacing:.04em; vertical-align:middle; white-space:nowrap; flex-shrink:0; }
.gr-status-draft{ background:var(--gr-warn-soft); color:var(--gr-warn); }
.gr-status-library{ background:var(--gr-ok-soft); color:var(--gr-ok); }
.gr-tag{ display:inline-flex; align-items:center; gap:4px; font-size:.68rem; padding:2px 8px; border-radius:999px; background:var(--gr-fill); color:var(--gr-muted); white-space:nowrap; }
.gr-tag i{ font-size:.75em; }
.gr-kind{ display:inline-flex; align-items:center; gap:5px; font-size:.64rem; font-weight:700; text-transform:uppercase; letter-spacing:.05em; padding:2px 8px; border-radius:999px; white-space:nowrap; flex-shrink:0; }
.gr-kind i{ font-size:.85em; }
.gr-kind-recipe{ background:var(--gr-primary-dim); color:var(--gr-primary-strong); }
.gr-kind-program{ background:rgba(62,207,178,.16); color:#3ecfb2; }
body.theme-light .gr-kind-program{ color:#0f8f76; }
.gr-crop{ display:inline-flex; align-items:center; gap:4px; font-weight:600; color:inherit; }
.gr-crop i{ color:var(--gr-ok); font-size:.9em; }
.gr-lib-sub .sep, .gr-hub-sub .sep{ opacity:.4; }
.gr-swatch{ display:inline-block; width:9px; height:9px; border-radius:3px; background:var(--c, var(--gr-primary)); flex-shrink:0; }

/* ===== note / empty ===== */
.gr-note{ display:flex; gap:10px; align-items:flex-start; background:var(--gr-primary-dim); border:1px solid color-mix(in srgb,var(--gr-primary) 30%,transparent); border-radius:12px; padding:11px 13px; margin-bottom:14px; font-size:.8rem; line-height:1.5; }
.gr-note i{ color:var(--gr-primary-strong); margin-top:1px; }
.gr-note p{ margin:0; }
.gr-note-warn{ background:var(--gr-warn-soft); border-color:color-mix(in srgb,var(--gr-warn) 40%,transparent); }
.gr-note-warn i{ color:var(--gr-warn); }
.gr-note-crit{ background:var(--gr-crit-soft); border-color:color-mix(in srgb,var(--gr-crit) 40%,transparent); }
.gr-note-crit i{ color:var(--gr-crit); }
.gr-empty-state, .gr-empty{ grid-column:1/-1; flex:1 1 100%; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; padding:48px 20px; color:var(--gr-faint); text-align:center; }
.gr-empty-state i, .gr-empty i{ font-size:1.9rem; opacity:.45; }
.gr-empty-state p, .gr-empty p{ margin:0; font-size:.88rem; }

/* ===== ricerca ===== */
.gr-search-wrap{ position:relative; max-width:360px; flex:1 1 240px; }
.gr-search-wrap i{ position:absolute; left:13px; top:50%; transform:translateY(-50%); color:var(--gr-faint); font-size:.82rem; pointer-events:none; }
.gr-search-input{ width:100%; padding:8px 12px 8px 34px; border-radius:999px; border:1px solid var(--gr-hair); background:var(--gr-fill); color:inherit; font-size:.82rem; }
.gr-search-input:focus{ outline:none; border-color:var(--gr-primary); }
.gr-search-empty{ text-align:center; padding:24px 0; }

/* ===== KPI riepilogo (hub) ===== */
.gr-kpis{ display:flex; gap:8px; flex-wrap:wrap; }
.gr-kpi{ display:inline-flex; align-items:center; gap:8px; padding:6px 12px 6px 9px; border-radius:999px; background:var(--gr-fill); font-size:.76rem; color:var(--gr-muted); }
.gr-kpi b{ font-size:.95rem; color:inherit; font-family:var(--gr-mono); }
.gr-kpi .dot{ width:7px; height:7px; border-radius:50%; }

/* ===== griglia card (hub, libreria, admin) ===== */
.gr-chamber-grid, .gr-cards{ display:grid; grid-template-columns:repeat(auto-fill, minmax(300px, 1fr)); gap:16px; }
.gr-chamber-card{ display:flex; flex-direction:column; gap:11px; padding:17px; transition:transform .15s, box-shadow .15s, border-color .15s; }
.gr-chamber-card:hover{ transform:translateY(-2px); border-color:color-mix(in srgb, var(--gr-primary) 45%, var(--gr-hair)); }
.gr-chamber-head{ display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.gr-chamber-head > div:first-child{ min-width:0; }
.gr-chamber-name{ font-weight:700; font-size:1.03rem; letter-spacing:-.01em; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.gr-chamber-sub{ font-size:.76rem; color:var(--gr-faint); margin-top:1px; }
.gr-chamber-actions{ display:flex; gap:8px; margin-top:2px; }

/* card livello (hub) */
.gr-hub-card{ display:flex; flex-direction:column; gap:12px; padding:16px 18px; transition:border-color .15s, transform .15s; position:relative; }
.gr-hub-card:hover{ border-color:color-mix(in srgb, var(--gr-primary) 45%, var(--gr-hair)); }
.gr-hub-card.is-running{ border-color:color-mix(in srgb, var(--gr-ok) 40%, var(--gr-hair)); }
.gr-hub-head{ display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.gr-hub-name{ font-weight:700; font-size:1.02rem; letter-spacing:-.01em; }
.gr-hub-sub{ font-size:.72rem; color:var(--gr-faint); margin-top:2px; }
.gr-hub-recipe{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-size:.9rem; min-width:0; }
.gr-hub-recipe b{ font-weight:650; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:100%; }
.gr-hub-recipe .v{ font-size:.72rem; color:var(--gr-faint); font-family:var(--gr-mono); }
.gr-hub-meta{ font-size:.72rem; color:var(--gr-muted); display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
.gr-hub-meta .sep{ opacity:.4; }
.gr-hub-now{ display:flex; flex-direction:column; gap:4px; font-size:.78rem; }
.gr-hub-now .k{ font-size:.64rem; text-transform:uppercase; letter-spacing:.06em; color:var(--gr-faint); font-family:var(--gr-mono); }
.gr-hub-now .row-now{ display:flex; gap:6px; flex-wrap:wrap; align-items:center; }
.gr-hub-now .val{ display:inline-flex; align-items:center; gap:5px; padding:2px 8px; border-radius:999px; background:var(--gr-fill); font-size:.72rem; }
.gr-hub-now .val b{ font-family:var(--gr-mono); font-weight:600; }
.gr-hub-empty{ display:flex; flex-direction:column; align-items:center; gap:8px; padding:14px 0 6px; color:var(--gr-faint); font-size:.84rem; text-align:center; }
.gr-hub-empty i{ font-size:1.5rem; opacity:.5; }
.gr-hub-actions{ display:flex; gap:6px; align-items:center; flex-wrap:nowrap; margin-top:auto; padding-top:4px; }
.gr-hub-actions .sp{ flex:1; }
.gr-hub-actions form{ display:inline; margin:0; }

/* card libreria */
.gr-lib-card{ display:flex; flex-direction:column; gap:10px; padding:15px 16px; transition:border-color .15s; position:relative; }
.gr-lib-card:hover{ border-color:color-mix(in srgb, var(--gr-primary) 45%, var(--gr-hair)); }
.gr-lib-head{ display:flex; align-items:flex-start; gap:8px; }
.gr-lib-head > .txt{ flex:1 1 auto; min-width:0; }
.gr-lib-name{ font-weight:700; font-size:.98rem; letter-spacing:-.01em; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; display:block; }
.gr-lib-name a{ text-decoration:none; }
.gr-lib-sub{ font-size:.72rem; color:var(--gr-faint); margin-top:2px; display:flex; gap:6px; align-items:center; flex-wrap:wrap; }
.gr-lib-meta{ font-size:.72rem; color:var(--gr-muted); display:flex; gap:10px; flex-wrap:wrap; align-items:center; }
.gr-lib-meta i{ margin-right:3px; opacity:.8; }
.gr-lib-actions{ display:flex; gap:6px; align-items:center; margin-top:auto; padding-top:2px; }
.gr-lib-actions .sp{ flex:1; }
.gr-lib-actions form{ display:inline; margin:0; }
.gr-fam-cat-select{ background:var(--gr-fill); border:1px solid var(--gr-hair); border-radius:999px; color:inherit; font-size:.7rem; padding:2px 9px; max-width:150px; }
.gr-fam-cat-select:focus{ outline:none; border-color:var(--gr-primary); }
.gr-list-section-label{ font-size:.7rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--gr-faint); margin:14px 0 9px; display:flex; align-items:center; gap:6px; }
.gr-list-section-label i{ color:var(--gr-warn); font-size:.72rem; }

/* gruppi collassabili della Libreria (Coltivazione -> Fase) */
.gr-group{ border:1px solid var(--gr-hair); border-radius:var(--gr-r); background:var(--gr-card-bg); box-shadow:var(--gr-card-shadow); margin-bottom:12px; }
.gr-group-head{ border-radius:var(--gr-r); }
.gr-group[open] > .gr-group-head{ border-radius:var(--gr-r) var(--gr-r) 0 0; }
.gr-group > summary{ list-style:none; }
.gr-group > summary::-webkit-details-marker{ display:none; }
.gr-group-head{ display:flex; align-items:center; gap:12px; padding:14px 18px; cursor:pointer; flex-wrap:wrap; transition:background .15s; }
.gr-group-head:hover{ background:var(--gr-fill-2); }
.gr-group-caret{ width:22px; height:22px; border-radius:6px; background:var(--gr-fill); display:inline-flex; align-items:center; justify-content:center; font-size:.7rem; color:var(--gr-muted); transition:transform .15s; flex-shrink:0; }
.gr-group[open] > summary .gr-group-caret{ transform:rotate(90deg); }
.gr-group-title{ font-weight:700; font-size:1rem; display:inline-flex; align-items:center; gap:8px; }
.gr-group-meta{ display:inline-flex; align-items:center; gap:6px; flex-wrap:wrap; margin-left:auto; }
.gr-group-body{ padding:4px 18px 18px; border-top:1px solid var(--gr-hair); }
.gr-group-body .gr-cards{ margin-bottom:6px; }
.gr-phase-block + .gr-phase-block{ margin-top:8px; }

/* menu a tendina senza JS (details/summary) */
.gr-menu{ position:relative; display:inline-block; }
.gr-menu > summary{ list-style:none; cursor:pointer; }
.gr-menu > summary::-webkit-details-marker{ display:none; }
.gr-menu[open] > summary .gr-btn{ border-color:var(--gr-primary)!important; }
.gr-menu-panel{
  position:absolute; right:0; top:calc(100% + 6px); z-index:50; min-width:210px;
  background:var(--dt-panel, #14121f); backdrop-filter:blur(14px); border:1px solid var(--gr-hair); border-radius:var(--gr-r-sm);
  box-shadow:0 12px 32px rgba(0,0,0,.35); padding:6px; display:flex; flex-direction:column; gap:2px;
}
body.theme-light .gr-menu-panel{ box-shadow:0 12px 32px rgba(15,23,42,.18); }
.gr-menu-panel.left{ right:auto; left:0; }
.gr-menu-item{ display:flex; align-items:center; gap:9px; padding:8px 10px; border-radius:8px; font-size:.82rem; text-decoration:none; color:inherit; background:transparent; border:none; width:100%; text-align:left; cursor:pointer; }
.gr-menu-item:hover{ background:var(--gr-primary-dim); color:inherit; text-decoration:none; }
.gr-menu-item i{ width:16px; text-align:center; color:var(--gr-muted); }
.gr-menu-item.danger{ color:var(--gr-crit); }
.gr-menu-item.danger i{ color:var(--gr-crit); }
.gr-menu-sep{ height:1px; background:var(--gr-hair); margin:4px 2px; }
.gr-menu-label{ font-size:.64rem; text-transform:uppercase; letter-spacing:.06em; color:var(--gr-faint); padding:6px 10px 2px; font-family:var(--gr-mono); }
.gr-menu-sub{ padding-left:6px; }
.gr-menu-sub > summary{ list-style:none; }
.gr-menu-sub > summary::-webkit-details-marker{ display:none; }
.gr-menu-sub[open] > summary .gr-menu-item{ background:var(--gr-fill); }
.gr-menu-sub .gr-menu-item.child{ padding-left:34px; font-size:.78rem; }
.gr-menu-form{ margin:0; }
.gr-menu-form .gr-menu-item{ width:100%; }

/* ===== timeline 24h (widget condiviso: _gr_widgets_js.html) ===== */
.gr-tl{ display:flex; flex-direction:column; gap:4px; }
.gr-tl-ruler{ position:relative; height:14px; margin-left:var(--gr-tl-label-w, 150px); margin-bottom:2px; }
.gr-tl-ruler span{ position:absolute; top:0; font-size:.62rem; color:var(--gr-faint); transform:translateX(-50%); font-family:var(--gr-mono); }
.gr-tl-ruler span:first-child{ transform:none; }
.gr-tl-ruler span:last-child{ transform:translateX(-100%); }
.gr-tl-lane{ display:flex; align-items:center; gap:10px; }
.gr-tl-label{ width:var(--gr-tl-label-w, 150px); flex-shrink:0; display:flex; flex-direction:column; overflow:hidden; line-height:1.2; }
.gr-tl-label .cls{ font-size:.6rem; color:var(--gr-faint); text-transform:uppercase; letter-spacing:.04em; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; display:flex; align-items:center; gap:5px; }
.gr-tl-label .tc{ font-size:.76rem; font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.gr-tl-track{ position:relative; flex:1; height:var(--gr-tl-h, 20px); background:var(--gr-fill); border-radius:6px; overflow:hidden; }
.gr-tl-track .hh{ position:absolute; top:0; bottom:0; width:1px; background:var(--gr-hair); }
.gr-tl-bar{ position:absolute; top:2px; bottom:2px; border-radius:5px; background:var(--c, var(--gr-primary)); opacity:.88; display:flex; align-items:center; padding:0 6px; overflow:hidden; }
.gr-tl-bar span{ font-size:.62rem; font-weight:700; color:#0f0a1e; font-family:var(--gr-mono); white-space:nowrap; opacity:.85; }
.gr-tl-bar.off{ background:transparent; border:1px dashed color-mix(in srgb, var(--c, var(--gr-primary)) 60%, transparent); opacity:.7; }
.gr-tl-now{ position:absolute; top:-2px; bottom:-2px; width:2px; background:var(--gr-crit); z-index:2; box-shadow:0 0 0 1px rgba(0,0,0,.25); }
.gr-tl-now::after{ content:''; position:absolute; top:-3px; left:-3px; width:8px; height:8px; border-radius:50%; background:var(--gr-crit); }
.gr-tl.compact .gr-tl-ruler{ display:none; }
.gr-tl.compact .gr-tl-label{ display:none; }
.gr-tl.compact{ gap:3px; --gr-tl-h:9px; }
.gr-tl.compact .gr-tl-track{ border-radius:4px; }
.gr-tl.compact .gr-tl-bar{ top:1px; bottom:1px; border-radius:3px; padding:0; }
.gr-tl.compact .gr-tl-bar span{ display:none; }
.gr-tl.compact .gr-tl-now{ top:-1px; bottom:-1px; }
.gr-tl.compact .gr-tl-now::after{ display:none; }
.gr-tl-legend{ display:flex; gap:10px; flex-wrap:wrap; margin-top:4px; }
.gr-tl-legend span{ display:inline-flex; align-items:center; gap:5px; font-size:.64rem; color:var(--gr-faint); }
.gr-tl-legend .gr-swatch{ width:8px; height:8px; }
.gr-tl-empty{ font-size:.78rem; color:var(--gr-faint); padding:4px 0; }
.gr-tl-wrap{ border:1px solid var(--gr-hair); border-radius:var(--gr-r-sm); padding:12px 14px 10px; background:var(--gr-fill-2); }

/* ===== striscia step programma (widget condiviso) ===== */
.gr-steps{ display:flex; flex-direction:column; gap:6px; }
.gr-steps-track{ position:relative; display:flex; gap:3px; height:var(--gr-steps-h, 14px); }
.gr-steps-seg{ position:relative; border-radius:5px; background:var(--gr-primary); opacity:.45; min-width:6px; overflow:hidden; transition:opacity .15s; }
.gr-steps-seg.active{ opacity:1; box-shadow:0 0 0 2px var(--gr-primary-dim); }
.gr-steps-seg.done{ opacity:.7; }
.gr-steps-seg.future{ opacity:.35; }
.gr-steps-seg:hover{ opacity:1; }
.gr-steps-now{ position:absolute; top:-3px; bottom:-3px; width:2px; background:var(--gr-crit); z-index:2; }
.gr-steps-labels{ display:flex; gap:3px; }
.gr-steps-labels span{ flex:1; font-size:.62rem; color:var(--gr-faint); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-family:var(--gr-mono); min-width:0; }
.gr-steps.compact{ --gr-steps-h:9px; }
.gr-steps.compact .gr-steps-labels{ display:none; }
.gr-steps-empty{ font-size:.78rem; color:var(--gr-faint); }
/* stepper a card (editor/dettaglio programma) */
.gr-stepper{ display:flex; align-items:stretch; gap:0; overflow-x:auto; padding:2px 2px 10px; }
.gr-step{ min-width:168px; border:1px solid var(--gr-hair); border-radius:var(--gr-r-sm); padding:11px 13px; position:relative; background:var(--gr-fill-2); flex-shrink:0; }
.gr-step + .gr-step{ margin-left:20px; }
.gr-step + .gr-step::before{ content:''; position:absolute; left:-20px; top:50%; width:20px; height:2px; background:var(--gr-hair); }
.gr-step.active{ border-color:var(--gr-primary); }
.gr-step-num{ font-family:var(--gr-mono); font-size:.66rem; color:var(--gr-primary-strong); font-weight:700; letter-spacing:.03em; }
.gr-step-recipe{ font-weight:700; font-size:.86rem; margin:4px 0 2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.gr-step-days{ font-size:.74rem; color:var(--gr-muted); }
.gr-step-empty{ font-size:.8rem; color:var(--gr-faint); }
/* card step nell'editor programma */
.gr-step-list{ display:flex; flex-direction:column; gap:8px; }
.gr-step-card{ display:grid; grid-template-columns:auto 1fr auto auto; gap:12px 14px; align-items:center; padding:12px 14px; border:1px solid var(--gr-hair); border-radius:var(--gr-r-sm); background:var(--gr-fill-2); }
.gr-step-card .num{ width:28px; height:28px; border-radius:8px; background:var(--gr-primary-dim); color:var(--gr-primary-strong); display:grid; place-items:center; font-family:var(--gr-mono); font-weight:700; font-size:.74rem; }
.gr-step-card .main{ display:flex; flex-direction:column; gap:6px; min-width:0; }
.gr-step-card .main .form-select{ padding:6px 10px; font-size:.84rem; }
.gr-step-card .prev{ grid-column:2 / -1; }
.gr-step-card .dur .form-input-custom{ width:96px; padding:6px 10px; text-align:center; }
.gr-step-card .ops{ display:flex; gap:4px; }
.gr-step-card .ops .gr-btn{ width:28px; height:28px; padding:0; }

/* ===== tabella righe editor ricetta (nessun id condiviso con AdvanceAutomator) ===== */
.gr-table-wrap{ border:1px solid var(--gr-hair); border-radius:var(--gr-r-sm); overflow:auto; }
.gr-table{ width:100%; border-collapse:collapse; margin:0; font-size:.82rem; }
.gr-table thead th{ background:transparent; border-bottom:1px solid var(--gr-hair); color:var(--gr-faint); font-size:.63rem; letter-spacing:.06em; text-transform:uppercase; font-weight:700; padding:8px 10px; text-align:left; white-space:nowrap; }
.gr-table tbody td{ border-top:1px solid var(--gr-hair); padding:8px 10px; vertical-align:middle; }
.gr-table .mono{ font-family:var(--gr-mono); font-size:.78rem; }
.gr-table .empty-row td{ color:var(--gr-faint); text-align:center; padding:22px; font-size:.85rem; }
.gr-lines{ width:100%; border-collapse:collapse; margin:0; font-size:.8rem; }
.gr-lines thead th{ padding:7px 8px; font-size:.62rem; letter-spacing:.05em; text-transform:uppercase; color:var(--gr-faint); font-weight:700; border-bottom:1px solid var(--gr-hair); text-align:left; white-space:nowrap; background:transparent; }
.gr-lines tbody td{ padding:5px 8px; vertical-align:middle; border-top:1px solid var(--gr-hair); background:transparent; }
.gr-lines .gr-group-row td{ padding:12px 10px 5px!important; border-top:none!important; }
.gr-lines .gr-group-row + tr td{ border-top:none!important; }
.gr-lines tbody tr:first-child td{ border-top:none; }
.gr-group-name{ display:inline-flex; align-items:center; gap:7px; font-size:.7rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--gr-primary-strong); }
.gr-group-badge{ margin-left:8px; font-size:.66rem; padding:1px 7px; border-radius:999px; background:var(--gr-primary-dim); color:var(--gr-primary-strong); }
.gr-lines .form-input-custom{ padding:5px 8px!important; font-size:.8rem!important; border-radius:var(--gr-r-xs)!important; height:auto; min-height:0; width:auto; }
.gr-lines input[type="time"].form-input-custom{ width:112px; max-width:112px; padding:5px 6px!important; }
.gr-lines input.line-value-input{ width:84px; }
.gr-lines input.off-value-input{ width:84px; }
.gr-lines .wd-label{ margin-right:5px; font-size:.7rem; white-space:nowrap; display:inline-flex; align-items:center; gap:3px; cursor:pointer; font-weight:500; color:inherit; }
.gr-lines .wd-label input{ width:13px; height:13px; margin:0; }
.gr-tag-row-head{ display:flex; align-items:center; justify-content:space-between; gap:8px; min-width:170px; }
.gr-tag-label{ font-weight:600; font-size:.84rem; }
.gr-lines .btn-add-interval{
  flex-shrink:0; width:22px!important; height:22px!important; min-height:0!important; display:inline-flex!important; align-items:center; justify-content:center; padding:0!important; line-height:1; border-radius:999px!important;
  background:var(--gr-primary)!important; color:var(--gr-on-primary)!important; border:none!important; font-weight:700; font-size:.85rem!important;
}
.gr-lines .gr-remove-btn{ padding:2px 8px!important; height:auto!important; min-height:0!important; display:inline-block!important; width:auto!important; background:transparent!important; border:1px solid var(--gr-hair)!important; color:inherit!important; border-radius:var(--gr-r-xs)!important; font-size:.8rem!important; line-height:1.3; }
.gr-lines .gr-remove-btn:hover{ color:var(--gr-crit)!important; border-color:var(--gr-crit)!important; }
.gr-step-cell{ font-size:.74rem; color:var(--gr-faint); white-space:nowrap; }
.gr-off-cell.gr-off-hidden{ visibility:hidden; }
.gr-row-warn td{ background:var(--gr-warn-soft)!important; }
.gr-row-warn-msg{ font-size:.68rem; color:var(--gr-warn); display:block; margin-top:2px; }
/* fine intervallo: "fino a" (orario) o "per" (durata in minuti). Un solo input
   (line_end[]) e' il valore canonico per schedule_logic; la durata viene
   salvata a parte solo per riproporre la modalita' riaprendo l'editor. */
.gr-end-cell{ display:flex; flex-direction:column; gap:6px; align-items:flex-start; min-width:150px; }
.gr-end-mode{ display:inline-flex; gap:2px; background:var(--gr-fill); padding:2px; border-radius:999px; }
.gr-end-mode-btn{
  border:none!important; background:transparent!important; color:var(--gr-muted)!important;
  font-size:.64rem; font-weight:700; padding:3px 0!important; min-width:52px; border-radius:999px!important;
  cursor:pointer; white-space:nowrap; text-align:center;
}
.gr-end-mode-btn.active{ background:var(--gr-primary)!important; color:var(--gr-on-primary)!important; }
.gr-end-duration-input{ display:flex; align-items:center; gap:8px; }
.gr-lines .gr-duration-input-wrap{ position:relative; }
.gr-lines input.gr-duration-minutes.form-input-custom{ width:76px; max-width:76px; padding:5px 32px 5px 10px!important; text-align:center; }
.gr-lines input.gr-duration-minutes::-webkit-outer-spin-button, .gr-lines input.gr-duration-minutes::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }
.gr-lines input.gr-duration-minutes{ -moz-appearance:textfield; }
.gr-duration-unit{ position:absolute; right:10px; top:50%; transform:translateY(-50%); font-size:.66rem; font-weight:600; color:var(--gr-faint); pointer-events:none; }
.gr-end-computed{ font-size:.72rem; white-space:nowrap; color:var(--gr-faint); }

/* ===== footer fisso dei form ===== */
.gr-fixed-foot{
  position:fixed; left:0; right:0; bottom:0; z-index:100; display:flex; justify-content:center;
  background:linear-gradient(to top, var(--body-background,#0a1226) 70%, transparent); padding:16px 4px 14px;
}
.gr-fixed-foot-inner{ width:100%; max-width:1180px; padding:0 24px; display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.gr-fixed-foot-inner .sp, .gr-fixed-foot-inner .aa-ct-sp{ flex:1; }
.gr-foot-total{ font-size:.82rem; color:var(--gr-muted); }
.gr-foot-total b{ color:inherit; font-family:var(--gr-mono); }
.gr-foot-spacer{ height:76px; }

/* ===== option card (picker assegnazione) ===== */
.gr-option{ display:flex; align-items:center; gap:12px; padding:11px 13px; border:1px solid var(--gr-hair); border-radius:var(--gr-r-sm); margin-bottom:8px; cursor:pointer; transition:.14s; background:var(--gr-fill-2); }
.gr-option:hover{ border-color:var(--gr-primary); }
.gr-option.selected{ border-color:var(--gr-primary); background:var(--gr-primary-dim); }
.gr-option > .txt{ flex:1 1 auto; min-width:0; display:flex; flex-direction:column; gap:5px; }
.gr-option-name{ font-weight:600; font-size:.88rem; display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.gr-option-meta{ font-size:.72rem; color:var(--gr-faint); }
.gr-option-check{ width:18px; height:18px; flex-shrink:0; color:var(--gr-primary); opacity:0; }
.gr-option.selected .gr-option-check{ opacity:1; }
.gr-option .gr-tl.compact, .gr-option .gr-steps.compact{ margin-top:2px; }
.gr-option-list{ max-height:52vh; overflow-y:auto; padding-right:4px; scrollbar-width:thin; }
.gr-assign-cols{ display:grid; grid-template-columns:minmax(280px, 380px) 1fr; gap:18px; align-items:start; }
.gr-assign-cols > *{ min-width:0; }

/* ===== card livello dentro TecaManager (tab Calendario, modale Ambiente) ===== */
.gr-level-card{ padding:14px 16px; border-radius:var(--gr-r-sm); border:1px solid var(--gr-hair); background:var(--gr-fill-2); display:flex; flex-direction:column; gap:10px; transition:.15s; }
.gr-level-card:hover{ border-color:color-mix(in srgb, var(--gr-primary) 40%, var(--gr-hair)); }
.gr-level-card-title{ font-weight:650; font-size:.94rem; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.gr-level-card-version{ font-size:.7rem; opacity:.7; font-weight:500; }
.gr-level-card-state{ font-size:.74rem; display:flex; align-items:center; gap:6px; }
.gr-level-card-state.running{ color:var(--gr-ok); }
.gr-level-card-state.stopped{ color:var(--gr-faint); }
.gr-level-card-empty{ font-size:.85rem; color:var(--gr-faint); display:flex; align-items:center; gap:8px; }
.gr-level-card-actions{ display:flex; gap:6px; flex-wrap:wrap; margin-top:2px; }
.gr-level-card-actions .btn{ font-size:.76rem!important; padding:6px 12px!important; border-radius:var(--gr-r-sm)!important; font-weight:600; }

/* ===== dettaglio versione (sola lettura) ===== */
.gr-detail-group{ margin-bottom:18px; }
.gr-detail-group:last-child{ margin-bottom:0; }
.gr-detail-group-name{ display:flex; align-items:center; gap:7px; font-size:.7rem; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--gr-primary-strong); margin-bottom:8px; }
.gr-detail-tagclass{ border:1px solid var(--gr-hair); border-radius:var(--gr-r-sm); padding:11px 14px; margin-bottom:8px; background:var(--gr-fill-2); }
.gr-detail-tagclass-head{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:6px; flex-wrap:wrap; }
.gr-detail-interval{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; padding:5px 0; font-size:.84rem; }
.gr-detail-interval + .gr-detail-interval{ border-top:1px dashed var(--gr-hair); }
.gr-detail-value{ font-weight:700; min-width:52px; font-family:var(--gr-mono); }
.gr-detail-range{ color:var(--gr-muted); font-size:.78rem; font-family:var(--gr-mono); }
.gr-wd-row{ display:flex; gap:3px; margin-left:auto; }
.gr-wd-chip{ width:20px; height:20px; border-radius:6px; display:inline-flex; align-items:center; justify-content:center; font-size:.62rem; font-weight:700; background:var(--gr-fill); color:var(--gr-faint); }
.gr-wd-chip.on{ background:var(--gr-primary-dim); color:var(--gr-primary-strong); }

/* ===== admin: tassonomia / albero / tag picker (pagine staff, invariate) ===== */
.gr-taxo-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:12px; }
.gr-taxo-card{ padding:15px; display:flex; flex-direction:column; gap:8px; }
.gr-taxo-card h4{ font-size:.94rem; margin:0; font-weight:700; }
.gr-taxo-count{ font-size:.74rem; color:var(--gr-muted); }
.gr-taxo-tree details{ border:1px solid var(--gr-hair); border-radius:var(--gr-r-sm); margin-bottom:10px; overflow:hidden; }
.gr-taxo-tree summary{ list-style:none; cursor:pointer; padding:12px 14px; display:flex; align-items:center; justify-content:space-between; gap:10px; background:var(--gr-fill); font-weight:650; }
.gr-taxo-tree summary::-webkit-details-marker{ display:none; }
.gr-taxo-tree summary .caret{ transition:transform .15s; opacity:.6; }
.gr-taxo-tree details[open] > summary .caret{ transform:rotate(90deg); }
.gr-taxo-body{ padding:12px 14px 14px; }
.gr-taxo-tree .gr-taxo-tree{ margin-top:8px; }
.gr-taxo-row{ display:flex; align-items:center; justify-content:space-between; gap:10px; padding:6px 2px; }
.gr-taxo-row .badge-vt{ font-size:.68rem; padding:2px 7px; border-radius:999px; background:var(--gr-fill); color:var(--gr-muted); margin-left:8px; }
.gr-taxo-addform{ display:flex; gap:8px; margin-top:8px; flex-wrap:wrap; }
.gr-taxo-addform .form-input-custom, .gr-taxo-addform .form-select{ flex:1; min-width:140px; }
.gr-del-form{ display:inline; }
/* il tag-picker non deve MAI allargare la colonna che lo contiene: un id lungo (RosaNelDeserto_var_scada.GH3_var_scada...) schiacciava
   il campo del valore accanto. min-width:0 ovunque + troncamento con i puntini (il nome del tag resta sulla prima riga). */
.gr-tagpick{ position:relative; min-width:0; max-width:100%; }
.gr-tagpick-trigger{ display:flex; align-items:center; justify-content:space-between; gap:8px; width:100%; min-width:0; overflow:hidden; text-align:left; padding:9px 11px!important; }
.gr-tagpick-trigger-label{ flex:1 1 0; min-width:0; overflow:hidden; }
.gr-tagpick-trigger .gr-tp-name{ font-weight:600; font-size:.85rem; display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
/* il percorso si tronca all'INIZIO: la parte utile di un id lungo e' la coda (sezione.nome), non il canale */
.gr-tagpick-trigger .gr-tp-path{ display:block; font-size:.68rem; color:var(--gr-faint); font-family:var(--gr-mono); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; direction:rtl; text-align:left; unicode-bidi:plaintext; }
.gr-tagpick-trigger .gr-tp-placeholder{ color:var(--gr-faint); font-weight:500; }
.gr-tagpick-edit{ color:var(--gr-faint); font-size:.8rem; padding:0 4px; opacity:.6; } .gr-tagpick-edit:hover{ opacity:1; color:var(--gr-primary); }
.gr-tagpick-clear{ border:none; background:transparent; color:var(--gr-faint); cursor:pointer; font-size:1rem; line-height:1; padding:2px 4px; flex-shrink:0; }
.gr-tagpick-clear:hover{ color:var(--gr-primary-strong); }
.gr-tagpick-panel{ position:fixed; z-index:2000; background:var(--dt-panel, var(--gr-fill)); backdrop-filter:blur(14px); border:1px solid var(--gr-hair); border-radius:var(--gr-r); box-shadow:-1px 0 24px 0 rgba(0,0,0,.35); width:420px; max-width:90vw; display:flex; flex-direction:column; max-height:60vh; }
.gr-tagpick-search{ margin:8px; padding:8px 10px; border-radius:8px; border:1px solid var(--gr-hair); background:var(--gr-fill); color:inherit; }
.gr-tagpick-search:focus{ outline:none; border-color:var(--gr-primary); }
.gr-tagpick-list{ overflow-y:auto; overscroll-behavior:contain; flex:1 1 auto; min-height:0; padding:0 4px 8px; }
.gr-tagpick-group{ padding:6px 10px 2px; font-size:.66rem; text-transform:uppercase; letter-spacing:.05em; color:var(--gr-faint); font-weight:700; position:sticky; top:0; background:var(--dt-panel,#14121f); }
.gr-tagpick-opt{ display:flex; align-items:center; justify-content:space-between; gap:8px; padding:7px 10px; border-radius:8px; cursor:pointer; }
.gr-tagpick-opt:hover{ background:var(--gr-primary-dim); }
.gr-tagpick-opt .gr-tp-name{ font-weight:600; font-size:.85rem; }
.gr-tagpick-opt .gr-tp-path{ display:block; font-size:.68rem; color:var(--gr-faint); font-family:var(--gr-mono); }
.gr-tagpick-badge{ font-size:.66rem; padding:2px 7px; border-radius:999px; background:var(--gr-fill); color:var(--gr-muted); white-space:nowrap; flex-shrink:0; }
.gr-tagpick-empty{ padding:16px 10px; color:var(--gr-faint); font-size:.85rem; text-align:center; }

/* ===== responsive ===== */
@media (max-width:900px){
  .gr-assign-cols{ grid-template-columns:1fr; }
  .gr-step-card{ grid-template-columns:auto 1fr; }
  .gr-step-card .dur{ grid-column:2; }
  .gr-step-card .ops{ grid-column:2; justify-content:flex-end; }
}
@media (max-width:720px){
  .gr-page{ padding:16px 14px 24px; }
  .gr-title{ font-size:1.25rem; }
  .gr-grid, .gr-grid-2, .gr-grid-info, .gr-grid-when{ grid-template-columns:1fr; }
  .gr-tl-ruler{ margin-left:0; }
  .gr-tl:not(.compact) .gr-tl-lane{ flex-direction:column; align-items:stretch; gap:2px; }
  .gr-tl:not(.compact) .gr-tl-track{ flex:0 0 auto; }
  .gr-tl-label{ width:auto; flex-direction:row; gap:6px; align-items:baseline; }
  .gr-fixed-foot-inner{ padding:0 12px; }
  .gr-chamber-grid, .gr-cards{ grid-template-columns:1fr; }
}


:root{--brand-h-login:90px;--brand-h-navbar:34px;}
html,body{margin:0;min-height:100%;}