:root { --font-body: 'Manrope', sans-serif; --font-heading: 'Space Grotesk', sans-serif; --bg-main: #f4f6f8; --surface: #ffffff; --surface-soft: #f8fafc; --text-main: #172033; --text-muted: #64748b; --line: #d9e1ea; --primary: #0f766e; --primary-hover: #0b5f59; --primary-soft: #e2f4ef; --danger: #b42318; --danger-soft: #fee4e2; --radius: 12px; --radius-sm: 8px; } * { box-sizing: border-box; } html, body { margin: 0; padding: 0; } body { min-height: 100vh; background: var(--bg-main); color: var(--text-main); font-family: var(--font-body); } a { color: inherit; } h1, h2, h3, p { margin: 0; } h1, h2, h3 { font-family: var(--font-heading); letter-spacing: -0.02em; } .page-shell { width: min(1120px, 100% - 2rem); margin: 0 auto; padding: 1.6rem 0 2.5rem; display: grid; gap: 1rem; } .page-shell.narrow { width: min(560px, 100% - 1.5rem); } .page-header, .panel { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); } .page-header { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.8rem; padding: 1rem; } .header-main, .panel, .form-grid, .stack-actions { display: grid; gap: 0.75rem; } .panel { padding: 1rem; } .panel.centered { text-align: center; justify-items: center; } .muted { color: var(--text-muted); } .toolbar, .row-actions, .inline-form, .tabs, .summary-line, .breadcrumbs { display: flex; flex-wrap: wrap; align-items: center; } .toolbar, .row-actions, .inline-form { gap: 0.45rem; } .tabs { gap: 0.4rem; padding: 0.25rem; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); } .tab { border-radius: var(--radius-sm); color: var(--text-muted); font-weight: 700; padding: 0.48rem 0.75rem; text-decoration: none; } .tab:hover, .tab.active { background: var(--primary-soft); color: #0c4f4a; } .summary-line { gap: 0.5rem; color: var(--text-muted); font-size: 0.9rem; } .summary-line span, .chip, .badge { display: inline-flex; align-items: center; border: 1px solid var(--line); border-radius: 999px; background: var(--surface); } .summary-line span { padding: 0.28rem 0.6rem; } .status { border: 1px solid transparent; border-radius: var(--radius-sm); padding: 0.65rem 0.8rem; font-size: 0.93rem; } .status.success { background: #ddf5ea; border-color: #b7e8d3; color: #10513f; } .status.error { background: var(--danger-soft); border-color: #f8b4af; color: var(--danger); } .field { display: grid; gap: 0.35rem; font-size: 0.92rem; font-weight: 700; } .input { width: 100%; border: 1px solid var(--line); border-radius: var(--radius-sm); background: #fff; color: var(--text-main); font: inherit; padding: 0.52rem 0.62rem; } .input:focus-visible, .btn:focus-visible, .tab:focus-visible, .chip:focus-visible, .action-menu > summary:focus-visible { outline: 3px solid rgb(15 118 110 / 0.22); outline-offset: 2px; } .input.small { padding: 0.38rem 0.5rem; font-size: 0.85rem; } .btn { appearance: none; display: inline-flex; align-items: center; justify-content: center; border: 1px solid transparent; border-radius: var(--radius-sm); background: var(--primary); color: #fff; cursor: pointer; font: inherit; font-weight: 700; padding: 0.48rem 0.75rem; text-decoration: none; } .btn:hover { background: var(--primary-hover); } .btn:disabled { cursor: not-allowed; opacity: 0.65; } .btn.secondary { background: #fff; border-color: var(--line); color: var(--text-main); } .btn.secondary:hover { background: var(--surface-soft); } .btn.danger { background: var(--danger-soft); border-color: #f7b0a8; color: var(--danger); } .btn.danger:hover { background: #fccfc9; } .chip { gap: 0.35rem; color: var(--text-main); font-size: 0.82rem; padding: 0.3rem 0.58rem; text-decoration: none; } .chip.primary { background: var(--primary-soft); border-color: #9ddac6; color: #0c4f4a; } .badge { border-color: transparent; font-size: 0.76rem; font-weight: 700; letter-spacing: 0.02em; padding: 0.18rem 0.5rem; } .badge.primary { background: #e5f5ef; border-color: #bce6d9; color: #0c4f4a; } .badge.success { background: #e6f7ec; border-color: #bee8ce; color: #1c6b42; } .badge.danger { background: #fee7e4; border-color: #fbc0b8; color: #a72d20; } .metric-grid { display: grid; gap: 0.75rem; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); } .metric { display: grid; gap: 0.2rem; border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 0.7rem; } .metric strong { font-family: var(--font-heading); font-size: 1.25rem; } .request-meta-wrap { max-width: 520px; } .request-meta-table { min-width: 0; } .request-meta-table th, .request-meta-table td { font-size: 0.86rem; padding: 0.45rem 0.6rem; } .request-meta-table th { width: 10rem; color: var(--text-muted); font-weight: 700; } .upload-progress { display: grid; gap: 0.45rem; border: 1px solid #bde1d9; border-radius: var(--radius-sm); background: #ecf8f4; padding: 0.58rem 0.66rem; } .upload-progress-row { display: flex; align-items: center; justify-content: space-between; gap: 0.6rem; font-size: 0.86rem; } .upload-progress-track { height: 8px; overflow: hidden; border-radius: 999px; background: #d7ebe4; } .upload-progress-fill { width: 0%; height: 100%; background: var(--primary); transition: width 140ms linear; } .table-wrap { width: 100%; overflow-x: auto; border: 1px solid var(--line); border-radius: var(--radius-sm); background: #fff; } table { width: 100%; min-width: 680px; border-collapse: collapse; } th, td { border-top: 1px solid var(--line); padding: 0.62rem 0.66rem; text-align: left; vertical-align: top; font-size: 0.9rem; } thead th, tbody tr:first-child th, tbody tr:first-child td { border-top: none; } thead th { background: var(--surface-soft); color: var(--text-muted); font-size: 0.74rem; letter-spacing: 0.05em; text-transform: uppercase; } .action-form-row { flex-wrap: nowrap; } .action-form-row .input.small { width: 7rem; min-width: 7rem; } .input.path-input { min-width: 12rem; } .inline-form.stacked { display: grid; } .check-row { display: flex; align-items: center; gap: 0.45rem; color: var(--text-muted); font-size: 0.92rem; font-weight: 700; } .action-menu > summary { display: inline-flex; cursor: pointer; list-style: none; border: 1px solid var(--line); border-radius: var(--radius-sm); background: #fff; font-weight: 700; padding: 0.48rem 0.75rem; } .action-menu > summary::-webkit-details-marker { display: none; } .action-menu[open] > summary { background: var(--surface-soft); } .action-menu-panel { display: grid; gap: 0.55rem; margin-top: 0.6rem; min-width: 13rem; } .breadcrumbs { gap: 0.35rem; font-size: 0.88rem; } .breadcrumbs a { color: #0f5f84; text-decoration: none; } .breadcrumbs a:hover { text-decoration: underline; } .help-box { border-top: 1px solid var(--line); padding-top: 0.75rem; } .help-box summary { cursor: pointer; font-weight: 700; } pre { overflow-x: auto; border: 1px solid var(--line); border-radius: var(--radius-sm); background: #0f172a; color: #e2e8f0; font-size: 0.82rem; padding: 0.75rem; } .mono, code { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace; } .mono { font-size: 0.8rem; } @media (max-width: 900px) { .page-shell { width: min(100% - 1rem, 1120px); padding-top: 1rem; } .page-header, .panel { padding: 0.85rem; } table { min-width: 620px; } }