/* ================================================================== shared bits for Funksjoner, Verden, Discord og gjengen */
.gm-count { font-size: var(--fs-sm); color: var(--text-3); font-variant-numeric: tabular-nums; white-space: nowrap; }
.gm-sub { display: flex; align-items: center; gap: 6px; font-size: var(--fs-sm); font-weight: 600; color: var(--text-2); margin: 0 0 6px; }
.gm-sub .icon { width: 14px; height: 14px; color: var(--text-3); }
.gm-sub .gm-count { font-weight: 500; }
.gm-note { display: flex; align-items: center; gap: 6px; margin: 0 0 10px; }
.gm-note .icon { flex: 0 0 auto; }
.gm-row { display: flex; align-items: center; gap: var(--s2); flex-wrap: wrap; }
.gm-push { margin-left: auto; }
.gm-num { width: 76px; text-align: right; font-variant-numeric: tabular-nums; }
.gm-num-wide { width: 120px; text-align: right; font-variant-numeric: tabular-nums; }
.gm-numwrap { display: inline-flex; align-items: center; gap: 6px; }
.gm-unit { font-size: var(--fs-sm); color: var(--text-3); min-width: 14px; }
.gm-time { width: 64px; text-align: center; font-variant-numeric: tabular-nums; font-family: var(--mono); font-size: var(--fs-sm); }
.gm-reset-gap { display: inline-block; width: 24px; flex: 0 0 auto; }
.card-head .gm-count { margin-left: 2px; }
.card.gm-shut > .card-head { border-bottom: 0; }
.card.gm-shut > .card-body { display: none; }

/* ================================================================== Funksjoner */
.gm-features { max-width: 980px; }
.gm-toolbar { margin: calc(-1 * var(--s2)) 0 var(--s4); }
.gm-toolbar .filter-bar .input-icon { max-width: 280px; }
.gm-segbox { display: inline-flex; }
.gm-feat .set-title { flex-wrap: wrap; row-gap: 2px; }
.gm-badges { display: inline-flex; flex-wrap: wrap; gap: 4px; }
.gm-badges .pill { height: 18px; font-size: var(--fs-xs); padding: 0 6px; }
.gm-feat .set-ctl { flex-wrap: nowrap; }
.gm-feat .gm-fold { min-width: 64px; justify-content: center; }
.gm-feat .discord-ico, .set-ico .icon.filled { width: 16px; height: 16px; }

