.gl-btn{justify-content:center;align-items:center;gap:var(--space-2);min-height:var(--tap-min);min-width:var(--tap-min);padding:0 var(--space-6);border:2px solid var(--ink-900);font-family:var(--font-display);letter-spacing:.01em;cursor:pointer;box-shadow:0 4px 0 var(--ink-900);transition:transform var(--duration-fast) var(--ease-out), box-shadow var(--duration-fast) var(--ease-out);border-radius:999px;font-size:1.125rem;font-weight:600;display:inline-flex}.gl-btn:active:not(:disabled){box-shadow:0 1px 0 var(--ink-900);transform:translateY(3px)}.gl-btn:disabled{opacity:.6;cursor:default}.gl-btn--primary{background:var(--ink-900);color:var(--paper-50);box-shadow:0 4px 0 var(--accent-700)}.gl-btn--secondary{background:var(--paper-50);color:var(--ink-900)}.gl-btn--ghost{color:var(--ink-900);box-shadow:none;background:0 0;border-color:#0000}.gl-sheet{z-index:30;animation:gl-fade var(--duration-normal) var(--ease-out);background:#1514258c;align-items:flex-end;display:flex;position:absolute;inset:0}.gl-sheet__panel{width:100%;max-height:85%;padding:var(--space-6);background:var(--paper-50);border-radius:var(--radius-lg) var(--radius-lg) 0 0;box-shadow:var(--shadow-card);animation:gl-rise var(--duration-normal) var(--ease-out);overflow:auto}.gl-sheet__header{justify-content:space-between;align-items:center;gap:var(--space-4);margin-bottom:var(--space-4);display:flex}.gl-sheet__title{font-family:var(--font-display);overflow-wrap:anywhere;margin:0;font-size:1.5rem;font-weight:600}.gl-sheet__title:focus{outline:none}.gl-sheet__close{min-width:var(--tap-min);min-height:var(--tap-min);background:var(--paper-100);color:var(--ink-900);cursor:pointer;border:0;border-radius:999px;font-size:1.5rem}.gl-sheet__body{gap:var(--space-4);font-size:var(--text-body);line-height:1.5;display:grid}.gl-toaster{top:var(--space-4);z-index:40;gap:var(--space-2);pointer-events:none;width:min(90%,420px);display:grid;position:absolute;left:50%;transform:translate(-50%)}.gl-toast{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--ink-900);color:var(--paper-50);font-size:var(--text-small);text-align:center;box-shadow:var(--shadow-card);animation:gl-rise var(--duration-normal) var(--ease-out);margin:0}@keyframes gl-rise{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}@keyframes gl-fade{0%{opacity:0}to{opacity:1}}
