a, button, input, select, textarea, [onclick] {
-webkit-tap-highlight-color: transparent;
}
:root {
--cream: #e7e2bf;
--sand:  #e5dab7;
--sage:  #c8c9ac;
--olive: #928b61;
--olive-deep: #6e6845;
--black: #090808;
--paper: #f6f3e3;
--paper-2: #ece6cd;
--paper-3: #d8d4b6;
--rule: #c8c2a0;
--rule-soft: #d9d3b3;
--ink: #090808;
--ink-2: #1f1d18;
--ink-3: #56523f;
--ink-4: #8a8466;
--ink-muted: #5e5a4c;
--khaki: #928b61;
--khaki-deep: #6e6845;
--accent: #928b61;
--accent-tint: rgba(146, 139, 97, 0.18);
--hot: #b54e2c;
--serif: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
--sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
--mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;
--content-w: 1280px;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
html, body { background: var(--paper); color: var(--ink); }
* { scrollbar-width: thin; scrollbar-color: var(--rule) transparent; }
::-webkit-scrollbar { width: 12px; height: 12px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--rule); border-radius: 7px; border: 3px solid var(--paper); }
::-webkit-scrollbar-thumb:hover { background: var(--ink-3); }
::-webkit-scrollbar-corner { background: transparent; }
body {
font-family: var(--sans);
font-size: 14px;
line-height: 1.5;
font-feature-settings: "ss01", "cv11";
letter-spacing: -0.005em;
-webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration: none; }
img { display: block; max-width: 100%; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }
input, select { font: inherit; color: inherit; }
.topbar {
border-bottom: 1px solid var(--rule);
background: var(--paper-3);
position: sticky; top: 0; z-index: 40;
}
.topbar .nav .nav-signin { display: none; }
.topbar .nav { color: var(--ink-3); }
.topbar .nav a:hover { color: var(--ink); }
.topbar .nav a.active { color: var(--ink); border-bottom-color: var(--olive); }
.topbar .brand { color: var(--ink); }
.topbar .stats { display: flex; gap: 20px; font-size: 12px; color: var(--ink-3); }
.topbar .stats b { font-size: 13px; font-weight: 600; color: var(--ink); margin-right: 4px; }
.topbar .topbar-actions { color: var(--ink-3); margin-left: auto; display: flex; align-items: center; gap: 16px; }
.topbar .topbar-actions a.muted { color: var(--ink-3); }
.signin-btn { background: var(--olive-deep); color: #fff; border: none; border-radius: 6px; padding: 6px 14px; font-size: 13px; font-weight: 500; cursor: pointer; font-family: var(--sans); }
.signin-btn:hover { background: var(--olive); }
.auth-avatar { width: 28px; height: 28px; border-radius: 50%; cursor: pointer; }
.auth-avatar-initials { width: 28px; height: 28px; border-radius: 50%; cursor: pointer; background: var(--olive-deep); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 600; }
.auth-menu { position: absolute; right: 0; top: 100%; margin-top: 6px; background: var(--cream); border: 1px solid var(--rule); border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.12); padding: 8px 0; z-index: 200; min-width: 140px; }
.auth-menu-name { padding: 6px 14px; font-size: 12px; color: var(--ink-3); border-bottom: 1px solid var(--rule); margin-bottom: 4px; }
.auth-menu button, .auth-menu-link { display: block; width: 100%; text-align: left; background: none; border: none; padding: 6px 14px; font-size: 13px; cursor: pointer; color: var(--ink-2); text-decoration: none; box-sizing: border-box; }
.auth-menu button:hover, .auth-menu-link:hover { background: var(--sand); }
.signed-in .desktop-signin,
.signed-in .nav-signin,
.signed-in .signin-btn,
.signed-in #static-signin-btn,
.signed-in #static-signin-btn-mobile { display: none !important; }
html:not(.signed-in) #nav-saved { color: var(--ink-muted); }
html:not(.signed-in) #nav-saved:hover { color: var(--ink); }
.topbar .topbar-actions a.muted:hover { color: var(--ink); }
.topbar .search {
background: rgba(255,255,255,0.5);
border-color: var(--rule);
color: var(--ink-3);
}
.topbar .search:focus-within {
border-color: var(--olive);
color: var(--ink);
box-shadow: 0 0 0 3px rgba(146, 139, 97, 0.18);
}
.topbar .search input { color: var(--ink); }
.topbar .search input::placeholder { color: var(--ink-4); }
.topbar .kbd {
background: rgba(255,255,255,0.5);
border-color: var(--rule);
color: var(--ink-4);
}
.topbar-inner {
max-width: var(--content-w);
margin: 0 auto;
padding: 14px 32px;
display: flex; align-items: center; gap: 32px;
min-height: 64px;
box-sizing: border-box;
}
.brand {
display: flex; align-items: center;
flex-shrink: 0;
}
.brand-logo {
height: 28px;
width: auto;
}
.nav {
display: flex; gap: 24px;
flex-shrink: 0; white-space: nowrap;
font-size: 13.5px;
color: var(--ink-3);
}
.nav a { padding: 6px 0; border-bottom: 1px solid transparent; }
.nav a:hover { color: var(--ink); }
.nav a.active { color: var(--ink); border-bottom-color: var(--ink); }
.topbar-actions {
margin-left: auto;
display: flex; align-items: center; gap: 16px;
font-size: 13px;
}
.search {
display: flex; align-items: center; gap: 8px;
border: 1px solid var(--rule);
background: var(--sand);
border-radius: 6px;
padding: 4px 10px;
width: 280px;
color: var(--ink-3);
}
.search:focus-within { border-color: var(--olive); color: var(--ink); box-shadow: 0 0 0 3px var(--accent-tint); background: var(--cream); }
.search input {
border: 0; outline: 0; background: transparent;
width: 100%;
font-size: 13.5px;
}
.search svg { flex-shrink: 0; opacity: 0.7; }
.filter-btn-mobile { display: none; }
.kbd {
font-family: var(--mono);
font-size: 10.5px;
border: 1px solid var(--rule);
padding: 1px 5px;
border-radius: 4px;
color: var(--ink-4);
background: var(--paper);
}
.btn {
font-size: 13px;
padding: 7px 14px;
border: 1px solid var(--ink);
background: var(--ink);
color: #fff;
border-radius: 6px;
font-weight: 500;
text-decoration: none;
display: inline-block;
}
.btn.ghost {
background: var(--sand);
color: var(--ink);
border-color: var(--rule);
}
.btn:hover { opacity: 0.9; }
.page {
max-width: var(--content-w);
margin: 0 auto;
padding: 28px 32px 80px;
}
.eyebrow {
font-size: 12px;
color: var(--ink-3);
font-weight: 500;
}
.eyebrow a { color: var(--olive); }
.eyebrow a:hover { text-decoration: underline; }
.page-head {
display: flex; align-items: flex-end; justify-content: space-between;
gap: 32px;
border-bottom: 1px solid var(--rule);
padding-bottom: 20px;
margin-bottom: 28px;
}
.page-head h1 {
font-size: 22px;
line-height: 1.2;
letter-spacing: -0.02em;
font-weight: 600;
margin-top: 4px;
}
.page-head .stats {
display: flex; gap: 28px;
font-size: 12px;
color: var(--ink-3);
}
.page-head .stats b {
display: block;
font-size: 18px;
font-weight: 600;
color: var(--ink);
letter-spacing: -0.01em;
margin-bottom: 2px;
}
.page-intro {
max-width: 78ch;
font-size: 14px;
line-height: 1.65;
color: var(--ink-3);
margin: -8px 0 28px;
}
.tabs {
display: flex; gap: 0;
margin-bottom: 18px;
align-items: center;
justify-content: flex-end;
}
.tablist { display: flex; gap: 28px; }
.tab {
padding: 10px 0;
margin-bottom: -1px;
font-size: 13px;
color: var(--ink-3);
border-bottom: 1.5px solid transparent;
display: flex; gap: 6px; align-items: baseline;
cursor: pointer;
background: none; border-top: 0; border-left: 0; border-right: 0;
}
.tab .count {
font-size: 11.5px;
color: var(--ink-3);
font-variant-numeric: tabular-nums;
background: var(--sand);
padding: 1px 6px;
border-radius: 999px;
font-weight: 500;
}
.tab.active .count {
background: var(--olive);
color: var(--cream);
}
.tab.active { color: var(--ink); border-bottom-color: var(--khaki); font-weight: 500; }
.tab-tools {
display: flex; align-items: center; gap: 14px;
flex: 1;
font-size: 12.5px;
color: var(--ink-3);
}
.view-toggle {
display: inline-flex; align-items: center; flex-shrink: 0;
height: 34px;
border: 1px solid var(--rule); border-radius: 999px;
background: var(--paper-2); padding: 2px;
}
.view-toggle button {
border: 0; background: transparent; cursor: pointer;
font: inherit; font-size: 12.5px; color: var(--ink-3);
padding: 4px 12px; border-radius: 999px; white-space: nowrap;
}
.view-toggle button.active { background: var(--olive-deep); color: #fff; }
.view-toggle button.locked { color: var(--ink-muted); }
.view-toggle button.locked:hover { color: var(--ink-3); }
.foryou-note {
font-size: 12.5px; color: var(--ink-3);
background: var(--paper-2); border: 1px solid var(--rule);
border-radius: 8px; padding: 8px 12px; margin: 0 0 14px;
}
.foryou-note a { color: var(--olive); text-decoration: underline; }
.tab-tools .search { margin-left: auto; height: 34px; }
.tab-tools .sort { display: flex; align-items: center; gap: 6px; position: relative; }
.sort-btn {
display: inline-flex; align-items: center; gap: 5px;
border: 0; background: transparent; cursor: pointer;
font: inherit; font-size: 12.5px; color: var(--ink-3);
padding: 0;
}
.sort-btn:focus, .sort-btn:focus-visible { outline: none; }
.sort-btn .sort-value { color: var(--ink); font-weight: 500; }
.sort-btn .sort-caret { color: var(--ink-3); transition: transform .15s ease; }
.sort.open .sort-btn .sort-caret { transform: rotate(180deg); }
.sort-menu {
display: none; position: absolute; right: 0; top: 100%; margin-top: 6px;
background: var(--cream); border: 1px solid var(--rule); border-radius: 8px;
box-shadow: 0 4px 12px rgba(0,0,0,0.12); padding: 6px 0; z-index: 200; min-width: 150px;
}
.sort.open .sort-menu { display: block; }
.sort-menu [role="option"] {
display: block; width: 100%; box-sizing: border-box; text-align: left;
background: none; border: 0; cursor: pointer;
padding: 7px 14px; font: inherit; font-size: 12.5px; color: var(--ink-2);
}
.sort-menu [role="option"]:hover { background: var(--sand); color: var(--ink); }
.sort-menu [role="option"][aria-selected="true"] { color: var(--ink); font-weight: 600; }
.sort-menu [role="option"]:focus, .sort-menu [role="option"]:focus-visible { outline: none; }
.with-sidebar {
display: grid;
grid-template-columns: 240px 1fr;
gap: 48px;
align-items: flex-start;
}
.with-sidebar.no-sidebar {
grid-template-columns: 1fr;
}
.filter-side h3 {
font-size: 12px;
color: var(--ink-3);
font-weight: 600;
margin-bottom: 14px;
padding-bottom: 12px;
border-bottom: 1px solid var(--rule);
}
.filter-group { margin-bottom: 12px; }
.filter-group-title {
display: flex; justify-content: space-between; align-items: center;
font-size: 14px; font-weight: 500;
padding: 10px 0;
color: var(--ink);
cursor: pointer;
user-select: none;
}
.filter-group-title:hover { color: var(--olive-deep); }
.filter-arrow { font-size: 0; width: 8px; height: 8px; border-right: 2px solid var(--ink-3); border-bottom: 2px solid var(--ink-3); transform: rotate(45deg); transition: transform 0.15s; margin-left: auto; margin-right: 6px; }
.filter-group.open .filter-arrow { transform: rotate(-135deg); }
.filter-list { display: none; flex-direction: column; gap: 4px; padding-top: 6px; }
.filter-group.open .filter-list { display: flex; }
.filter-group-title .count {
font-family: var(--mono);
font-size: 10.5px;
color: var(--ink-4);
}
.filter-list label {
display: flex; gap: 10px; align-items: center;
font-size: 13px;
color: var(--ink-2);
cursor: pointer;
padding: 3px 0;
}
.filter-list label:hover { color: var(--ink); }
.active-filters { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 14px; }
.filter-chip {
display: inline-flex; align-items: center; gap: 6px;
background: var(--paper-2); border: 1px solid var(--rule); color: var(--ink);
border-radius: 999px; padding: 4px 10px 4px 12px;
font: inherit; font-size: 12px; line-height: 1.4; cursor: pointer;
}
.filter-chip:hover { border-color: var(--olive); }
.filter-chip .chip-x { font-size: 15px; line-height: 1; color: var(--ink-3); }
.filter-chip:hover .chip-x { color: var(--ink); }
.filter-chip.chip-clear { background: transparent; border-color: transparent; color: var(--ink-3); padding-left: 8px; }
.filter-chip.chip-clear:hover { color: var(--ink); text-decoration: underline; }
.filter-list .num {
margin-left: auto;
font-size: 11.5px;
color: var(--ink-4);
font-variant-numeric: tabular-nums;
}
.filter-list input[type="checkbox"] {
appearance: none;
width: 13px; height: 13px;
border: 1px solid var(--ink-4);
border-radius: 1px;
background: var(--paper);
position: relative;
cursor: pointer;
flex-shrink: 0;
}
.filter-list input[type="checkbox"]:checked {
background: var(--ink);
border-color: var(--ink);
}
.filter-list input[type="checkbox"]:checked::after {
content: ""; position: absolute;
left: 3px; top: 0px; width: 4px; height: 8px;
border: solid var(--paper);
border-width: 0 1.5px 1.5px 0;
transform: rotate(45deg);
}
.filter-search-input {
width: 100%;
padding: 4px 8px;
font-size: 12px;
border: 1px solid var(--rule);
border-radius: 4px;
background: var(--paper);
margin-bottom: 6px;
outline: none;
color: var(--ink);
font-family: inherit;
}
.filter-search-input:focus {
border-color: var(--ink-4);
}
.date-preset {
display: flex; gap: 10px; align-items: center;
font-size: 13px; color: var(--ink-2); cursor: pointer; padding: 3px 0;
}
.date-preset:hover { color: var(--ink); }
.date-preset input[type="radio"] {
appearance: none; width: 13px; height: 13px;
border: 1px solid var(--ink-4); border-radius: 50%;
background: var(--paper); cursor: pointer; flex-shrink: 0;
}
.date-preset input[type="radio"]:checked {
background: var(--ink); border-color: var(--ink);
}
.date-custom { margin-top: 8px; display: flex; flex-direction: column; gap: 6px; }
.date-custom label { font-size: 12px; color: var(--ink-3); display: flex; align-items: center; gap: 6px; }
.date-custom input[type="date"] {
flex: 1; padding: 4px 6px; font-size: 12px;
border: 1px solid var(--rule); border-radius: 4px;
background: var(--paper); color: var(--ink); font-family: inherit;
}
.filter-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 14px;
padding-bottom: 12px;
border-bottom: 1px solid var(--rule);
}
.filter-header h3 { margin-bottom: 0; padding-bottom: 0; border-bottom: none; }
#filter-clear-inline {
font-size: 11px;
color: var(--ink-4);
cursor: pointer;
background: none;
border: none;
padding: 0;
}
#filter-clear-inline:hover { color: var(--ink); }
.job-feed { display: flex; flex-direction: column; }
.with-sidebar.no-sidebar #content { min-height: calc(100vh - 150px); display: flex; flex-direction: column; }
.feed-tail { margin-top: auto; padding: 30px 0 6px; text-align: center; font-style: normal; }
.feed-tail a { color: var(--ink-3); font-size: 13px; font-weight: 500; text-decoration: none; }
.feed-tail a:hover { color: var(--olive-deep); }
.empty { padding: 48px 0; text-align: center; color: var(--ink-4); }
.with-sidebar.no-sidebar #content .empty { margin: auto 0; }
.with-sidebar.no-sidebar #content .empty .feed-tail { margin-top: 14px; }
.job-row {
position: relative;
border-bottom: 1px solid var(--rule);
padding: 18px 14px;
margin: 0 -14px;
display: grid;
grid-template-columns: 40px 1fr auto;
gap: 16px;
align-items: flex-start;
transition: background 0.12s;
text-decoration: none;
color: inherit;
}
.save-btn-card {
display: inline-flex;
align-items: center;
gap: 5px;
padding: 5px 10px;
border: 1px solid var(--rule);
background: var(--sand);
border-radius: 5px;
cursor: pointer;
font-size: 12px;
font-weight: 500;
color: var(--ink-3);
font-family: var(--sans);
}
.save-btn-card:hover { background: var(--rule-soft); color: var(--ink); }
.save-btn-card.saved { border-color: var(--olive-deep); color: var(--olive-deep); }
.save-btn-card.saved svg { fill: var(--olive-deep); }
.save-btn-locked { color: var(--ink-muted); }
.save-btn-locked:hover { color: var(--ink-2); }
.job-side-top { display: flex; align-items: center; justify-content: flex-end; gap: 10px; }
.job-row:first-child { border-top: 1px solid var(--rule); }
.job-row:hover { background: var(--accent-tint); }
.job-logo {
width: 40px; height: 40px;
border: 1px solid var(--rule);
background: #fff;
border-radius: 8px;
display: flex; align-items: center; justify-content: center;
font-size: 13px;
font-weight: 600;
color: var(--ink);
letter-spacing: -0.02em;
overflow: hidden;
}
.job-logo img {
width: 100%; height: 100%;
object-fit: contain;
}
.job-main {
min-width: 0;
}
.job-row .meta-line {
font-size: 12px;
color: var(--ink-3);
display: flex; gap: 10px; align-items: center;
margin-bottom: 6px;
}
.meta-line .dot { width: 2px; height: 2px; background: var(--ink-4); border-radius: 50%; flex-shrink: 0; }
.meta-line .new {
color: var(--paper);
background: var(--olive-deep);
padding: 1px 7px;
border-radius: 3px;
font-weight: 500;
font-size: 11px;
letter-spacing: 0.02em;
}
.promoted-badge {
font-size: 11.5px;
padding: 2px 8px;
border: 1px solid #2e9985;
border-radius: 4px;
color: #fff;
background: #2e9985;
font-weight: 500;
}
.promoted-corner { position: absolute; bottom: 16px; right: 14px; }
.promoted-row { background: var(--accent-tint); }
.promoted-row:hover { background: rgba(146, 139, 97, 0.28); }
.promoted-row .ts { display: none; }
.sk-card { pointer-events: none; animation: sk-pulse 1.4s ease-in-out infinite; min-height: 221px; }
.sk-box { background: var(--paper-3); border-radius: 4px; }
.sk-card .job-logo.sk-box { border-radius: 8px; }
.sk-card .sk-l1 { height: 16px; width: 40%; margin-bottom: 10px; }
.sk-card .sk-l2 { height: 26px; width: 66%; margin-bottom: 16px; }
.sk-card .sk-l3 { height: 12px; width: 100%; margin-bottom: 9px; }
.sk-card .sk-l4 { height: 12px; width: 88%; margin-bottom: 9px; }
.sk-card .sk-l5 { height: 12px; width: 54%; margin-bottom: 18px; }
.sk-card .sk-tags { display: flex; gap: 6px; }
.sk-card .sk-tag { height: 24px; width: 58px; }
@media (max-width: 900px) {
.sk-card { min-height: 277px; }
.sk-card .sk-l1 { height: 40px; margin-bottom: 8px; }
.sk-card .sk-l2 { height: 38px; margin-bottom: 16px; }
.sk-card .sk-l5 { margin-bottom: 20px; }
.sk-card .sk-tag { height: 26px; }
}
@keyframes sk-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
@media (prefers-reduced-motion: reduce) { .sk-card { animation: none; } }
.translated-badge {
color: var(--ink-3);
background: var(--paper-2);
padding: 1px 7px;
border-radius: 3px;
font-size: 11px;
letter-spacing: 0.02em;
}
.detail-main > .translated-badge {
display: inline-block;
margin-bottom: 16px;
font-size: 12px;
padding: 3px 10px;
}
.admin-link { display: none; }
.admin-view { padding: 24px; max-width: 900px; margin: 0 auto; box-sizing: border-box; }
#admin-view { max-width: 100vw; min-height: calc(100vh - 144px); overflow-x: hidden; }
#admin-tab-content { overflow-x: auto; }
.admin-market-dashboard { display: block; width: 100%; min-height: 900px; border: 0; background: transparent; }
.admin-view h2 { font-size: 20px; margin-bottom: 16px; }
.admin-view-wide { max-width: var(--content-w); padding: 28px 32px 60px; }
.admin-layout { display: grid; grid-template-columns: 240px 1fr; gap: 48px; align-items: start; }
.admin-nav { display: flex; flex-direction: column; gap: 2px; position: sticky; top: 20px; }
.admin-nav-item { width: 100%; text-align: left; padding: 9px 14px; border: none; background: none; border-radius: 6px; font-size: 14px; font-weight: 500; color: var(--ink-3); cursor: pointer; font-family: var(--sans); }
.admin-nav-item:hover { background: var(--sand); color: var(--ink); }
.admin-nav-item.active { background: var(--olive); color: #fff; }
.admin-nav-mobile {
display: none; width: 100%; margin-bottom: 14px;
padding: 8px 2px; border: none; background: transparent;
font-family: var(--sans); font-size: 17px; font-weight: 600; color: var(--ink);
cursor: pointer;
}
.admin-nav-mobile:focus { outline: none; }
.admin-nav-mobile option { font-size: 15px; font-weight: 400; color: var(--ink); background: var(--paper); }
@media (max-width: 768px) {
.admin-view-wide { padding: 20px 18px 60px; }
.admin-layout { grid-template-columns: 1fr; gap: 0; }
.admin-nav { display: none; }
.admin-nav-mobile { display: block; }
}
.admin-search { width: 100%; padding: 8px 12px; border: 1px solid var(--rule); border-radius: 6px; font-size: 14px; margin-bottom: 16px; font-family: var(--sans); background: var(--paper-3); }
.admin-job-list { list-style: none; padding: 0; margin: 0; }
.admin-job-list li { display: flex; align-items: center; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--rule-soft); }
.admin-job-list .job-info { flex: 1; min-width: 0; }
.admin-job-list .job-title { font-weight: 500; font-size: 14px; }
.admin-job-list .job-company { font-size: 12px; color: var(--ink-3); }
.admin-promote-btn { background: var(--olive-deep); color: #fff; border: none; border-radius: 6px; padding: 6px 14px; font-size: 12px; font-weight: 500; cursor: pointer; font-family: var(--sans); flex-shrink: 0; }
.admin-promote-btn:hover { background: var(--olive); }
.admin-promote-btn.remove { background: var(--hot); color: #fff; border: none; }
.admin-promote-btn.remove:hover { background: var(--hot); filter: brightness(0.92); }
.admin-promote-btn.demote { background: var(--paper-3); color: var(--ink-2); border: 1px solid var(--rule); }
.admin-promote-btn.demote:hover { background: var(--sand); }
.art-move { background: var(--paper-3); color: var(--ink-2); border: 1px solid var(--rule); border-radius: 5px; width: 26px; height: 22px; font-size: 11px; line-height: 1; cursor: pointer; padding: 0; font-family: var(--sans); }
.art-move:hover:not(:disabled) { background: var(--sand); }
.art-move:disabled { opacity: 0.35; cursor: default; }
.au-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 16px; margin-bottom: 12px; }
.au-grid label, .au-full { display: flex; flex-direction: column; gap: 4px; font-size: 13px; color: var(--ink-2); font-weight: 500; }
.au-full { margin-bottom: 12px; }
.au-grid input, .au-grid select, .au-full input, .au-full textarea, .au-full select {
font-family: var(--sans); font-size: 14px; padding: 7px 9px; border: 1px solid var(--rule); border-radius: 6px;
background: var(--paper); color: var(--ink); font-weight: 400;
}
.au-grid input:disabled { opacity: 0.6; }
.au-body { font-family: var(--mono, monospace); line-height: 1.5; resize: vertical; }
.au-filebtn { display: inline-block; background: var(--paper-3); color: var(--ink-2); border: 1px solid var(--rule); border-radius: 6px; padding: 7px 14px; font-size: 13px; cursor: pointer; font-family: var(--sans); }
.au-filebtn:hover { background: var(--sand); }
.au-filebtn input[type="file"] { display: none; }
.au-inline { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--ink-2); font-weight: 500; }
.au-actions { display: flex; align-items: center; gap: 12px; margin-top: 14px; flex-wrap: wrap; }
.au-img { display: flex; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--rule-soft); align-items: flex-start; }
.au-img > img { width: 90px; height: 68px; object-fit: cover; border-radius: 6px; border: 1px solid var(--rule); flex-shrink: 0; background: var(--paper-3); }
.au-img-loading { width: 90px; height: 68px; flex-shrink: 0; border-radius: 6px; border: 1px solid var(--rule); background: var(--paper-3); display: flex; align-items: center; justify-content: center; font-size: 11px; color: var(--ink-3); animation: au-pulse 1.2s ease-in-out infinite; }
@keyframes au-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.55; } }
.au-img-meta { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.au-img-name { font-size: 13px; font-weight: 500; word-break: break-all; }
.au-img-meta input[type="text"] { font-family: var(--sans); font-size: 13px; padding: 5px 8px; border: 1px solid var(--rule); border-radius: 6px; background: var(--paper); color: var(--ink); }
.au-img-actions { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
.au-row { display: flex; align-items: center; gap: 12px; }
.au-row-main { flex: 1; min-width: 0; }
.au-row-actions { display: flex; gap: 8px; flex-shrink: 0; }
.au-btn-secondary { background: var(--paper-3); color: var(--ink-2); border: 1px solid var(--rule); border-radius: 6px; padding: 5px 11px; font-size: 12px; cursor: pointer; font-family: var(--sans); }
.au-btn-secondary:hover { background: var(--sand); }
.au-btn-danger { background: var(--hot); color: #fff; border: none; border-radius: 6px; padding: 5px 11px; font-size: 12px; cursor: pointer; font-family: var(--sans); }
.au-btn-danger:hover { filter: brightness(0.92); }
@media (max-width: 640px) {
.au-grid { grid-template-columns: 1fr; }
.au-row { flex-wrap: wrap; align-items: flex-start; }
.au-row-main { flex: 1 1 100%; }
.au-row-actions { flex-wrap: wrap; }
.au-row-actions button { flex: 1 1 auto; }
.au-img { flex-wrap: wrap; }
.au-img-actions { width: 100%; }
}
.art-topbar { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 14px; flex-wrap: wrap; }
.art-view-toggle { display: inline-flex; border: 1px solid var(--rule); border-radius: 7px; overflow: hidden; }
.art-view-toggle button { background: var(--paper); color: var(--ink-2); border: none; padding: 6px 16px; font-size: 13px; cursor: pointer; font-family: var(--sans); }
.art-view-toggle button.active { background: var(--olive-deep); color: #fff; }
.art-form-card { border: 1px solid var(--rule); border-radius: 10px; padding: 16px 18px; margin-bottom: 18px; }
.art-catadd { display: flex; gap: 8px; margin-bottom: 12px; flex-wrap: wrap; }
.art-catadd input { flex: 1; max-width: 320px; font-family: var(--sans); font-size: 13.5px; padding: 6px 9px; border: 1px solid var(--rule); border-radius: 6px; background: var(--paper); color: var(--ink); }
.art-catctl { display: flex; gap: 8px; margin-bottom: 10px; }
.art-cateditor { border: 1px solid var(--rule); border-radius: 10px; padding: 12px 14px; margin-bottom: 14px; display: flex; flex-direction: column; gap: 10px; }
.art-cateditor label { display: flex; flex-direction: column; gap: 4px; font-size: 13px; color: var(--ink-2); font-weight: 500; }
.art-cateditor input, .art-cateditor textarea { font-family: var(--sans); font-weight: 400; font-size: 13.5px; padding: 6px 9px; border: 1px solid var(--rule); border-radius: 6px; background: var(--paper); color: var(--ink); }
.art-cateditor textarea { resize: vertical; }
.art-cateditor-order { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--ink-3); flex-wrap: wrap; }
.au-ms { position: relative; border: 1px solid var(--rule); border-radius: 6px; background: var(--paper); padding: 6px; }
.au-ms-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 6px; }
.au-ms-chips:empty { display: none; }
.au-ms-chip { display: inline-flex; align-items: center; gap: 6px; background: var(--paper-3); border: 1px solid var(--rule); border-radius: 14px; padding: 3px 6px 3px 10px; font-size: 12.5px; color: var(--ink-2); }
.au-ms-chip button { background: none; border: none; cursor: pointer; font-size: 15px; line-height: 1; color: var(--ink-3); padding: 0 2px; }
.au-ms-chip button:hover { color: var(--hot); }
.au-ms-empty { color: var(--ink-3); font-size: 12.5px; font-weight: 400; }
.au-ms input { width: 100%; border: none; background: transparent; font-family: var(--sans); font-size: 14px; padding: 4px 4px; color: var(--ink); outline: none; }
.au-ms-list { position: absolute; left: 0; right: 0; top: 100%; z-index: 20; margin-top: 2px; max-height: 240px; overflow-y: auto; background: var(--paper); border: 1px solid var(--rule); border-radius: 6px; box-shadow: 0 6px 18px rgba(0,0,0,0.12); }
.au-ms-opt { display: block; width: 100%; text-align: left; background: none; border: none; padding: 8px 12px; font-family: var(--sans); font-size: 13.5px; color: var(--ink); cursor: pointer; }
.au-ms-opt:hover { background: var(--paper-3); }
.au-ms-none { padding: 8px 12px; font-size: 13px; color: var(--ink-3); }
.art-bar { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; flex-wrap: wrap; margin-bottom: 10px; }
.art-tabs { display: flex; flex-wrap: wrap; gap: 6px; }
.art-tab { background: var(--paper-3); color: var(--ink-2); border: 1px solid var(--rule); border-radius: 999px; padding: 5px 14px; font-size: 13px; cursor: pointer; font-family: var(--sans); }
.art-tab:hover { background: var(--sand); }
.art-tab.active { background: var(--olive-deep); color: #fff; border-color: var(--olive-deep); }
.art-tab-add { font-weight: 700; padding: 5px 11px; }
.art-actions { display: flex; align-items: center; gap: 10px; }
.art-dirty { color: var(--hot); font-size: 12px; font-weight: 500; }
.admin-promote-btn:disabled { opacity: 0.5; cursor: default; }
.art-list .art-divider { display: block; padding: 14px 0 4px; border: none; font-size: 11px; text-transform: uppercase; letter-spacing: 0.08em; color: var(--ink-4); font-weight: 600; }
.art-list .art-item { display: flex; align-items: center; gap: 12px; }
.art-move-col { display: flex; flex-direction: column; gap: 2px; }
.art-item-main { flex: 1; min-width: 0; }
.art-item-title { font-weight: 600; font-size: 14px; }
.art-item-meta { font-size: 12px; color: var(--ink-3); margin-top: 2px; }
.art-change-btn { flex-shrink: 0; }
.art-list .art-empty { color: var(--ink-4); font-style: italic; padding: 20px 0; border: none; }
@media (max-width: 640px) {
.art-list .art-item { flex-wrap: wrap; align-items: flex-start; }
.art-item-main { order: -1; flex: 1 1 100%; }
.art-move-col { flex-direction: row; }
.art-list .art-item > button { flex: 1 1 auto; }
}
.art-actions-bottom { justify-content: flex-end; margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--rule); flex-wrap: wrap; }
.art-modal { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; padding: 20px; }
.art-modal-backdrop { position: absolute; inset: 0; background: rgba(0, 0, 0, 0.45); }
.art-modal-inner { position: relative; background: var(--paper); border: 1px solid var(--rule); border-radius: 10px; padding: 22px; width: 100%; max-width: 380px; box-shadow: 0 12px 40px rgba(0, 0, 0, 0.25); }
.art-modal-close { position: absolute; top: 10px; right: 12px; background: none; border: none; font-size: 22px; line-height: 1; color: var(--ink-3); cursor: pointer; }
.art-modal-inner h3 { font-size: 16px; margin-bottom: 6px; }
.art-modal-sub { font-size: 13px; color: var(--ink-3); margin-bottom: 14px; line-height: 1.4; }
.art-cat-opts { display: flex; flex-direction: column; gap: 6px; }
.art-cat-opt { text-align: left; padding: 10px 12px; border: 1px solid var(--rule); border-radius: 6px; background: var(--paper-3); font-family: var(--sans); font-size: 14px; color: var(--ink); cursor: pointer; }
.art-cat-opt:hover:not(:disabled) { background: var(--sand); border-color: var(--olive); }
.art-cat-opt-cur { opacity: 0.7; cursor: default; }
.art-cat-cur-tag { font-size: 11px; color: var(--ink-4); text-transform: uppercase; letter-spacing: 0.06em; margin-left: 6px; }
.admin-divider { margin: 24px 0 12px; }
.admin-divider h3 { font-size: 14px; text-transform: uppercase; letter-spacing: 0.08em; color: var(--ink-4); }
.drag-handle { cursor: grab; color: var(--ink-4); font-size: 18px; user-select: none; padding: 0 4px; }
.admin-job-list li[draggable="true"] { cursor: grab; }
.admin-job-list li.dragging { opacity: 0.4; }
.rec-controls { border: 1px solid var(--rule); border-radius: 8px; padding: 16px; margin-bottom: 24px; background: var(--sand); box-sizing: border-box; }
.rec-controls-head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin-bottom: 12px; }
.rec-weights { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 8px 14px; margin-bottom: 14px; }
.rec-w { display: flex; flex-direction: column; gap: 3px; font-size: 12px; color: var(--ink-2); min-width: 0; }
.rec-w input { width: 100%; box-sizing: border-box; padding: 5px 8px; border: 1px solid var(--rule); border-radius: 4px; font-family: var(--sans); font-size: 13px; background: var(--paper); color: var(--ink); }
.rec-controls-actions { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.rec-controls-actions .auth-submit-btn { width: auto; margin: 0; padding: 8px 18px; }
.rec-digest-email { padding: 7px 10px; border: 1px solid var(--rule); border-radius: 6px; font-size: 13px; font-family: var(--sans); background: var(--paper); color: var(--ink); width: 180px; max-width: 100%; box-sizing: border-box; }
.rec-secondary-btn { background: var(--paper); color: var(--ink-2); border: 1px solid var(--rule); border-radius: 6px; padding: 8px 16px; font-size: 13px; font-family: var(--sans); cursor: pointer; }
.rec-secondary-btn:hover { border-color: var(--olive); color: var(--ink); }
.promo-form { border: 1px solid var(--rule); border-radius: 10px; padding: 20px 22px; margin-bottom: 20px; background: var(--sand); }
.promo-form h3 { font-size: 15px; margin: 0 0 2px; }
.promo-form .promo-job { font-size: 13px; color: var(--ink-2); margin: 0 0 16px; font-weight: 500; }
.promo-form .promo-job span { color: var(--ink-4); font-weight: 400; }
.promo-grid { display: grid; grid-template-columns: auto 1fr; gap: 12px 14px; align-items: center; }
.promo-grid > label { font-size: 13px; color: var(--ink-3); text-align: right; }
.promo-grid > div { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.promo-form select, .promo-form input[type="date"], .promo-form input[type="text"] {
padding: 7px 10px; border: 1px solid var(--rule); border-radius: 6px;
font-family: var(--sans); font-size: 13px; background: var(--paper); color: var(--ink);
}
.promo-form select:focus, .promo-form input:focus { outline: none; border-color: var(--olive); box-shadow: 0 0 0 3px var(--accent-tint); }
.promo-form input[type="text"] { flex: 1; min-width: 200px; }
.promo-hint { font-size: 12px; color: var(--ink-4); }
.promo-err { color: var(--hot); font-size: 13px; margin-top: 12px; display: none; }
.promo-actions { display: flex; gap: 8px; margin-top: 18px; }
.promo-actions .auth-submit-btn { width: auto; margin: 0; padding: 9px 22px; }
.promo-actions .promo-remove-btn { margin-left: auto; }
@media (max-width: 560px) { .promo-grid { grid-template-columns: 1fr; gap: 6px 0; } .promo-grid > label { text-align: left; margin-top: 8px; } }
.addjob-form { max-width: 780px; }
.addjob-form label { display: block; font-size: 12px; font-weight: 600; color: var(--ink-3); margin-bottom: 5px; }
.addjob-form textarea, .addjob-form input[type="text"], .addjob-form select {
width: 100%; padding: 8px 10px; border: 1px solid var(--rule); border-radius: 6px; font-size: 14px;
font-family: var(--sans); background: var(--paper-3); color: var(--ink); box-sizing: border-box;
}
.addjob-form textarea { resize: vertical; line-height: 1.5; }
.addjob-form select:focus, .addjob-form input:focus, .addjob-form textarea:focus { outline: none; border-color: var(--olive); box-shadow: 0 0 0 3px var(--accent-tint); }
.aj-full { margin-bottom: 14px; }
.aj-inline { display: flex; align-items: center; gap: 12px; margin-top: 8px; }
.aj-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; margin-bottom: 14px; }
.aj-span2 { grid-column: 1 / -1; }
.aj-actions { display: flex; gap: 10px; margin-top: 8px; align-items: center; }
.aj-actions .admin-promote-btn { padding: 9px 20px; font-size: 13px; }
.aj-success { margin-top: 16px; padding: 14px 16px; border: 1px solid var(--rule); border-radius: 8px; background: var(--sand); font-size: 14px; }
.aj-preview-modal { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; }
.aj-preview-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,0.5); }
.aj-preview-inner { position: relative; width: min(1100px, 94vw); height: 90vh; background: var(--paper); border-radius: 10px; overflow: hidden; box-shadow: 0 20px 60px rgba(0,0,0,0.35); }
.aj-preview-inner iframe { width: 100%; height: 100%; border: 0; background: var(--paper); }
.aj-preview-inner .auth-modal-close { position: absolute; top: 10px; right: 14px; z-index: 2; }
@media (max-width: 640px) {
.aj-grid { grid-template-columns: 1fr; }
.aj-actions { flex-wrap: wrap; }
.aj-actions > button { flex: 1 1 0; }
.aj-actions > button:first-child { flex-basis: 100%; }
.aj-actions .admin-promote-btn { padding: 9px 12px; }
}
.admin-edit-btn { width: 100%; padding: 10px 14px; margin-bottom: 10px; border: none; background: var(--olive); color: #fff; border-radius: 8px; font-size: 14px; font-weight: 500; cursor: pointer; font-family: var(--sans); }
.admin-edit-btn:hover { background: var(--olive-deep); }
.edit-modal { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: flex-start; justify-content: center; overflow-y: auto; padding: 40px 16px; }
.edit-modal .aj-preview-backdrop { position: fixed; }
.edit-modal-inner { position: relative; width: min(760px, 96vw); margin: auto; background: var(--paper); border-radius: 10px; padding: 24px 26px; box-shadow: 0 20px 60px rgba(0,0,0,0.35); }
.edit-modal-inner .auth-modal-close { position: absolute; top: 12px; right: 16px; z-index: 2; }
.rec-secondary-btn:hover { background: var(--sand); }
.rec-secondary-btn:disabled { opacity: 0.6; cursor: default; }
.rec-topn { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--ink-2); }
.rec-topn input { width: 56px; padding: 5px 8px; border: 1px solid var(--rule); border-radius: 4px; background: var(--paper); color: var(--ink); }
.rec-user { margin-bottom: 28px; }
.rec-user h3 { font-size: 14px; margin-bottom: 6px; color: var(--ink); }
.rec-check { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--ink-2); cursor: pointer; }
.rec-section-label { font-size: 11px; text-transform: uppercase; letter-spacing: 0.08em; color: var(--ink-4); margin: 14px 0 2px; font-weight: 600; }
.rec-section-count { font-weight: 400; letter-spacing: 0; text-transform: none; }
.rec-empty { font-size: 12.5px; color: var(--ink-4); padding: 9px 0; border-top: 1px solid var(--rule-soft); }
.rec-row { display: flex; gap: 12px; align-items: flex-start; padding: 9px 0; border-top: 1px solid var(--rule-soft); }
.rec-rank { width: 30px; color: var(--ink-4); font-size: 13px; font-variant-numeric: tabular-nums; flex-shrink: 0; }
.rec-main { flex: 1; min-width: 0; }
.rec-main a { font-weight: 500; font-size: 14px; color: var(--ink); overflow-wrap: anywhere; }
.rec-company { font-size: 12.5px; color: var(--ink-3); margin-top: 1px; overflow-wrap: anywhere; }
.rec-reasons { font-size: 11.5px; color: var(--ink-4); margin-top: 3px; overflow-wrap: anywhere; }
.rec-score { font-size: 13px; color: var(--olive-deep); font-variant-numeric: tabular-nums; white-space: nowrap; flex-shrink: 0; }
.admin-job-list li.drag-over { border-top: 2px solid var(--olive); }
.admin-job-list .job-title a { color: inherit; text-decoration: none; border-bottom: 1px solid var(--rule-soft); }
.admin-job-list .job-title a:hover { border-color: var(--olive); }
.job-row h2 {
font-size: 16px;
font-weight: 600;
letter-spacing: -0.015em;
line-height: 1.3;
}
.job-row h2 a:hover { text-decoration: underline; text-decoration-color: var(--khaki); text-underline-offset: 4px; }
.job-row .desc {
margin-top: 8px;
color: var(--ink-3);
font-size: 14px;
line-height: 1.55;
max-width: 100%;
display: -webkit-box;
-webkit-line-clamp: 4;
-webkit-box-orient: vertical;
overflow: hidden;
}
.job-row .desc.expanded {
-webkit-line-clamp: unset;
display: block;
}
.desc-expand {
display: none;
background: none;
border: none;
color: var(--olive-deep);
font-size: 12px;
font-weight: 500;
cursor: pointer;
padding: 4px 0 0;
font-family: var(--sans);
}
.desc-expand.visible { display: inline-block; }
.desc-expand:hover { text-decoration: underline; }
.tag-row {
display: flex; gap: 6px; flex-wrap: wrap;
margin-top: 12px;
}
.tag {
font-size: 11.5px;
padding: 2px 8px;
border: 1px solid var(--rule);
border-radius: 4px;
color: var(--ink-2);
background: var(--sand);
font-weight: 500;
}
.tag:nth-child(2n) { background: var(--cream); }
.tag[data-filter] { cursor: pointer; }
.tag[data-filter]:hover { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.tag-active { border-width: 2px; border-color: var(--ink); }
.tag:nth-child(3n) { background: var(--sage); }
.tag.ink { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.tag.khaki { background: var(--khaki); color: #fff; border-color: var(--khaki); }
.job-side {
text-align: right;
display: flex; flex-direction: column; gap: 6px;
padding-top: 4px;
font-size: 12.5px;
color: var(--ink-3);
min-width: 110px;
}
.job-side .ts {
font-size: 12px;
color: var(--ink-3);
}
.job-side .salary-hint {
font-size: 12px;
color: var(--ink-4);
font-variant-numeric: tabular-nums;
}
.pager {
margin-top: 32px;
display: flex; gap: 6px; align-items: center; justify-content: center;
font-size: 13px;
}
.pager button, .pager span {
padding: 6px 11px;
border: 1px solid var(--rule);
color: var(--ink-2);
border-radius: 6px;
font-size: 12.5px;
font-family: inherit;
line-height: 1.5;
font-variant-numeric: tabular-nums;
background: var(--cream);
cursor: pointer;
}
.pager button:hover { background: var(--sand); }
.pager .current { background: var(--olive); color: var(--cream); border-color: var(--olive-deep); }
@media (pointer: coarse) {
.pager button, .pager span {
min-width: 36px;
min-height: 36px;
display: inline-flex;
align-items: center;
justify-content: center;
}
}
.per-page {
margin-top: 14px;
display: flex; gap: 7px; align-items: center; justify-content: center;
font-size: 12.5px; color: var(--ink-3);
}
.per-page-select { position: relative; }
.per-page-btn {
display: inline-flex; align-items: center; gap: 5px;
border: 1px solid var(--rule); border-radius: 6px; background: var(--cream); cursor: pointer;
padding: 5px 9px; font: inherit; font-size: 12.5px; color: var(--ink);
font-variant-numeric: tabular-nums;
}
.per-page-btn:focus, .per-page-btn:focus-visible { outline: none; }
.per-page-caret { color: var(--ink-3); transition: transform .15s ease; }
.per-page.open .per-page-caret { transform: rotate(180deg); }
.per-page-menu {
display: none; position: absolute; bottom: calc(100% + 6px); left: 50%; transform: translateX(-50%);
min-width: 100%;
background: var(--cream); border: 1px solid var(--rule); border-radius: 8px;
box-shadow: 0 4px 12px rgba(0,0,0,0.12); padding: 6px 0; z-index: 200;
}
.per-page.open .per-page-menu { display: block; }
.per-page-menu [role="option"] {
display: block; width: 100%; box-sizing: border-box; text-align: center;
background: none; border: 0; cursor: pointer;
padding: 7px 16px; font: inherit; font-size: 12.5px; color: var(--ink-2);
font-variant-numeric: tabular-nums;
}
.per-page-menu [role="option"]:hover { background: var(--sand); color: var(--ink); }
.per-page-menu [role="option"][aria-selected="true"] { color: var(--ink); font-weight: 600; }
.per-page-menu [role="option"]:focus, .per-page-menu [role="option"]:focus-visible { outline: none; }
footer {
border-top: 1px solid var(--rule);
margin-top: 80px;
padding: 40px 32px 60px;
background: var(--paper-3);
}
.foot-inner {
max-width: var(--content-w);
margin: 0 auto;
display: grid; grid-template-columns: 1.6fr repeat(4, 1fr); gap: 40px;
}
.foot-inner h3 {
font-size: 12px;
color: var(--ink-3);
font-weight: 600;
margin-bottom: 12px;
}
.foot-inner ul { list-style: none; display: flex; flex-direction: column; gap: 8px; font-size: 13px; color: var(--ink-2); }
.foot-inner ul a:hover { color: var(--ink); text-decoration: underline; text-underline-offset: 3px; }
.foot-tag {
font-size: 14px;
font-weight: 600;
letter-spacing: -0.02em;
color: var(--ink);
margin-bottom: 10px;
}
.foot-social {
display: inline-flex;
align-items: center;
gap: 8px;
margin-top: 14px;
color: var(--ink-2);
font-size: 13px;
font-weight: 500;
}
.foot-social svg { width: 18px; height: 18px; flex: 0 0 auto; color: #0a66c2; }
.foot-social:hover { color: var(--ink); text-decoration: underline; text-underline-offset: 3px; }
.foot-bottom {
max-width: var(--content-w);
margin: 32px auto 0;
padding-top: 20px;
border-top: 1px solid var(--rule);
display: flex; justify-content: space-between;
font-size: 12px;
color: var(--ink-3);
}
.detail-grid {
display: grid;
grid-template-columns: 1fr 320px;
gap: 64px;
align-items: flex-start;
}
.detail-main h1 {
font-size: 28px;
letter-spacing: -0.025em;
font-weight: 600;
line-height: 1.2;
margin-top: 8px;
margin-bottom: 12px;
}
.detail-deck {
font-size: 15px;
line-height: 1.55;
color: var(--ink-3);
max-width: 100%;
margin-bottom: 24px;
}
.detail-meta {
display: flex; flex-wrap: wrap; gap: 8px;
margin-bottom: 32px;
}
.section-h {
font-size: 13px;
font-weight: 600;
color: var(--ink);
letter-spacing: -0.005em;
padding-top: 24px;
margin-top: 28px;
margin-bottom: 12px;
}
.prose { font-size: 15.5px; line-height: 1.65; color: var(--ink-2); max-width: 64ch; overflow-wrap: anywhere; }
.prose p { margin-bottom: 14px; }
.prose ul { margin-left: 18px; margin-bottom: 16px; }
.prose ul li { margin-bottom: 6px; }
.prose strong { color: var(--ink); font-weight: 600; }
.detail-side {
position: sticky; top: 88px;
border: 1px solid var(--rule);
padding: 20px;
background: var(--cream);
border-radius: 8px;
}
.detail-side dl {
margin-top: 4px;
display: grid; grid-template-columns: auto 1fr;
gap: 10px 16px;
font-size: 13px;
}
.detail-side dt {
font-size: 12px;
color: var(--ink-3);
align-self: center;
}
.detail-side dd { color: var(--ink); }
.detail-side .apply {
display: block;
text-align: center;
padding: 10px 14px;
background: var(--ink);
color: #fff;
font-size: 13px;
font-weight: 500;
border-radius: 6px;
margin-bottom: 8px;
text-decoration: none;
}
.detail-side .apply:hover { opacity: 0.9; }
.apply-bottom {
display: none;
text-align: center;
padding: 13px 14px;
margin-top: 28px;
background: var(--ink);
color: #fff;
font-size: 14px;
font-weight: 500;
border-radius: 6px;
text-decoration: none;
}
.apply-bottom:hover { opacity: 0.9; }
button.apply, button.apply-bottom { width: 100%; border: none; cursor: pointer; font-family: var(--sans); -webkit-appearance: none; appearance: none; }
.apply-form { display: flex; flex-direction: column; gap: 10px; margin-top: 14px; text-align: left; }
.apply-form input[type="text"], .apply-form input[type="email"], .apply-form textarea {
width: 100%; padding: 10px 12px; border: 1px solid var(--rule); border-radius: 6px; font-size: 14px;
font-family: var(--sans); background: var(--paper-3); color: var(--ink); box-sizing: border-box;
}
.apply-form textarea { resize: vertical; }
.apply-form input:focus, .apply-form textarea:focus { outline: none; border-color: var(--olive); box-shadow: 0 0 0 3px var(--accent-tint); }
.apply-file { display: flex; flex-direction: column; gap: 4px; font-size: 13px; color: var(--ink-3); }
.apply-file em { color: var(--ink-4); font-style: normal; }
.apply-file input[type="file"] { font-size: 12.5px; color: var(--ink-4); }
.apply-file input[type="file"]::file-selector-button,
.apply-file input[type="file"]::-webkit-file-upload-button {
margin-right: 10px;
padding: 7px 14px;
border: 1px solid var(--rule);
border-radius: 6px;
background: var(--sand);
color: var(--ink-2);
font-size: 13px;
font-weight: 500;
font-family: var(--sans);
cursor: pointer;
transition: background 0.1s;
}
.apply-file input[type="file"]::file-selector-button:hover,
.apply-file input[type="file"]::-webkit-file-upload-button:hover { background: var(--cream); }
.apply-privacy { font-size: 11.5px; color: var(--ink-4); line-height: 1.5; margin: 4px 0 2px; }
.apply-privacy a { color: var(--olive); text-decoration: underline; }
#apply-modal .auth-modal-inner { width: 440px; max-height: 90vh; overflow-y: auto; }
.detail-side .save-btn {
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
width: 100%;
padding: 10px 14px;
border: 1px solid var(--rule);
font-size: 13px;
font-weight: 500;
background: var(--sand);
border-radius: 6px;
margin-bottom: 8px;
cursor: pointer;
color: var(--ink);
}
.detail-side .save-btn:hover { background: var(--rule-soft); }
.detail-side .save-btn.saved { border-color: var(--olive-deep); color: var(--olive-deep); }
.detail-side .save-btn.saved svg { fill: var(--olive-deep); }
.detail-side .alert-similar-btn {
display: flex; align-items: center; justify-content: center; gap: 6px;
width: 100%; padding: 10px 14px;
border: 1px solid var(--olive);
font-size: 13px; font-weight: 500; font-family: var(--sans);
background: var(--cream); color: var(--olive-deep);
border-radius: 6px; margin-bottom: 18px; cursor: pointer;
}
.detail-side .alert-similar-btn:hover { background: var(--sand); }
.detail-side .alert-similar-btn:focus, .detail-side .alert-similar-btn:focus-visible { outline: none; }
.detail-side .save {
display: block;
text-align: center;
padding: 10px 14px;
border: 1px solid var(--rule);
font-size: 13px;
font-weight: 500;
background: var(--sand);
border-radius: 6px;
width: 100%;
margin-bottom: 18px;
}
.crumbs {
font-size: 12px;
color: var(--ink-3);
display: flex; gap: 8px; align-items: center;
margin-bottom: 16px;
}
.crumbs a:hover { color: var(--ink); }
.crumbs .sep { opacity: 0.5; }
.prose {
max-width: 70ch;
font-size: 15px;
line-height: 1.7;
color: var(--ink-2);
}
.prose h2 {
font-size: 20px;
color: var(--ink);
margin: 36px 0 12px;
}
.prose h3 {
font-size: 16px;
color: var(--ink);
margin: 24px 0 8px;
}
.prose p { margin-bottom: 14px; }
.prose ul { margin: 0 0 14px 20px; }
.prose li { margin-bottom: 6px; }
.prose a { color: var(--olive); text-decoration: underline; text-underline-offset: 3px; }
.contact-form { display: flex; flex-direction: column; gap: 16px; max-width: 480px; margin-top: 8px; }
.contact-label { display: flex; flex-direction: column; gap: 6px; font-size: 13px; color: var(--ink-3); font-weight: 600; }
.contact-label-text { font-size: 13px; color: var(--ink-3); font-weight: 600; }
.contact-label input, .contact-label textarea, .contact-label select {
font: inherit; font-size: 15px; font-weight: 400; color: var(--ink);
padding: 10px 12px; border: 1px solid var(--rule); border-radius: 8px; background: var(--paper);
width: 100%; box-sizing: border-box;
}
.contact-label textarea { resize: vertical; }
.contact-label select {
appearance: none; -webkit-appearance: none; -moz-appearance: none;
cursor: pointer; padding-right: 34px;
background-color: var(--paper);
background-image: linear-gradient(45deg, transparent 50%, var(--ink-3) 50%),
linear-gradient(135deg, var(--ink-3) 50%, transparent 50%);
background-position: right 16px center, right 11px center;
background-size: 5px 5px, 5px 5px;
background-repeat: no-repeat;
}
.contact-label input:focus, .contact-label textarea:focus, .contact-label select:focus { outline: none; border-color: var(--olive); }
.contact-label .req { color: var(--olive); font-weight: 600; }
.contact-notice {
font-size: 12.5px; color: var(--ink-3); line-height: 1.5; margin: 0;
}
.contact-notice a { color: var(--olive); text-decoration: underline; text-underline-offset: 2px; }
.contact-hp { position: absolute; left: -5000px; width: 1px; height: 1px; overflow: hidden; }
.sitemap-groups { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 32px 40px; }
.sitemap-group h2 { font-size: 14px; color: var(--ink-3); font-weight: 600; margin-bottom: 12px; }
.sitemap-group ul { list-style: none; display: flex; flex-direction: column; gap: 8px; font-size: 14px; }
.sitemap-group a { color: var(--ink-2); }
.sitemap-group a:hover { color: var(--olive); text-decoration: underline; text-underline-offset: 3px; }
.expired-banner {
background: rgba(181, 78, 44, 0.1);
border: 1px solid rgba(181, 78, 44, 0.3);
border-radius: 6px;
padding: 14px 18px;
margin-bottom: 20px;
font-size: 14px;
color: var(--hot);
}
.expired-banner strong { display: block; margin-bottom: 2px; }
.expired-banner p { font-size: 13px; margin-top: 4px; }
.company-head {
display: grid;
grid-template-columns: 88px 1fr auto;
gap: 28px;
align-items: center;
border-bottom: 1px solid var(--rule);
padding-bottom: 28px;
margin-bottom: 32px;
}
.company-logo {
width: 64px; height: 64px;
border: 1px solid var(--rule);
background: var(--olive);
color: var(--cream);
border-radius: 12px;
display: flex; align-items: center; justify-content: center;
font-size: 22px;
font-weight: 600;
letter-spacing: -0.025em;
overflow: hidden;
}
.company-logo img {
width: 100%; height: 100%;
object-fit: contain;
background: #fff;
}
.company-head h1 {
font-size: 26px;
font-weight: 600;
letter-spacing: -0.025em;
line-height: 1.2;
}
.company-head .meta-line {
font-size: 13px;
color: var(--ink-3);
margin-top: 6px;
display: flex; gap: 12px; align-items: center;
}
.company-head .meta-line .dot { width: 3px; height: 3px; background: var(--ink-4); border-radius: 50%; }
.company-stats {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 0;
border-bottom: 1px solid var(--rule);
margin-bottom: 36px;
}
.company-stats > div {
padding: 18px 24px;
border-right: 1px solid var(--rule);
}
.company-stats > div:last-child { border-right: 0; }
.company-stats dt {
font-size: 12px;
color: var(--ink-3);
}
.company-stats dd {
font-size: 20px;
font-weight: 600;
letter-spacing: -0.02em;
margin-top: 4px;
}
.company-grid {
display: grid;
grid-template-columns: 2fr 1fr;
gap: 64px;
align-items: flex-start;
}
.company-grid .about {
font-size: 14.5px;
line-height: 1.65;
color: var(--ink-2);
max-width: 100%;
}
.company-grid .about p { margin-bottom: 14px; }
.company-side { min-width: 0; }
.company-side .panel {
border: 1px solid var(--rule);
padding: 22px;
margin-bottom: 18px;
background: var(--cream);
border-radius: 8px;
}
.company-side h3 {
font-size: 12px;
color: var(--ink-3);
font-weight: 500;
margin-bottom: 10px;
}
.company-side .row {
display: flex; justify-content: space-between; gap: 12px;
font-size: 13px;
padding: 6px 0;
border-bottom: 1px solid var(--rule-soft);
}
.company-side .row:last-child { border-bottom: 0; }
.company-side .row b { font-weight: 500; }
.company-side .row span { color: var(--ink-3); font-family: var(--mono); font-size: 12px; text-align: right; }
.company-side .row span.link { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-align: left; }
.co-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; border-top: 1px solid var(--rule); }
.co-card {
padding: 22px 24px;
border-bottom: 1px solid var(--rule);
border-right: 1px solid var(--rule);
display: flex; gap: 16px; align-items: flex-start;
text-decoration: none; color: inherit;
}
.co-card:nth-child(3n) { border-right: 0; }
.co-card:hover { background: rgba(146,139,97,0.06); }
.co-card .lg {
width: 48px; height: 48px;
border: 1px solid var(--rule);
background: #fff;
display: flex; align-items: center; justify-content: center;
font-size: 18px;
flex-shrink: 0;
border-radius: 8px;
overflow: hidden;
}
.co-card .lg img {
width: 100%; height: 100%;
object-fit: contain;
}
.co-card h3 { font-size: 16px; font-weight: 600; letter-spacing: -0.01em; }
.co-card .sub { font-family: var(--mono); font-size: 10.5px; text-transform: uppercase; letter-spacing: 0.1em; color: var(--ink-4); margin-top: 4px; }
.co-card .roles { margin-top: 10px; font-size: 13px; color: var(--ink-2); }
.co-card .roles b { font-size: 18px; font-weight: 600; letter-spacing: -0.01em; }
.co-search {
display: flex; align-items: center; gap: 8px;
border: 1px solid var(--rule); border-radius: 8px;
padding: 9px 14px; margin-bottom: 20px;
max-width: 360px; color: var(--ink-3); background: var(--cream);
}
.co-search:focus-within { border-color: var(--olive); }
.co-search svg { flex-shrink: 0; opacity: 0.7; }
.co-search input { border: none; background: none; outline: none; width: 100%; font-size: 14px; font-family: var(--sans); color: var(--ink); }
.co-filter-tools { display: flex; gap: 10px; align-items: stretch; margin-bottom: 16px; justify-content: flex-end; }
.co-filter-tools .search { width: 360px; max-width: 100%; }
.filter-clear-inline { font-size: 11px; color: var(--ink-4); cursor: pointer; background: none; border: none; padding: 0; }
.filter-clear-inline:hover { color: var(--ink); }
.job-row.hidden { display: none; }
.muted { color: var(--ink-3); }
.mono { font-family: var(--mono); }
.serif { font-family: var(--serif); }
.divider { border-top: 1px solid var(--rule); margin: 32px 0; }
.hidden { display: none !important; }
body.theme-dark {
--paper: #14130f;
--paper-2: #1c1a14;
--paper-3: #1c1a14;
--rule: #2a271f;
--rule-soft: #221f18;
--ink: #f0ead8;
--ink-2: #d6cfb9;
--ink-3: #978f78;
--ink-4: #6a6452;
--khaki: #c8c9ac;
--khaki-deep: #928b61;
--cream: #1c1a14;
--sand: #221f18;
--sage: #2a271f;
}
body.theme-dark .job-logo,
body.theme-dark .company-logo { background: #1c1a14; }
body.theme-dark .search,
body.theme-dark .detail-side,
body.theme-dark .company-side .panel { background: rgba(255,255,255,0.02); }
body.theme-dark .tag { background: rgba(255,255,255,0.02); }
body.tone-ink {
--paper: #ffffff;
--paper-2: #f7f5ef;
--paper-3: #efeae0;
--rule: #e8e3d4;
--rule-soft: #efeae0;
--ink: #14130f;
--ink-2: #2a2722;
--ink-3: #5a564b;
--ink-4: #8a8474;
--khaki: #6e6845;
}
.menu-btn { display: none; }
@media (max-width: 1200px) {
.topbar .stats { display: none; }
}
@media (max-width: 900px) {
:root { --content-w: 100%; }
body { font-size: 14px; }
.topbar-inner {
padding: 12px 16px;
gap: 12px;
flex-wrap: wrap;
}
.topbar .topbar-actions { min-height: 40px; }
.topbar .nav,
.topbar .topbar-actions a.muted { display: none; }
.topbar .stats { display: none; }
.topbar .signin-btn:not(.signin-btn-mobile),
.topbar .desktop-signin { display: none !important; }
.topbar .topbar-actions { gap: 8px; }
.menu-btn {
display: inline-flex; align-items: center; justify-content: center;
width: 36px; height: 36px;
border: none;
background: none;
color: var(--ink);
}
.menu-btn svg { width: 18px; height: 18px; }
body.nav-open .topbar .nav {
display: flex;
flex-direction: column;
width: calc(100% + 32px);
order: 99;
gap: 0;
background: var(--paper-3);
border-top: 1px solid var(--rule);
margin: 0 -16px -12px;
padding: 8px 16px 12px;
}
body.nav-open .topbar .nav a {
padding: 12px 0;
border-bottom: 1px solid var(--rule-soft);
font-size: 15px;
}
body.nav-open .topbar .nav .nav-signin {
display: block;
font-weight: 600;
color: var(--ink);
margin-bottom: 4px;
padding-bottom: 12px;
border-bottom: 2px solid var(--rule);
}
.page { padding: 16px 16px 60px; }
.page-head {
flex-direction: column;
align-items: flex-start;
gap: 14px;
padding-bottom: 14px;
margin-bottom: 16px;
}
.page-head .stats {
width: 100%;
gap: 0;
border-top: 1px solid var(--rule-soft);
padding-top: 12px;
}
.page-head .stats > div {
flex: 1;
border-right: 1px solid var(--rule-soft);
padding-right: 12px;
}
.page-head .stats > div:last-child { border-right: 0; }
.page-head .stats b { font-size: 16px; }
.tabs {
flex-direction: column;
align-items: stretch;
gap: 8px;
margin-bottom: 14px;
}
.tablist {
overflow-x: auto;
gap: 18px;
padding-bottom: 2px;
scrollbar-width: none;
-ms-overflow-style: none;
flex-wrap: nowrap;
}
.tablist::-webkit-scrollbar { display: none; }
.tab { white-space: nowrap; flex-shrink: 0; }
.tabs { margin: 0 -16px 14px; padding: 0 16px; }
.tab-tools { font-size: 12px; gap: 8px; width: 100%; display: flex; flex-wrap: nowrap; padding-bottom: 12px; }
.tab-tools #filter-status { display: none; }
.tab-tools .search { flex: 1; width: auto; min-width: 0; }
.tab-tools .sort { display: none; }
.co-filter-tools .search { flex: 1; width: auto; min-width: 0; }
.with-sidebar { display: block; }
.filter-side { display: none; }
.no-sidebar .filter-side { display: none !important; }
body.filters-open .filter-side {
display: block;
position: fixed;
inset: 0;
z-index: 100;
background: var(--paper);
padding: 60px 20px 20px;
overflow-y: auto;
}
body.filters-open::after {
content: "✕";
position: fixed; top: 14px; right: 18px;
z-index: 101;
width: 36px; height: 36px;
display: flex; align-items: center; justify-content: center;
border: 1px solid var(--rule);
background: var(--cream);
border-radius: 50%;
color: var(--ink);
font-size: 16px;
cursor: pointer;
}
.filter-btn-mobile {
display: flex; align-items: center; justify-content: center;
width: 36px; height: 34px; flex-shrink: 0;
border: 1px solid var(--rule);
background: var(--cream);
border-radius: 6px;
color: var(--ink-3);
cursor: pointer;
}
.filter-btn-mobile:hover { color: var(--ink); border-color: var(--olive); }
.job-row {
grid-template-columns: 36px 1fr;
grid-template-rows: auto auto;
gap: 12px;
padding: 14px 10px;
margin: 0 -10px;
}
.job-logo { width: 36px; height: 36px; font-size: 12px; }
.job-row .meta-line {
flex-wrap: wrap;
gap: 6px 10px;
font-size: 11.5px;
}
.job-row h2 { font-size: 15px; }
.job-row .meta-line { padding-right: 46px; }
.job-row .desc {
font-size: 13px;
-webkit-line-clamp: 3;
}
.job-side {
grid-column: 2 / -1;
text-align: left;
flex-direction: row;
align-items: center;
gap: 12px;
min-width: 0;
padding-top: 0;
margin-top: 4px;
}
.save-btn-card {
position: absolute;
top: 12px;
right: 10px;
padding: 6px;
min-width: 36px;
min-height: 36px;
justify-content: center;
}
.save-btn-card span { display: none; }
.tag-row { gap: 5px; margin-top: 10px; }
.tag { font-size: 11px; padding: 1px 7px; }
.promoted-row .tag-row { padding-right: 88px; }
.detail-grid {
grid-template-columns: 1fr;
gap: 24px;
}
.detail-main h1 { font-size: 22px; }
.detail-deck { font-size: 14.5px; }
.detail-side {
position: static;
order: -1;
padding: 16px;
}
.apply-bottom { display: block; }
.detail-side dl {
grid-template-columns: 1fr 1fr;
font-size: 12.5px;
}
.crumbs {
font-size: 11.5px;
flex-wrap: wrap;
gap: 4px 6px;
}
.company-head {
grid-template-columns: 56px 1fr;
gap: 14px;
padding-bottom: 18px;
margin-bottom: 18px;
}
.company-head .eyebrow { display: none; }
.company-logo { width: 56px; height: 56px; font-size: 18px; }
.company-head h1 { font-size: 22px; }
.company-head .meta-line {
font-size: 12px;
flex-wrap: wrap;
gap: 6px 10px;
}
.company-stats {
grid-template-columns: 1fr 1fr;
margin-bottom: 24px;
}
.company-stats > div {
padding: 14px 16px;
border-bottom: 1px solid var(--rule);
}
.company-stats > div:nth-child(2) { border-right: 0; }
.company-stats > div:nth-last-child(-n+2) { border-bottom: 0; }
.company-stats dd { font-size: 18px; }
.company-grid {
grid-template-columns: 1fr;
gap: 32px;
}
.co-grid { grid-template-columns: 1fr !important; }
.co-card { border-right: 0 !important; padding: 16px !important; }
footer { padding: 28px 16px 32px; margin-top: 40px; }
.foot-inner {
grid-template-columns: 1fr;
gap: 24px;
}
.foot-bottom {
margin: 24px 16px 0;
flex-direction: column;
gap: 6px;
font-size: 11px;
}
.pager { flex-wrap: wrap; gap: 4px; }
.pager button, .pager span { padding: 5px 9px; font-size: 12px; }
}
@media (max-width: 480px) {
.page-head .stats { font-size: 11px; }
.page-head .stats > div { padding-right: 8px; }
.page-head .stats b { font-size: 14px; }
.detail-side dl { grid-template-columns: 1fr; gap: 6px 12px; }
.detail-side dl dt { padding-top: 6px; border-top: 1px solid var(--rule-soft); }
.detail-side dl dt:first-of-type { border-top: 0; padding-top: 0; }
}
.auth-modal { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; }
.auth-modal-backdrop { position: absolute; inset: 0; background: rgba(9,8,8,0.45); }
.auth-modal-inner { position: relative; background: var(--paper); border: 1px solid var(--rule); border-radius: 12px; padding: 32px 28px; width: 380px; max-width: calc(100vw - 32px); box-shadow: 0 8px 32px rgba(0,0,0,0.18); }
.auth-modal-close { position: absolute; top: 12px; right: 14px; background: none; border: none; font-size: 22px; cursor: pointer; color: var(--ink-3); line-height: 1; }
.auth-modal-close:hover { color: var(--ink); }
.auth-modal-inner h2 { font-size: 20px; font-weight: 600; margin-bottom: 20px; }
.auth-divider { display: flex; align-items: center; gap: 12px; margin: 18px 0; color: var(--ink-4); font-size: 12px; text-transform: uppercase; letter-spacing: 0.08em; }
.auth-divider::before, .auth-divider::after { content: ""; flex: 1; height: 1px; background: var(--rule); }
#auth-form input:not([type="checkbox"]) { display: block; width: 100%; padding: 10px 12px; margin-bottom: 10px; border: 1px solid var(--rule); border-radius: 6px; font-size: 14px; font-family: var(--sans); background: var(--cream); color: var(--ink); box-sizing: border-box; }
#auth-form input:not([type="checkbox"]):focus { outline: none; border-color: var(--olive); }
.auth-error { color: var(--hot); font-size: 13px; margin-bottom: 8px; }
.auth-submit-btn { display: block; width: 100%; padding: 10px; background: var(--olive-deep); color: #fff; border: none; border-radius: 6px; font-size: 14px; font-weight: 500; cursor: pointer; font-family: var(--sans); }
.auth-submit-btn:hover { background: var(--olive); }
.auth-submit-btn:disabled { opacity: 0.6; cursor: default; }
.danger-btn { display: inline-block; padding: 9px 16px; background: var(--hot); color: #fff; border: none; border-radius: 6px; font-size: 13px; font-weight: 500; cursor: pointer; font-family: var(--sans); }
.danger-btn:hover { filter: brightness(0.92); }
.settings-actions { display: flex; justify-content: flex-end; align-items: center; gap: 12px; margin-top: 16px; }
.settings-actions .danger-btn { margin-right: auto; }
.settings-actions .auth-submit-btn { width: auto; margin-top: 0; padding: 9px 22px; }
.danger-btn:disabled { opacity: 0.45; cursor: default; filter: none; }
.delete-check { display: flex; gap: 10px; align-items: flex-start; font-size: 13px; color: var(--ink-2); cursor: pointer; margin-bottom: 12px; line-height: 1.4; }
.delete-check input { margin-top: 2px; flex-shrink: 0; }
.auth-mailing-list-label, .auth-terms-label { display: flex; align-items: flex-start; gap: 8px; font-size: 13px; color: var(--ink-2); cursor: pointer; margin: 10px 0; line-height: 1.4; }
.auth-mailing-list-label input, .auth-terms-label input { margin-top: 2px; flex-shrink: 0; }
.auth-terms-label a, .auth-privacy-note a { color: var(--olive); text-decoration: underline; text-underline-offset: 2px; }
.auth-privacy-note { margin: 8px 0 10px; font-size: 11.5px; line-height: 1.4; color: var(--ink-4); }
.auth-toggle { margin-top: 14px; font-size: 13px; color: var(--ink-3); text-align: center; }
.auth-legal-note { margin-top: 12px; font-size: 11.5px; line-height: 1.4; color: var(--ink-4); text-align: center; }
.auth-legal-note a { color: var(--ink-3); text-decoration: underline; text-underline-offset: 2px; }
.auth-toggle a { color: var(--olive-deep); text-decoration: underline; }
.auth-toggle a:hover { color: var(--olive); }
.auth-forgot { margin-top: 12px; font-size: 13px; text-align: center; }
.auth-forgot a { color: var(--olive-deep); text-decoration: underline; text-underline-offset: 2px; }
.auth-forgot a:hover { color: var(--olive); }
.auth-forgot-msg { text-align: center; padding: 8px 0; }
.reset-input { display: block; width: 100%; padding: 10px 12px; margin-bottom: 10px; border: 1px solid var(--rule); border-radius: 6px; font-size: 14px; font-family: var(--sans); background: var(--cream); color: var(--ink); box-sizing: border-box; }
.reset-input:focus { outline: none; border-color: var(--olive); }
.signin-btn-mobile { display: none; }
.mailing-list-btn {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 6px 14px;
font-size: 13px;
font-weight: 500;
font-family: var(--sans);
background: var(--olive-deep);
color: #fff;
border: none;
border-radius: 6px;
cursor: pointer;
}
.mailing-list-btn:hover { background: var(--olive); }
.mailing-list-btn svg, .nav-mailing-list svg { flex-shrink: 0; vertical-align: middle; transform: translateY(-0.25px); }
.nav-mailing-list { display: none !important; }
.ml-hidden { display: none !important; }
.ml-subscribed #mailing-list-btn, .ml-subscribed #nav-mailing-list { display: none !important; }
.ml-modal-inner { max-height: calc(100vh - 48px); overflow-y: auto; width: 440px; scrollbar-width: none; -ms-overflow-style: none; }
.ml-modal-inner::-webkit-scrollbar { display: none; }
.ml-subtitle { font-size: 13px; color: var(--ink-3); margin-bottom: 16px; }
.ml-legal-note { margin: 14px 0; font-size: 11.5px; line-height: 1.45; color: var(--ink-4); }
.ml-legal-note a { color: var(--ink-3); text-decoration: underline; text-underline-offset: 2px; }
.ml-section { border: 1px solid var(--rule); border-radius: 6px; margin-bottom: 8px; }
.ml-section-title {
display: flex; justify-content: space-between; align-items: center;
padding: 12px 14px; font-size: 14px; font-weight: 500; cursor: pointer;
color: var(--ink-2); user-select: none;
}
.ml-section-title:hover { color: var(--ink); }
.ml-arrow { font-size: 0; width: 8px; height: 8px; border-right: 2px solid var(--ink-3); border-bottom: 2px solid var(--ink-3); transform: rotate(45deg); transition: transform 0.15s; }
.ml-section.open .ml-arrow { transform: rotate(-135deg); }
.ml-section-body {
display: none; padding: 4px 12px 12px;
column-count: 2; column-gap: 8px;
}
.ml-section.open .ml-section-body { display: block; }
.ml-section-body label {
display: flex; gap: 8px; align-items: center;
font-size: 12px; color: var(--ink-2); padding: 3px 0; cursor: pointer;
break-inside: avoid;
}
.ml-section-body input[type="text"],
.ml-section-body input[type="number"] {
width: 100%; padding: 7px 10px; font-size: 13px;
border: 1px solid var(--rule); border-radius: 4px;
font-family: var(--sans); margin-bottom: 6px;
background: var(--paper); color: var(--ink);
}
#ml-form > input[type="email"] {
width: 100%; padding: 10px 12px; font-size: 14px;
border: 1px solid var(--rule); border-radius: 6px;
margin-bottom: 12px; font-family: var(--sans);
background: var(--paper); color: var(--ink);
box-sizing: border-box;
}
#ml-form .auth-submit-btn { margin-top: 12px; }
.ml-multi-input { display: flex; flex-direction: column; gap: 6px; column-span: all; }
.ml-multi-input input { margin-bottom: 0; }
.ml-multi-row { display: flex; gap: 6px; align-items: center; }
.ml-multi-row input { flex: 1; min-width: 0; }
.ml-remove-btn {
flex-shrink: 0; width: 18px; text-align: center; align-self: center;
background: none; border: none; font-size: 18px; cursor: pointer;
color: var(--ink-3); padding: 0; line-height: 1;
}
.ml-remove-btn:hover { color: var(--ink); }
.ml-remove-hidden { visibility: hidden; pointer-events: none; }
.ml-add-btn {
background: none; border: none; font-size: 12px; cursor: pointer;
color: var(--olive-deep); padding: 6px 0 0; font-family: var(--sans);
}
.ml-add-btn:hover { color: var(--olive); }
.ml-text-input { column-span: all; }
.ml-ac-mount { column-span: all; margin-bottom: 6px; }
.ml-ac-mount gmp-place-autocomplete, gmp-place-autocomplete { width: 100%; color-scheme: light; }
.ml-chips { column-span: all; display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 6px; }
.ml-chip {
display: inline-flex; align-items: center; gap: 6px;
background: var(--sand); border: 1px solid var(--rule); border-radius: 14px;
padding: 3px 6px 3px 10px; font-size: 12px; color: var(--ink);
}
.ml-chip button { background: none; border: none; cursor: pointer; color: var(--ink-3); font-size: 15px; line-height: 1; padding: 0; }
.ml-chip button:hover { color: var(--hot); }
.ml-radius-row { column-span: all; font-size: 12px; color: var(--ink-2); display: flex; align-items: center; gap: 6px; }
.ml-radius-input { width: 64px !important; margin-bottom: 0 !important; }
.ml-must {
display: none; align-items: center; gap: 6px; margin-left: auto; margin-right: 10px;
font-size: 11px; color: var(--ink-3); font-weight: 400; cursor: pointer;
}
.ml-section.open .ml-must { display: inline-flex; }
.ml-must input { margin: 0; cursor: pointer; }
.ml-section-body input[type="checkbox"], .ml-db, #settings-subscribed {
appearance: none; -webkit-appearance: none;
width: 13px; height: 13px; margin: 0;
border: 1px solid var(--ink-4); border-radius: 1px;
background: var(--paper); position: relative; cursor: pointer; flex-shrink: 0;
}
.ml-section-body input[type="checkbox"]:checked, .ml-db:checked, #settings-subscribed:checked {
background: var(--ink); border-color: var(--ink);
}
.ml-section-body input[type="checkbox"]:checked::after, .ml-db:checked::after, #settings-subscribed:checked::after {
content: ""; position: absolute; left: 3px; top: 0px; width: 4px; height: 8px;
border: solid var(--paper); border-width: 0 1.5px 1.5px 0; transform: rotate(45deg);
}
.settings-freq-row { border: 1px solid var(--rule); border-radius: 6px; padding: 12px 14px; margin: 0 0 16px; }
.settings-freq-label { font-size: 14px; font-weight: 500; color: var(--ink-2); margin-bottom: 10px; }
[data-radio="alert_frequency"] input[type="radio"] {
appearance: none; -webkit-appearance: none;
width: 14px; height: 14px; margin: 0;
border: 1px solid var(--ink-4); border-radius: 50%;
background: var(--paper); position: relative; cursor: pointer; flex-shrink: 0;
}
[data-radio="alert_frequency"] input[type="radio"]:checked { border-color: var(--ink); }
[data-radio="alert_frequency"] input[type="radio"]:checked::after {
content: ""; position: absolute; left: 50%; top: 50%;
width: 7px; height: 7px; border-radius: 50%;
background: var(--ink); transform: translate(-50%, -50%);
}
.ml-more-toggle {
display: flex; align-items: center; justify-content: center; gap: 8px;
width: 100%; margin: 6px 0 8px; padding: 8px;
background: none; border: none; cursor: pointer;
color: var(--olive-deep); font-size: 13px; font-family: var(--sans);
}
.ml-more-toggle:hover { color: var(--olive); }
.ml-more-toggle.open .ml-arrow { transform: rotate(-135deg); }
.ml-freq-options { display: flex; flex-direction: column; gap: 8px; margin-bottom: 12px; }
.ml-freq-options label { display: flex; align-items: center; gap: 10px; font-size: 14px; color: var(--ink); cursor: pointer; }
.ml-back-btn { display: block; width: 100%; margin-top: 10px; background: none; border: none; color: var(--ink-3); font-size: 13px; cursor: pointer; font-family: var(--sans); }
.ml-back-btn:hover { color: var(--ink); }
.pac-container { z-index: 100000 !important; }
.ml-lang-row { display: flex; gap: 6px; align-items: stretch; }
.ml-lang-combo { position: relative; flex: 1; min-width: 0; }
.ml-lang-row .ml-lang-input { width: 100%; height: 34px; box-sizing: border-box; }
.ml-lang-menu {
display: none; position: absolute; top: calc(100% + 3px); left: 0; right: 0; z-index: 30;
background: var(--paper); border: 1px solid var(--rule); border-radius: 6px;
box-shadow: 0 4px 14px rgba(0,0,0,0.14);
max-height: 200px; overflow-y: auto; padding: 4px 0;
scrollbar-width: none; -ms-overflow-style: none;
}
.ml-lang-menu::-webkit-scrollbar { width: 0; height: 0; display: none; }
.ml-lang-combo.open .ml-lang-menu { display: block; }
.ml-lang-opt { padding: 7px 12px; font-size: 13px; cursor: pointer; color: var(--ink-2); white-space: nowrap; }
.ml-lang-opt:hover { background: var(--sand); color: var(--ink); }
.ml-lang-empty { padding: 7px 12px; font-size: 13px; color: var(--ink-4); }
.ml-level { position: relative; flex-shrink: 0; }
.ml-level-btn {
display: inline-flex; align-items: center; justify-content: space-between; gap: 4px;
width: 84px; height: 34px; padding: 0 8px; box-sizing: border-box;
border: 1px solid var(--rule); border-radius: 4px;
background: var(--paper); font-size: 13px; cursor: pointer;
font-family: var(--sans);
}
.ml-level-txt { color: var(--ink-4); }
.ml-level:not([data-level=""]) .ml-level-txt { color: var(--ink); }
.ml-level-caret { color: var(--ink-3); flex-shrink: 0; }
.ml-level-menu {
display: none; position: absolute; top: calc(100% + 3px); right: 0; z-index: 20;
background: var(--paper); border: 1px solid var(--rule); border-radius: 6px;
box-shadow: 0 4px 14px rgba(0,0,0,0.14); min-width: 170px; overflow: hidden; padding: 4px 0;
}
.ml-level-menu.open { display: block; }
.ml-level-opt { padding: 7px 12px; font-size: 13px; cursor: pointer; color: var(--ink-2); white-space: nowrap; }
.ml-level-opt:hover { background: var(--sand); color: var(--ink); }
@media (max-width: 900px) {
.signin-btn-mobile { display: inline-block; font-size: 12px; padding: 5px 10px; }
.mailing-list-btn { display: none; }
.nav-mailing-list:not(.ml-hidden) { display: block !important; font-weight: 500; color: var(--olive-deep) !important; }
.ml-section-body { column-count: 1; }
}
.period-pills {
display: inline-flex; flex-wrap: wrap; gap: 2px;
border: 1px solid var(--rule); border-radius: 999px;
background: var(--paper-2); padding: 2px;
}
.period-pills button {
border: 0; background: transparent; cursor: pointer;
font: inherit; font-size: 12.5px; color: var(--ink-3);
padding: 5px 14px; border-radius: 999px; white-space: nowrap;
}
.period-pills button.active { background: var(--olive); color: #fff; }
.views-panel input[type="date"] {
font: inherit; font-size: 13px; padding: 5px 8px;
border: 1px solid var(--rule); border-radius: 6px; background: var(--paper);
color: var(--ink);
}
.views-panel #views-custom { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.views-apply {
font: inherit; font-size: 13px; font-weight: 500; cursor: pointer;
background: var(--olive-deep); color: #fff; border: none; border-radius: 6px;
padding: 6px 14px;
}
.views-apply:hover { background: var(--olive); }
.metric-cards { display: flex; gap: 20px; flex-wrap: wrap; }
.metric-card {
flex: 1; min-width: 200px;
border: 1px solid var(--rule); border-left: 3px solid var(--olive);
border-radius: 10px; background: var(--paper-2); padding: 24px 28px;
}
.metric-num { font-size: 40px; font-weight: 700; color: var(--ink); line-height: 1.1; }
.metric-label { margin-top: 6px; font-size: 13px; color: var(--ink-3); }
#stats-modal .metric-cards { gap: 12px; }
#stats-modal .metric-card { min-width: 0; padding: 16px 18px; }
#stats-modal .metric-num { font-size: 30px; }
@media (max-width: 640px) {
.metric-cards { flex-direction: column; }
#stats-modal .metric-cards { flex-direction: row; }
.period-pills { border: 0; background: none; padding: 0; gap: 6px; }
.period-pills button { border: 1px solid var(--rule); background: var(--paper-2); }
.period-pills button.active { border-color: var(--olive); }
.views-panel input[type="date"] { flex: 1 1 130px; min-width: 0; }
}
.category-nav {
display: flex; flex-wrap: wrap; gap: 8px;
margin: 4px 0 28px;
padding-bottom: 14px;
border-bottom: 1px solid var(--rule);
}
.category-nav a {
padding: 6px 14px;
border: 1px solid var(--rule);
border-radius: 999px;
background: var(--paper-2);
color: var(--ink-3);
font-size: 13px; font-weight: 500;
text-decoration: none;
transition: background 0.12s, color 0.12s;
}
.category-nav a:hover { color: var(--ink); background: var(--paper-3); }
.category-nav a.active { background: var(--olive-deep); border-color: var(--olive-deep); color: #fff; }
.article-kicker {
display: block;
font-size: 11.5px; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase;
color: var(--olive-deep);
margin-bottom: 6px;
}
.articles-editorial {
display: grid;
grid-template-columns: 2fr 1fr;
gap: 28px;
margin-bottom: 36px;
align-items: start;
}
.article-lead { display: block; text-decoration: none; color: inherit; }
.article-lead-hero {
width: 100%; height: auto; aspect-ratio: 16/9; object-fit: cover;
border: 1px solid var(--rule); border-radius: 10px;
background: var(--paper-3);
margin-bottom: 16px;
}
.article-lead h2 {
font-size: 30px; line-height: 1.15; letter-spacing: -0.015em;
color: var(--ink); margin-bottom: 10px;
}
.article-lead:hover h2, .article-secondary:hover h3, .article-card:hover h3 { text-decoration: underline; text-underline-offset: 3px; }
.article-excerpt { font-size: 14.5px; line-height: 1.55; color: var(--ink-3); margin-bottom: 10px; }
.article-card-meta { font-size: 12.5px; color: var(--ink-4); }
.articles-secondary-col {
display: flex; flex-direction: column; gap: 22px;
border-left: 1px solid var(--rule);
padding-left: 28px;
}
.article-secondary { display: block; text-decoration: none; color: inherit; }
.article-secondary .article-thumb { display: none; }
.article-secondary h3 { font-size: 16px; line-height: 1.3; color: var(--ink); margin-bottom: 5px; }
.article-secondary .article-excerpt {
font-size: 13px; margin-bottom: 6px;
display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.article-secondary + .article-secondary { border-top: 1px solid var(--rule-soft); padding-top: 18px; }
.articles-secondary-col { gap: 18px; }
.article-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 24px 28px;
padding-top: 28px;
border-top: 1px solid var(--rule);
}
.article-card { display: block; text-decoration: none; color: inherit; }
.article-thumb {
width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: cover;
border: 1px solid var(--rule); border-radius: 8px;
background: var(--paper-3);
margin-bottom: 10px;
}
.article-card h3 { font-size: 15.5px; line-height: 1.35; color: var(--ink); margin-bottom: 6px; }
.article-page { max-width: 1000px; margin: 0 auto; }
.article-header { margin-bottom: 22px; }
.article-header h1 { font-size: 38px; line-height: 1.1; letter-spacing: -0.02em; margin-bottom: 12px; }
.article-standfirst { font-size: 17.5px; line-height: 1.5; color: var(--ink-3); margin-bottom: 14px; max-width: 70ch; }
.article-byline { font-size: 13px; color: var(--ink-4); display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: baseline; }
.article-byline-author { color: var(--ink); font-weight: 600; }
.article-hero {
width: 100%; height: auto; aspect-ratio: 16/9; object-fit: cover;
border: 1px solid var(--rule); border-radius: 10px;
background: var(--paper-3);
margin-bottom: 30px;
}
.article-layout {
display: grid;
grid-template-columns: minmax(0, 1fr) 280px;
gap: 48px;
align-items: start;
}
.article-body { font-size: 16.5px; max-width: none; }
.article-body h2 { margin-top: 30px; }
.article-body img { max-width: 100%; height: auto; }
.article-body figure { margin: 28px 0; }
.article-body figure img { display: block; width: 100%; height: auto; border-radius: 8px; }
.article-body figcaption {
margin-top: 8px; text-align: center; font-size: 13.5px; color: var(--ink-3);
}
.article-sidebar { display: flex; flex-direction: column; gap: 26px; }
.article-related {
padding: 16px 18px;
border: 1px solid var(--rule); border-left: 3px solid var(--olive);
border-radius: 10px;
background: var(--paper-2);
}
.article-related h2 { font-size: 15px; margin-bottom: 10px; }
.article-related ul { list-style: none; margin: 0; padding: 0; }
.article-related li { margin-bottom: 8px; line-height: 1.3; }
.article-related a { color: var(--olive-deep); font-weight: 500; text-decoration: none; font-size: 13.5px; }
.article-related a:hover { text-decoration: underline; }
.article-more h3 { font-size: 12.5px; margin-bottom: 8px; color: var(--ink-3); text-transform: uppercase; letter-spacing: 0.05em; }
.article-more-list { list-style: none; margin: 0; padding: 0; }
.article-more-list li {
display: flex; flex-direction: column; gap: 2px;
padding: 9px 0; border-bottom: 1px solid var(--rule-soft);
}
.article-more-list li:last-child { border-bottom: 0; }
.article-more-list a { color: var(--ink); text-decoration: none; font-weight: 500; font-size: 13.5px; line-height: 1.3; }
.article-more-list a:hover { color: var(--olive-deep); }
.article-more-list .article-card-meta { font-size: 11.5px; }
.article-author-box { padding-top: 22px; border-top: 1px solid var(--rule); font-size: 13.5px; }
.article-author-name { font-weight: 600; color: var(--ink); }
.article-author-name a { color: inherit; }
.article-author-name a:hover { color: var(--olive-deep); }
.article-author-role { color: var(--ink-4); font-size: 12.5px; margin-bottom: 8px; }
.article-author-bio { color: var(--ink-3); margin-bottom: 8px; line-height: 1.5; }
.article-author-link { color: var(--olive-deep); }
a.article-byline-author:hover { color: var(--olive-deep); text-decoration: underline; }
.author-page { display: flex; gap: 20px; align-items: flex-start; margin: 8px 0 8px; }
.author-avatar { width: 96px; height: 96px; border-radius: 50%; object-fit: cover; flex-shrink: 0; border: 1px solid var(--rule); }
.author-head-text { flex: 1; min-width: 0; }
.author-role { color: var(--ink-3); font-size: 15px; margin-top: 2px; }
.author-bio { color: var(--ink-2); line-height: 1.6; margin-top: 12px; max-width: 60ch; }
.author-link { display: inline-block; margin-top: 12px; color: var(--olive-deep); font-weight: 500; }
.author-link:hover { text-decoration: underline; }
.author-articles-title { font-size: 15px; text-transform: uppercase; letter-spacing: 0.06em; color: var(--ink-4); margin: 28px 0 14px; padding-top: 20px; border-top: 1px solid var(--rule); }
@media (max-width: 560px) { .author-page { flex-direction: column; gap: 14px; } }
.related-reading {
margin-top: 36px; padding-top: 20px;
border-top: 1px solid var(--rule);
}
.related-reading h2 { font-size: 17px; margin-bottom: 12px; }
.related-reading ul { list-style: none; margin: 0; padding: 0; }
.related-reading li { margin-bottom: 14px; max-width: 70ch; }
.related-reading a { color: var(--ink); font-weight: 600; text-decoration: none; }
.related-reading a:hover { color: var(--olive-deep); }
.related-reading p { font-size: 13px; color: var(--ink-3); margin-top: 3px; }
.home-articles {
margin-top: 40px; padding-top: 22px;
border-top: 1px solid var(--rule);
}
.home-articles-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 14px; }
.home-articles-head h2 { font-size: 17px; }
.home-articles-all { font-size: 13px; color: var(--olive-deep); text-decoration: none; font-weight: 500; }
.home-articles-all:hover { text-decoration: underline; }
.home-articles ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px 28px; }
.home-articles li .article-kicker { margin-bottom: 3px; }
.home-articles li a { color: var(--ink); font-weight: 600; text-decoration: none; font-size: 14.5px; line-height: 1.35; }
.home-articles li a:hover { color: var(--olive-deep); }
.home-articles li p { font-size: 12.5px; color: var(--ink-3); margin-top: 4px; }
@media (max-width: 900px) {
.articles-editorial { grid-template-columns: 1fr; gap: 24px; }
.articles-secondary-col { border-left: 0; padding-left: 0; gap: 22px; }
.article-secondary .article-thumb { display: block; margin-bottom: 10px; }
.article-secondary .article-excerpt { -webkit-line-clamp: 3; }
.article-grid { grid-template-columns: repeat(2, 1fr); }
.article-lead h2 { font-size: 24px; }
.article-layout { grid-template-columns: 1fr; gap: 32px; }
.article-header h1 { font-size: 28px; }
.article-standfirst { font-size: 16px; }
.home-articles ul { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
.article-grid { grid-template-columns: 1fr; }
}
.error-page { max-width: 560px; margin: 40px auto 80px; text-align: center; }
.error-code { font-size: 84px; font-weight: 700; line-height: 1; color: var(--olive-deep); letter-spacing: -0.03em; }
.error-page h1 { font-size: 28px; margin: 8px 0 14px; }
.error-page p { color: var(--ink-3); font-size: 15.5px; line-height: 1.6; }
.error-actions { margin: 24px 0 18px; }
.error-btn {
display: inline-block; padding: 11px 22px;
background: var(--olive-deep); color: #fff;
border-radius: 8px; font-weight: 500; text-decoration: none;
}
.error-btn:hover { background: var(--olive); }
.error-suggest { font-size: 14px; }
.error-suggest a { color: var(--olive-deep); }
.error-suggest a:hover { text-decoration: underline; }
.pc-wrap { display: flex; gap: 28px; align-items: flex-start; }
.pc-builder { flex: 1 1 340px; min-width: 300px; }
.pc-editor { flex: 1 1 460px; min-width: 320px; }
@media (max-width: 860px) { .pc-wrap { flex-direction: column; } .pc-editor, .pc-builder { width: 100%; min-width: 0; flex: 0 0 auto; } }
@media (max-width: 520px) { .pc-tags-grid { grid-template-columns: 1fr; } }
.pc-check { display: flex; align-items: center; gap: 8px; font-size: 14px; margin-bottom: 12px; cursor: pointer; }
.pc-flabel { display: block; font-size: 12px; color: var(--ink-3); margin-bottom: 10px; }
.pc-input { display: block; width: 100%; margin-top: 4px; padding: 7px 10px; border: 1px solid var(--rule); border-radius: 6px; font-size: 13px; font-family: var(--sans); background: var(--paper-3); color: var(--ink); }
.pc-textarea { resize: vertical; }
.pc-tags-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 12px; }
.pc-editing { font-size: 12px; color: var(--ink-3); margin-bottom: 10px; font-weight: 600; }
.pc-slides { list-style: none; margin: 0 0 12px; padding: 0; }
.pc-slide { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border: 1px solid var(--rule); border-radius: 6px; margin-bottom: 6px; cursor: pointer; background: var(--paper-3); }
.pc-slide:hover { background: var(--sand); }
.pc-slide-sel { border-color: var(--olive-deep); box-shadow: inset 0 0 0 1px var(--olive-deep); }
.pc-slide-num { font-family: var(--mono); font-size: 12px; color: var(--ink-3); min-width: 42px; }
.pc-slide-title { flex: 1; font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pc-slide-ctrls { display: flex; gap: 4px; flex-shrink: 0; }
.pc-remove { color: var(--hot); }
.pc-empty { color: var(--ink-3); font-size: 13px; padding: 8px 0; list-style: none; }
.pc-search-results { list-style: none; margin: 6px 0 0; padding: 0; max-height: 240px; overflow-y: auto; }
.pc-search-results li { display: flex; justify-content: space-between; gap: 10px; padding: 8px 10px; border: 1px solid var(--rule); border-top: none; cursor: pointer; font-size: 13px; }
.pc-search-results li:first-child { border-top: 1px solid var(--rule); border-radius: 6px 6px 0 0; }
.pc-search-results li:hover { background: var(--sand); }
.pc-sr-co { color: var(--ink-3); flex-shrink: 0; }
.pc-dl { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 4px; }
.pc-dl-all { background: var(--olive); }
.pc-preview-wrap { width: 420px; height: 420px; max-width: 100%; overflow: hidden; margin: 4px auto 16px; border: 1px solid var(--rule); border-radius: 6px; }
.pc-preview-scale { width: 1080px; height: 1080px; transform: scale(0.3889); transform-origin: top left; }
.pcard-canvas { display: block; width: 1080px; height: 1080px; }
.pc-fit-msg { min-height: 16px; margin: -8px 0 10px; text-align: center; }
.pc-fit-warn { color: var(--hot); font-weight: 600; }
.pc-style { margin-bottom: 16px; }
.pc-style select.pc-input { cursor: pointer; }
#map-view { min-width: 0; }
.map-h1 { font-family: var(--serif); font-size: 22px; font-weight: 600; color: var(--ink); margin: 0 0 4px; }
.map-caption { font-size: 13px; color: var(--ink-3); margin-bottom: 10px; }
.map-caption:empty { display: none; }
.map-caption a { color: var(--olive-deep); font-weight: 600; }
.map-caption a:hover { text-decoration: underline; }
.map-filter-bar { display: none; }
.map-intro { max-width: 760px; margin: 16px 0 4px; font-size: 13.5px; line-height: 1.6; color: var(--ink-3); }
.map-intro p { margin: 0 0 10px; }
.map-intro a { color: var(--olive-deep); font-weight: 600; }
.map-intro a:hover { text-decoration: underline; }
#job-map { width: 100%; height: calc(100vh - 190px); min-height: 460px; border: 1px solid var(--rule); border-radius: 10px; overflow: hidden; background: var(--paper-3); }
.map-popup { font-family: var(--sans); max-width: 250px; padding: 13px 15px 14px; }
.map-popup-title { font-family: var(--serif); font-weight: 600; font-size: 15px; line-height: 1.25; color: var(--ink); margin-bottom: 4px; }
.map-popup-sub { font-size: 12.5px; color: var(--ink-3); margin-bottom: 11px; }
.map-popup-link { display: inline-block; padding: 6px 13px; border-radius: 8px; background: var(--olive-deep);
color: var(--paper); font-weight: 600; font-size: 12.5px; }
.map-popup-link:hover { background: var(--olive); text-decoration: none; }
.gm-style .gm-style-iw-c { padding: 0 !important; background: var(--paper) !important;
border: 1px solid var(--rule) !important; border-radius: 12px !important;
box-shadow: 0 8px 28px rgba(0,0,0,0.20) !important; }
.gm-style .gm-style-iw-d { overflow: hidden auto !important; padding: 0 !important; background: var(--paper) !important; }
.gm-style .gm-style-iw-tc::after { background: var(--paper) !important; }
.gm-style .gm-style-iw-c button.gm-ui-hover-effect { top: 3px !important; right: 3px !important; }
.gm-style .gm-style-iw-c button.gm-ui-hover-effect > span { background-color: var(--ink-3) !important; }
.map-pill { display: inline-flex; align-items: center; gap: 7px; box-sizing: border-box;
background: var(--paper); border: 1px solid var(--rule); border-radius: 999px;
padding: 4px 5px 4px 11px; box-shadow: 0 1px 5px rgba(0,0,0,0.22);
font-family: var(--sans); font-size: 12.5px; font-weight: 600; color: var(--ink);
white-space: nowrap; cursor: pointer; transform: translateY(50%); }
.map-pill.map-pill-solo, .map-pill.map-pill-collapsed { padding: 4px 5px; }
.map-pill.map-pill-collapsed .map-pill-name { display: none; }
.map-pill.map-pill-country { border-style: dashed; }
.map-pill .map-pill-count { display: inline-flex; align-items: center; justify-content: center;
min-width: 20px; height: 20px; padding: 0 6px; border-radius: 999px;
background: var(--olive-deep); color: #fff; font-family: var(--mono); font-size: 11.5px; font-weight: 600; }
.map-popup-list { max-width: 260px; }
.map-popup-list .map-popup-head { font-weight: 600; font-size: 13px; color: var(--ink); margin-bottom: 6px; }
.map-popup-list ul { list-style: none; margin: 0; padding: 0; max-height: 220px; overflow-y: auto; }
.map-popup-list li { border-top: 1px solid var(--rule); }
.map-popup-list li:first-child { border-top: 0; }
.map-popup-list a { display: block; padding: 7px 2px; }
.map-li-title { display: block; font-size: 13px; font-weight: 500; color: var(--ink); line-height: 1.25; }
.map-li-co { display: block; font-size: 12px; color: var(--ink-3); }
.map-popup-list a:hover .map-li-title { color: var(--olive-deep); }
.map-popup-list ul, .gm-style .gm-style-iw-d { scrollbar-width: thin; scrollbar-color: var(--olive) transparent; }
.map-popup-list ul::-webkit-scrollbar, .gm-style .gm-style-iw-d::-webkit-scrollbar { width: 9px; height: 9px; }
.map-popup-list ul::-webkit-scrollbar-track, .gm-style .gm-style-iw-d::-webkit-scrollbar-track { background: transparent; }
.map-popup-list ul::-webkit-scrollbar-thumb, .gm-style .gm-style-iw-d::-webkit-scrollbar-thumb {
background: var(--olive); border-radius: 999px; border: 2px solid var(--paper); background-clip: padding-box; }
.map-popup-list ul::-webkit-scrollbar-thumb:hover, .gm-style .gm-style-iw-d::-webkit-scrollbar-thumb:hover { background: var(--olive-deep); background-clip: padding-box; }
@media (max-width: 720px) {
#job-map { height: 66vh; min-height: 360px; }
.map-filter-bar { display: flex; width: 100%; align-items: center; justify-content: center; gap: 8px;
padding: 11px 14px; margin-bottom: 12px; border: 1px solid var(--rule); background: var(--cream);
border-radius: 8px; color: var(--ink); font-family: var(--sans); font-size: 14px; font-weight: 600; cursor: pointer; }
.map-filter-bar:hover { border-color: var(--olive); }
}