/* the unlock editor, folded out under a locked feature */
.gm-unlock {
  margin: 6px 0 2px; padding: 12px; background: var(--bg-raised); border: 1px solid var(--line); border-radius: var(--r);
  display: flex; flex-direction: column; gap: 10px;
}
.gm-unlock-fields { display: flex; flex-wrap: wrap; gap: 8px 10px; align-items: flex-end; }
.gm-unlock-fields > .field { margin: 0; flex: 0 1 180px; }
.gm-unlock-fields > .field.gm-f-time { flex: 0 0 auto; }
.gm-unlock-fields > .field.gm-f-grow { flex: 1 1 200px; }
.gm-unlock .field-label { font-size: var(--fs-xs); }
.gm-unlock .warn-line, .gm-unlock .gm-note { margin: 0; }
.gm-items-edit { display: flex; flex-direction: column; gap: 6px; }
.gm-item-row { display: flex; align-items: center; gap: 6px; }
.gm-item-row input[list] { flex: 0 1 220px; min-width: 120px; }
.gm-pot { display: flex; flex-direction: column; gap: 6px; padding-top: 10px; border-top: 1px solid var(--line); }
.gm-pot .meter { margin: 0; }
.gm-pot-head { display: flex; align-items: center; gap: 6px; font-size: var(--fs-sm); color: var(--text-2); }
.gm-pot-head b { margin-left: auto; color: var(--gold); font-variant-numeric: tabular-nums; }
.gm-pot-items { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 6px 16px; }
.gm-pot-item { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 3px 8px; align-items: center; font-size: var(--fs-sm); }
.gm-pot-item .meter { grid-column: 1 / -1; min-width: 0; height: 4px; }
.gm-pot-name { display: inline-flex; align-items: center; gap: 4px; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gm-pot-item.done .gm-pot-name { color: var(--accent); }
.gm-pot-item .num { color: var(--text-3); }
.gm-pot .tags .pill { height: 20px; font-size: var(--fs-xs); }
.gm-unlock-actions { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }

/* Julecraft-oppsett dialog */
ul.gm-changes { list-style: none; margin: 0; padding: 0; max-height: 50vh; overflow-y: auto; border: 1px solid var(--line); border-radius: var(--r); }
ul.gm-changes li {
  display: grid; grid-template-columns: 24px minmax(0, 1fr) auto; gap: 2px 8px; align-items: center;
  padding: 6px 10px; border-top: 1px solid var(--line); font-size: var(--fs);
}
ul.gm-changes li:first-child { border-top: 0; }
.gm-chg-ico { display: inline-flex; color: var(--text-3); }
.gm-chg-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gm-chg-state { display: inline-flex; align-items: center; gap: 4px; color: var(--text-3); }
.gm-chg-state .pill { margin: 0; }
.gm-chg-how { grid-column: 2 / -1; font-size: var(--fs-sm); color: var(--text-3); }

/* ================================================================== Verden */
.gm-world-grid { margin-bottom: var(--s4); }
.gm-unit-w { min-width: 44px; }
@media (min-width: 1000px) {
  .gm-now-list { flex-direction: row; }
  .gm-now-list > .set-row { flex: 1 1 0; border-top: 0; }
  .gm-now-list > .set-row + .set-row { border-left: 1px solid var(--line); }
}
.gm-meta { display: inline-flex; gap: 6px; flex-wrap: wrap; }
.set-row.gm-rule { min-height: 44px; padding-top: 6px; padding-bottom: 6px; }
.set-row.gm-rule .set-ctl { flex-wrap: nowrap; gap: 6px; }
.set-row.gm-managed .set-title > span:first-child::after {
  content: ""; display: inline-block; width: 6px; height: 6px; margin-left: 6px; border-radius: 50%; background: var(--info); vertical-align: middle;
}
.set-row.gm-raw .set-title > span:first-child { font-family: var(--mono); font-size: var(--fs-sm); font-weight: 400; }
.gm-sky { display: inline-flex; gap: 2px; padding: 2px; background: var(--bg-raised); border: 1px solid var(--line); border-radius: var(--r); }
.gm-sky .icon-btn { width: 30px; height: 26px; }
.gm-all .card-head .filter-bar .input-icon { max-width: 220px; }

/* ================================================================== Discord og gjengen */

/* status at a glance */
.gm-now { display: flex; gap: var(--s4); align-items: center; }
.gm-big { font-size: 34px; font-weight: 700; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; line-height: 1; white-space: nowrap; }
.gm-big small { font-size: 16px; color: var(--text-3); font-weight: 600; margin-left: 2px; }
ul.gm-progress { list-style: none; margin: 0; padding: 0; flex: 1; min-width: 0; font-size: var(--fs); }
ul.gm-progress li { display: flex; flex-wrap: wrap; gap: 2px 8px; align-items: center; padding: 2px 0; }
ul.gm-progress li > .icon { color: var(--text-3); }
ul.gm-progress li.met > .icon { color: var(--accent); }
.gm-rtext { min-width: 0; }
.gm-names { flex-basis: 100%; padding-left: 22px; font-size: var(--fs-sm); color: var(--text-3); }
.gm-lines { display: flex; flex-direction: column; gap: 4px; margin-top: var(--s3); }
.gm-lines .warn-line { margin: 0; }
.gm-line { display: flex; align-items: center; gap: 6px; font-size: var(--fs-sm); color: var(--text-2); }
.gm-line .icon { flex: 0 0 auto; }
.gm-people { margin-top: var(--s3); padding-top: var(--s3); border-top: 1px solid var(--line); }
.gm-door .gm-sub .icon { color: var(--gold); }
.gm-person {
  display: inline-flex; align-items: center; gap: 5px; height: 24px; padding: 0 8px; border-radius: 12px;
  background: var(--neutral-soft); color: var(--text-2); font-size: var(--fs-sm); white-space: nowrap;
}
.gm-person.counts { background: var(--accent-soft); color: var(--text); }
.gm-person.counts > .icon:first-child { color: var(--accent); }
.gm-person.door { background: var(--gold-soft); color: var(--text); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--gold) 35%, transparent); }
.gm-person.door.counts > .icon:first-child { color: var(--gold); }
.gm-pname { font-weight: 600; }
.gm-where { display: inline-flex; color: var(--text-3); }
.gm-nocount { color: var(--text-3); font-size: var(--fs-xs); }
.gm-status .card-foot { flex-wrap: wrap; }

/* unsaved marker on form cards */

/* gjengkrav rules */
.gm-qrule {
  display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; padding: 8px 10px; margin-bottom: 8px;
  background: var(--bg-raised); border: 1px solid var(--line); border-radius: var(--r);
}
.gm-qrule select { max-width: 190px; flex: 0 1 auto; }
.gm-qrule .gm-num { width: 60px; }
.gm-qlabel { font-size: var(--fs-sm); color: var(--text-3); }
.gm-places { display: inline-flex; flex-wrap: wrap; gap: 4px; }
.gm-chip { display: inline-flex; align-items: center; gap: 5px; }
.gm-chip .icon { width: 13px; height: 13px; }
.gm-chip[aria-pressed="false"] .icon { color: var(--text-3); }
.gm-extra { margin-top: var(--s3); }
.gm-extra .gm-sub { font-weight: 500; }
#main .gm-discord .warn-line { margin-top: var(--s3); }

