:root { --card-bg:#fff; --muted:#6b7280; } * { box-sizing:border-box; } body { font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif; margin:0; background:#f3f4f6; color:#111827; } /* Header */ header { padding:24px 16px 8px; text-align:center; } h1 { margin:0 0 6px; font-size: clamp(20px, 3vw, 32px); } .sub { color: var(--muted); font-size: 14px; } /* Layout */ .container { max-width: 1200px; margin: 0 auto; padding: 16px; } .grid { display:grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap:16px; } /* Card */ .card { min-width: 0; background: var(--card-bg); border-radius:14px; box-shadow: 0 6px 20px rgba(0,0,0,.06); padding:18px; margin-bottom: 20px; } .card h2 { margin:0 0 12px; font-size:18px; } /* Flex helpers */ .row { display:flex; align-items:center; gap:12px; flex-wrap:wrap; } .spacer { flex:1; } /* Buttons */ .btn { appearance:none; border:0; border-radius:10px; padding:8px 12px; background:#111827; color:#fff; cursor:pointer; font-weight:600; } .btn.ghost { background:#e5e7eb; color:#111827; } .btn.small { padding:6px 10px; font-size:12px; } /* Pills & chips */ .pill { border-radius:999px; padding:6px 10px; background:#f3f4f6; color:#111827; display:inline-flex; align-items:center; gap:8px; } .status-dot { width:10px; height:10px; border-radius:50%; background:#9CA3AF; display:inline-block; } .ok .status-dot { background:#10B981; } .bad .status-dot { background:#EF4444; } .chip { font-size:12px; padding:4px 8px; border-radius:999px; background:#eef2ff; color:#3730a3; } /* Inputs & notices */ .notice { color: var(--muted); font-size:12px; } input[type="text"], input[type="password"], select { padding:8px; border:1px solid #e5e7eb; border-radius:8px; } /* Utility */ .hidden { display:none; } .mono { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace; } /* Optional: color/preview box used on automation page */ .color-box { width:36px; height:24px; border-radius:6px; border:1px solid #e5e7eb; } /* Segmented control (automation page) */ .seg { display:inline-flex; border:1px solid #e5e7eb; border-radius:10px; overflow:hidden; } .seg button { background:#fff; color:#111; border:0; padding:6px 10px; } .seg button.active { background:#111827; color:#fff; } .top-menu { background:#111827; padding:10px 20px; } .top-menu ul { list-style:none; margin:0; padding:0; display:flex; gap:20px; } .top-menu a { color:white; text-decoration:none; font-weight:600; font-size:14px; } .top-menu a:hover { text-decoration:underline; } /* Top menu wrapper */ .top-menu { padding: 8px 0; } /* Center the buttons and add even spacing */ .top-menu__row { justify-content: center; gap: 8px; } /* Active page: make the ghost button look “primary” */ .btn.ghost.is-active { background: #111827; color: #fff; outline: 2px solid #111827; /* subtle emphasis */ } /* Keyboard focus ring (accessible) */ .top-menu a.btn:focus-visible { outline: 2px solid #111827; outline-offset: 2px; }