/* opening hours */
.gm-win { padding: 8px 10px; margin-bottom: 8px; background: var(--bg-raised); border: 1px solid var(--line); border-radius: var(--r); border-left: 3px solid var(--line-strong); }
.gm-win.closed { border-left-color: var(--purple); }
.gm-win.free { border-left-color: var(--accent); }
.gm-win-top, .gm-win-bottom { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; }
.gm-win-bottom { margin-top: 8px; }
.gm-win-name { flex: 1 1 120px; min-width: 100px; height: 28px; }
.gm-days { display: inline-flex; gap: 2px; }
.gm-day {
  width: 30px; height: 26px; padding: 0; font-size: var(--fs-sm); font-weight: 600; border-radius: var(--r-sm);
  background: transparent; color: var(--text-3); border: 1px solid var(--line-strong);
}
.gm-day:hover:not(:disabled) { color: var(--text); background: var(--control); }
.gm-day[aria-pressed="true"] { background: var(--accent-soft); color: var(--accent); border-color: color-mix(in srgb, var(--accent) 45%, transparent); }
.gm-times { display: inline-flex; align-items: center; gap: 6px; }
.gm-time[aria-invalid="true"] { border-color: var(--danger); }
.gm-span { font-size: var(--fs-xs); color: var(--text-3); min-width: 0; }
.gm-none { margin: 0 0 10px; }

/* bot */
.gm-guide { margin-top: var(--s3); border-top: 1px solid var(--line); padding-top: var(--s2); }
.gm-guide > summary {
  display: flex; align-items: center; gap: 6px; cursor: pointer; list-style: none; font-size: var(--fs-sm); font-weight: 500; color: var(--text-2);
  padding: 4px 0; border-radius: var(--r-sm);
}
.gm-guide > summary::-webkit-details-marker { display: none; }
.gm-guide > summary:hover { color: var(--text); }
.gm-guide > summary:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.gm-guide .gm-chev { transition: transform var(--dur) var(--ease); }
.gm-guide[open] .gm-chev { transform: rotate(90deg); }
ol.gm-steps { margin: 6px 0 0; padding-left: 20px; font-size: var(--fs-sm); color: var(--text-2); line-height: 1.55; }
ol.gm-steps li { margin-bottom: 4px; }
ol.gm-steps a { display: inline-flex; align-items: center; gap: 3px; }
.gm-dname { display: inline-flex; align-items: center; gap: 6px; }
.gm-dname .icon { color: var(--text-3); }
.gm-rs-lock { display: inline-flex; align-items: center; gap: 4px; }
.gm-linkform { display: flex; flex-wrap: wrap; gap: 6px; width: 100%; align-items: center; }
.gm-linkform select, .gm-linkform input { flex: 1 1 140px; min-width: 0; height: 28px; }

@media (max-width: 639px) {
  .set-row.gm-inline { grid-template-columns: 32px minmax(0, 1fr) auto; }
  .set-row.gm-inline.no-icon { grid-template-columns: minmax(0, 1fr) auto; }
  .set-row.gm-inline .set-ctl { grid-column: auto; justify-content: flex-end; }
  .gm-feat .set-ctl { flex-wrap: wrap; }
  .gm-toolbar .filter-bar .input-icon { max-width: none; flex-basis: 100%; }
  .gm-now { gap: var(--s3); }
  .gm-big { font-size: 28px; }
  .gm-qrule select { max-width: 100%; }
  .gm-reset-gap { display: none; }
  .gm-unlock-fields > .field { flex: 1 1 140px; }
}

/* ---------------------------------------------------------------- Discord og gjengen (menu and panes come from settings.css) */
.gm-headmeta { display: inline-flex; }
.gm-navdot { width: 8px; height: 8px; border-radius: 50%; margin-left: auto; flex: 0 0 auto; background: var(--text-3); }
.gm-navdot.ok { background: var(--accent); }
.gm-navdot.warn { background: var(--warn); }
.gm-navdot.bad { background: var(--danger); }
.gm-navdot.off { background: transparent; border: 1px solid var(--text-3); }
.gm-inset { margin: 12px var(--s4); }
.gm-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.gm-facts { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 0; margin: 0; }
.gm-facts > div { padding: 12px var(--s4); border-top: 1px solid var(--line); min-width: 0; }
.gm-facts dt { font-size: var(--fs-xs); font-weight: 600; color: var(--text-3); text-transform: uppercase; letter-spacing: .04em; }
.gm-facts dd { margin: 2px 0 0; overflow-wrap: anywhere; }
.gm-facts dd a { color: var(--text); text-decoration: none; }
.gm-facts dd a:hover { color: var(--accent); text-decoration: underline; }
.cfg-row.gm-rs-row { grid-template-columns: 150px minmax(0, 1fr); }
.gm-rs-row .cfg-ctl { justify-content: flex-start; flex-wrap: wrap; }
.gm-rs-row .cfg-ctl select { width: 200px; max-width: 100%; }
.gm-rs-dir { display: inline-flex; min-width: 0; }
@media (max-width: 639px) {
  .cfg-row.gm-rs-row { grid-template-columns: minmax(0, 1fr); }
}
.gm-discord .gm-linkform { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.gm-discord .gm-guide { margin: 0; border: 0; padding: 0; }
