body{margin:0}:root{--color-bg:#f4f5f7;--color-surface:#fff;--color-text:#1a1a2e;--color-text-secondary:#4a5568;--color-text-muted:#8896a6;--color-border:#e2e6ea;--color-border-strong:#cdd3da;--color-open:#059669;--color-open-bg:#ecfdf5;--color-open-border:#a7f3d0;--color-closed:#6b7280;--color-closed-bg:#f3f4f6;--color-closed-border:#d1d5db;--color-link:#0a66c2;--color-link-hover:#004182;--color-filter-active:#0a66c2;--color-filter-active-text:#fff;--color-filter-hover:#e8f0fe;--color-error:#dc2626;--color-error-bg:#fef2f2;--color-error-border:#fecaca;--color-active-bg:#e8f0fe;--color-active-border:#0a66c2;--color-toolbar-bg-start:#f0f6ff;--color-toolbar-bg-end:#e8f0fe;--color-toolbar-shadow:0 2px 8px #0a66c214;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--shadow-sm:0 1px 2px #0000000f;--shadow-md:0 4px 6px -1px #00000012, 0 2px 4px -2px #0000000d;--shadow-lg:0 10px 15px -3px #00000014, 0 4px 6px -4px #0000000a;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-normal:.2s cubic-bezier(.4, 0, .2, 1);--header-height:56px}*,:before,:after{box-sizing:border-box}body{font-family:var(--font-sans);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-size:16px;line-height:1.5}#root,.app{flex-direction:column;min-height:100svh;display:flex}.header{z-index:50;background:var(--color-surface);border-bottom:1px solid var(--color-border);position:sticky;top:0;box-shadow:0 1px 3px #0000000a}.header__inner{max-width:1200px;padding:0 var(--space-6);height:var(--header-height);justify-content:space-between;align-items:center;margin:0 auto;display:flex}.header__brand{appearance:none;color:inherit;cursor:pointer;align-items:center;gap:var(--space-3);border-radius:var(--radius-sm);background:0 0;border:none;padding:0;font-family:inherit;display:flex}.header__brand:hover .header__wordmark{color:var(--color-link)}.header__brand:focus-visible{outline:2px solid var(--color-link);outline-offset:2px}.header__icon{color:var(--color-link);flex-shrink:0}.header__wordmark{color:var(--color-text);letter-spacing:-.5px;font-size:20px;font-weight:700}.header__nav{gap:var(--space-1);display:flex}.header__nav-btn{appearance:none;padding:var(--space-2) var(--space-3);font-family:var(--font-sans);color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-md);transition:color var(--transition-fast), background var(--transition-fast);background:0 0;border:none;font-size:14px;font-weight:500;position:relative}.header__nav-kofi{align-items:center;gap:var(--space-2);font-weight:600;text-decoration:none;display:inline-flex}.header__kofi-icon{color:#13c3ff;flex-shrink:0;display:block;transform:translateY(1px)}.header__nav-btn:hover{color:var(--color-text);background:var(--color-bg)}.header__nav-btn:focus-visible{outline:2px solid var(--color-link);outline-offset:2px}.header__nav-btn--active{color:var(--color-link);font-weight:600}.header__nav-btn--active:after{content:"";bottom:-9px;left:var(--space-3);right:var(--space-3);background:var(--color-link);border-radius:1px;height:2px;position:absolute}.main{flex:1}.main__inner{max-width:1200px;margin:0 auto}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.hero{color:#fff;padding:calc(var(--space-12) * 2) var(--space-6);background:linear-gradient(135deg,#122036 0%,#2c548c 100%)}.hero__inner{text-align:center;max-width:1200px;margin:0 auto}.hero__title{margin:0 0 var(--space-6);letter-spacing:-1px;color:#fff;font-size:50px;font-weight:800}.hero__subtitle{margin:0 0 var(--space-3);color:#ffffffd9;font-size:18px;font-weight:500}.hero__tagline{color:#fff9;max-width:520px;margin:0 auto;font-size:15px;line-height:1.6}.home-view__content{padding:var(--space-6)}.home-view__toolbar{margin-bottom:var(--space-6)}.home-view__search{align-items:center;gap:var(--space-3);flex-wrap:wrap;justify-content:space-between;display:flex}.toolbar__search-group{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.province-filter__select{appearance:none;border:1px solid var(--color-border-strong);background:var(--color-surface);padding:var(--space-2) var(--space-3);padding-right:var(--space-8);font-family:var(--font-sans);color:var(--color-text);border-radius:var(--radius-md);cursor:pointer;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--space-3) center;transition:border-color var(--transition-fast), box-shadow var(--transition-fast);font-size:14px;font-weight:500}.province-filter__select:hover{border-color:var(--color-link)}.province-filter__select:focus{border-color:var(--color-link);outline:none;box-shadow:0 0 0 3px #0a66c226}.search-box{appearance:none;border:1px solid var(--color-border-strong);background:var(--color-surface);padding:var(--space-2) var(--space-3);font-family:var(--font-sans);color:var(--color-text);border-radius:var(--radius-md);width:280px;transition:border-color var(--transition-fast), box-shadow var(--transition-fast);font-size:14px}.search-box::placeholder{color:var(--color-text-muted)}.search-box:focus{border-color:var(--color-link);outline:none;box-shadow:0 0 0 3px #0a66c226}.status-filter{border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-sm);display:inline-flex;overflow:hidden}.status-filter__btn{appearance:none;padding:var(--space-2) var(--space-4);font-family:var(--font-sans);color:var(--color-text-secondary);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);border:none;border-right:1px solid var(--color-border);background:0 0;font-size:14px;font-weight:500;line-height:1.4}.status-filter__btn:last-child{border-right:none}.status-filter__btn:hover:not(.status-filter__btn--active){background:var(--color-filter-hover);color:var(--color-filter-active)}.status-filter__btn:focus-visible{outline:2px solid var(--color-link);outline-offset:-2px;z-index:1}.status-filter__btn--active{background:var(--color-filter-active);color:var(--color-filter-active-text)}.jobs-view{height:calc(100vh - var(--header-height));flex-direction:column;display:flex}.jobs-view__toolbar{padding:var(--space-4) var(--space-6);background:linear-gradient(135deg, var(--color-toolbar-bg-start) 0%, var(--color-toolbar-bg-end) 100%);box-shadow:var(--color-toolbar-shadow);border-bottom:1px solid #0a66c21f;flex-shrink:0}.jobs-view__toolbar-inner{align-items:center;gap:var(--space-3);flex-wrap:wrap;justify-content:space-between;display:flex}.jobs-view__panes{flex:1;min-height:0;display:flex;overflow:hidden}.jobs-view__list-pane{border-right:1px solid var(--color-border);width:420px;padding:var(--space-4) var(--space-4);background:var(--color-surface);flex-shrink:0;overflow-y:auto}.jobs-view__detail-pane{min-width:0;padding:var(--space-6);background:var(--color-bg);flex:1;overflow-y:auto}.jobs-view__empty-detail{justify-content:center;align-items:center;gap:var(--space-4);padding:var(--space-12) 0;color:var(--color-text-muted);text-align:center;flex-direction:column;display:flex}.jobs-view__empty-detail svg{opacity:.3}.jobs-view__empty-detail p{margin:0;font-size:15px}.job-list__count{margin:0 0 var(--space-4);color:var(--color-text-muted);padding:0 var(--space-2);font-size:14px}.job-list__items{gap:var(--space-2);flex-direction:column;display:flex}.job-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4) var(--space-5);cursor:pointer;transition:box-shadow var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);border-left:3px solid #0000}.job-card:hover{box-shadow:var(--shadow-md);border-color:var(--color-border-strong)}.job-card--active{border-left-color:var(--color-active-border);background:var(--color-active-bg);box-shadow:var(--shadow-md)}.job-card--active:hover{background:var(--color-active-bg)}.job-card__header{justify-content:space-between;align-items:flex-start;gap:var(--space-3);margin-bottom:var(--space-2);display:flex}.job-card__title{letter-spacing:-.1px;margin:0;font-size:15px;font-weight:600;line-height:1.4}.job-card__link{color:var(--color-text);transition:color var(--transition-fast);font:inherit;cursor:pointer;text-align:left;background:0 0;border:none;padding:0;text-decoration:none}.job-card__link:hover{color:var(--color-link)}.job-card__link:focus-visible{outline:2px solid var(--color-link);outline-offset:2px;border-radius:var(--radius-sm)}.job-card__badge{padding:2px var(--space-2);text-transform:uppercase;letter-spacing:.5px;border-radius:var(--radius-sm);flex-shrink:0;align-items:center;font-size:11px;font-weight:600;line-height:1.5;display:inline-flex}.job-card__badge--open{background:var(--color-open-bg);color:var(--color-open);border:1px solid var(--color-open-border)}.job-card__badge--closed{background:var(--color-closed-bg);color:var(--color-closed);border:1px solid var(--color-closed-border)}.job-card__meta{align-items:center;gap:var(--space-2);color:var(--color-text-secondary);margin-bottom:var(--space-2);flex-wrap:wrap;font-size:13px;display:flex}.job-card__company{font-weight:500}.job-card__separator,.job-card__location{color:var(--color-text-muted)}.job-card__footer{align-items:center;gap:var(--space-3);color:var(--color-text-muted);flex-wrap:wrap;font-size:12px;display:flex}.job-card__date{align-items:center;display:inline-flex}.job-card__closed-info{color:var(--color-closed)}.job-card__source{padding:1px var(--space-2);color:var(--color-text-muted);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);align-items:center;font-size:11px;font-weight:500;line-height:1.5;display:inline-flex}.job-card__external-link{color:var(--color-link);transition:color var(--transition-fast);margin-left:auto;font-size:12px;text-decoration:none}.job-card__external-link:hover{color:var(--color-link-hover)}.job-card__external-link:focus-visible{outline:2px solid var(--color-link);outline-offset:2px;border-radius:var(--radius-sm)}.job-list__loading{align-items:center;gap:var(--space-4);padding:var(--space-12) 0;color:var(--color-text-muted);flex-direction:column;font-size:15px;display:flex}.spinner{border:3px solid var(--color-border);border-top-color:var(--color-link);border-radius:50%;width:32px;height:32px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.job-list__error{align-items:center;gap:var(--space-3);padding:var(--space-10) var(--space-6);background:var(--color-error-bg);border:1px solid var(--color-error-border);border-radius:var(--radius-lg);text-align:center;flex-direction:column;display:flex}.job-list__error-icon{color:var(--color-error)}.job-list__error-text{color:var(--color-error);margin:0;font-size:15px;font-weight:500}.job-list__retry-btn{appearance:none;border:1px solid var(--color-error);background:var(--color-surface);color:var(--color-error);padding:var(--space-2) var(--space-5);font-family:var(--font-sans);border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);font-size:14px;font-weight:500}.job-list__retry-btn:hover{background:var(--color-error);color:#fff}.job-list__retry-btn:focus-visible{outline:2px solid var(--color-error);outline-offset:2px}.job-list__empty{align-items:center;gap:var(--space-4);padding:var(--space-12) 0;color:var(--color-text-muted);text-align:center;flex-direction:column;display:flex}.job-list__empty-icon{opacity:.4}.job-list__empty-text{margin:0;font-size:16px}.job-list__sentinel{height:1px}.job-list__loading-more{align-items:center;gap:var(--space-3);padding:var(--space-6) 0;color:var(--color-text-muted);flex-direction:column;font-size:14px;display:flex}.job-list__end{margin:var(--space-6) 0;text-align:center;color:var(--color-text-muted);font-size:13px}.spinner--sm{border-width:2px;width:20px;height:20px}.footer{border-top:1px solid var(--color-border);padding:var(--space-5) var(--space-6);text-align:center;background:var(--color-surface)}.footer__text{color:var(--color-text-muted);margin:0;font-size:13px}.job-detail{gap:var(--space-6);flex-direction:column;display:flex}.job-detail__back{appearance:none;font-family:var(--font-sans);color:var(--color-link);cursor:pointer;align-items:center;gap:var(--space-1);transition:color var(--transition-fast);background:0 0;border:none;align-self:flex-start;padding:0;font-size:14px;font-weight:500;display:inline-flex}.job-detail__back:hover{color:var(--color-link-hover)}.job-detail__back:focus-visible{outline:2px solid var(--color-link);outline-offset:2px;border-radius:var(--radius-sm)}.job-detail__card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-8)}.job-detail__header{justify-content:space-between;align-items:flex-start;gap:var(--space-3);margin-bottom:var(--space-3);display:flex}.job-detail__title{letter-spacing:-.4px;color:var(--color-text);margin:0;font-size:24px;font-weight:700;line-height:1.3}.job-detail__meta{align-items:center;gap:var(--space-2);color:var(--color-text-secondary);margin-bottom:var(--space-4);flex-wrap:wrap;font-size:15px;display:flex}.job-detail__company{color:var(--color-text);font-weight:500}.job-detail__separator,.job-detail__location{color:var(--color-text-muted)}.job-detail__source{color:var(--color-text-muted);font-weight:500}.job-detail__dates{align-items:center;gap:var(--space-4);color:var(--color-text-muted);margin-bottom:var(--space-5);flex-wrap:wrap;font-size:14px;display:flex}.job-detail__date{align-items:center;display:inline-flex}.job-detail__closed-info{color:var(--color-closed)}.job-detail__actions{margin-bottom:var(--space-6);padding-bottom:var(--space-6);border-bottom:1px solid var(--color-border)}.job-detail__apply-link{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);background:var(--color-link);color:#fff;border-radius:var(--radius-md);transition:background var(--transition-fast), box-shadow var(--transition-fast);font-size:15px;font-weight:600;text-decoration:none;display:inline-flex}.job-detail__apply-link:hover{background:var(--color-link-hover);box-shadow:var(--shadow-md)}.job-detail__apply-link:focus-visible{outline:2px solid var(--color-link);outline-offset:2px}.job-detail__description{color:var(--color-text);font-size:15px;line-height:1.65}.job-detail__description p{margin:0 0 var(--space-4)}.job-detail__description p:last-child{margin-bottom:0}.job-detail__no-description{padding:var(--space-6);background:var(--color-closed-bg);border:1px solid var(--color-closed-border);border-radius:var(--radius-md);text-align:center}.job-detail__no-description p{color:var(--color-text-secondary);margin:0;font-size:15px}.job-detail__description-html{color:var(--color-text);font-size:15px;line-height:1.65}.job-detail__description-html h1,.job-detail__description-html h2,.job-detail__description-html h3,.job-detail__description-html h4,.job-detail__description-html h5,.job-detail__description-html h6{margin:var(--space-6) 0 var(--space-3);color:var(--color-text);font-weight:600;line-height:1.35}.job-detail__description-html h1{font-size:22px}.job-detail__description-html h2{font-size:19px}.job-detail__description-html h3{font-size:17px}.job-detail__description-html h4{font-size:16px}.job-detail__description-html h1:first-child,.job-detail__description-html h2:first-child,.job-detail__description-html h3:first-child,.job-detail__description-html h4:first-child{margin-top:0}.job-detail__description-html p{margin:0 0 var(--space-4)}.job-detail__description-html p:last-child{margin-bottom:0}.job-detail__description-html ul,.job-detail__description-html ol{margin:0 0 var(--space-4);padding-left:var(--space-6)}.job-detail__description-html li{margin-bottom:var(--space-2);line-height:1.6}.job-detail__description-html li:last-child{margin-bottom:0}.job-detail__description-html strong{color:var(--color-text);font-weight:600}.job-detail__description-html em{font-style:italic}.job-detail__description-html a{color:var(--color-link);text-underline-offset:2px;transition:color var(--transition-fast), text-decoration-color var(--transition-fast);-webkit-text-decoration:underline #0a66c24d;text-decoration:underline #0a66c24d}.job-detail__description-html a:hover{color:var(--color-link-hover);-webkit-text-decoration-color:var(--color-link-hover);text-decoration-color:var(--color-link-hover)}.job-detail__description-html blockquote{margin:var(--space-4) 0;padding:var(--space-3) var(--space-4);border-left:3px solid var(--color-border-strong);background:var(--color-bg);border-radius:0 var(--radius-sm) var(--radius-sm) 0;color:var(--color-text-secondary);font-style:italic}.job-detail__description-html hr{border:none;border-top:1px solid var(--color-border);margin:var(--space-6) 0}.job-detail__description-html code{font-family:var(--font-mono);background:var(--color-bg);padding:1px var(--space-1);border-radius:var(--radius-sm);font-size:13px}.job-detail__description-html pre{margin:0 0 var(--space-4);padding:var(--space-4);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow-x:auto}.job-detail__description-html pre code{background:0 0;padding:0}.about-view{padding:var(--space-8) var(--space-6);max-width:800px;margin:0 auto}.about-view__title{margin:0 0 var(--space-12);color:var(--color-text);letter-spacing:-.5px;font-size:28px;font-weight:700}.about-view__text{color:var(--color-text-secondary);margin:0 0 var(--space-4);font-size:16px;line-height:1.7}.about-view__text--muted{color:var(--color-text-muted);font-size:14px;font-style:italic}.about-view__section-title{margin:var(--space-10) 0 var(--space-4);color:var(--color-text);letter-spacing:-.3px;font-size:22px;font-weight:600}.about-view__notice{gap:var(--space-3);padding:var(--space-4) var(--space-5);margin:var(--space-10) 0;border-radius:var(--radius-md);color:#78350f;background:#fff8e6;border:1px solid #f0d68a;border-left:4px solid #b45309;display:flex}.about-view__notice-icon{color:#b45309;flex-shrink:0;margin-top:2px}.about-view__notice-text{font-size:14px;line-height:1.6}.about-view__notice-text strong{margin-bottom:var(--space-1);color:#92400e;font-size:15px;display:block}.about-view__notice-text p{color:#78350f;margin:0}.about-view__empty{padding:var(--space-8);text-align:center;color:var(--color-text-muted);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg)}.about-view__empty p{margin:0;font-size:15px}.about-view__source-grid{gap:var(--space-6);flex-direction:column;display:flex}.about-view__province-group{gap:var(--space-3);flex-direction:column;display:flex}.about-view__province-title{color:var(--color-text);padding-bottom:var(--space-2);border-bottom:2px solid var(--color-border);margin:0;font-size:18px;font-weight:700}.about-view__province-sources{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}.about-view__source-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5);transition:box-shadow var(--transition-fast), border-color var(--transition-fast)}.about-view__source-card:hover{box-shadow:var(--shadow-md);border-color:var(--color-border-strong)}.about-view__source-name{margin:0 0 var(--space-2);color:var(--color-text);font-size:16px;font-weight:600}.about-view__source-link{color:var(--color-link);word-break:break-all;transition:color var(--transition-fast);font-size:13px;text-decoration:none}.about-view__source-link:hover{color:var(--color-link-hover);text-decoration:underline}.about-view__source-link:focus-visible{outline:2px solid var(--color-link);outline-offset:2px;border-radius:var(--radius-sm)}.about-view__source-no-url{color:var(--color-text-muted);font-size:14px}.admin-page{padding:var(--space-6)}.admin-page__header{align-items:center;gap:var(--space-4);margin-bottom:var(--space-6);flex-wrap:wrap;display:flex}.admin-page__header-actions{align-items:center;gap:var(--space-3);flex-wrap:wrap;margin-left:auto;display:flex}.admin-page__header-actions .admin-page__add-btn{margin-left:0}.admin-page__title{color:var(--color-text);letter-spacing:-.3px;margin:0;font-size:22px;font-weight:600}.admin-page__add-btn{appearance:none;border:1px solid var(--color-link);background:var(--color-link);color:#fff;padding:var(--space-2) var(--space-4);font-family:var(--font-sans);border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast), box-shadow var(--transition-fast);margin-left:auto;font-size:14px;font-weight:500}.admin-page__add-btn:hover{background:var(--color-link-hover);box-shadow:var(--shadow-md)}.admin-page__add-btn:focus-visible{outline:2px solid var(--color-link);outline-offset:2px}.admin-page__logout-btn{appearance:none;border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text-secondary);padding:var(--space-2) var(--space-4);font-family:var(--font-sans);border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);font-size:14px;font-weight:500}.admin-page__logout-btn:hover{background:var(--color-error-bg);border-color:var(--color-error);color:var(--color-error)}.admin-page__logout-btn:focus-visible{outline:2px solid var(--color-error);outline-offset:2px}.admin-page__import-btn{appearance:none;border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text-secondary);padding:var(--space-2) var(--space-4);font-family:var(--font-sans);border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);font-size:14px;font-weight:500}.admin-page__import-btn:hover:not(:disabled){background:var(--color-bg);border-color:var(--color-text-muted);color:var(--color-text)}.admin-page__import-btn:focus-visible{outline:2px solid var(--color-link);outline-offset:2px}.admin-page__import-btn:disabled{opacity:.5;cursor:not-allowed}.admin-page__import-msg{margin:0 0 var(--space-4);color:var(--color-text-secondary);font-size:14px}.source-table-wrap{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow-x:auto}.source-table{border-collapse:collapse;width:100%;font-size:14px}.source-table__head-row{background:var(--color-bg);border-bottom:1px solid var(--color-border)}.source-table__th{padding:var(--space-3) var(--space-4);text-align:left;text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-secondary);white-space:nowrap;font-size:12px;font-weight:600}.source-table__th--center{text-align:center}.source-table__th--toggle{width:80px}.source-table__th--actions{text-align:right;width:130px}.source-table__row{border-bottom:1px solid var(--color-border);transition:background var(--transition-fast)}.source-table__row:last-child{border-bottom:none}.source-table__row:hover{background:var(--color-bg)}.source-table__cell{padding:var(--space-3) var(--space-4);vertical-align:middle;color:var(--color-text-secondary)}.source-table__cell--name{color:var(--color-text);align-items:center;gap:var(--space-2);font-weight:500;display:flex}.source-table__name{white-space:nowrap}.source-table__province{min-width:30px;color:var(--color-link);border-radius:var(--radius-sm);letter-spacing:.02em;background:#0a66c21a;justify-content:center;align-items:center;padding:2px 8px;font-size:12px;font-weight:600;display:inline-flex}.source-table__fail-badge{color:#fff;background:var(--color-error);border-radius:9px;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 4px;font-size:11px;font-weight:600;display:inline-flex}.source-table__cell--toggle{text-align:center}.source-table__cell--url{text-overflow:ellipsis;white-space:nowrap;max-width:200px;font-family:var(--font-mono);font-size:13px;overflow:hidden}.source-table__cell--center{text-align:center}.source-table__cell--domains{text-overflow:ellipsis;white-space:nowrap;max-width:150px;font-size:13px;overflow:hidden}.source-table__cell--date{white-space:nowrap;font-size:13px}.source-table__cell--actions{text-align:right;white-space:nowrap}.source-table__failures--error{color:var(--color-error);font-weight:600}.source-table__action-btn{appearance:none;border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text-secondary);padding:var(--space-1) var(--space-3);font-family:var(--font-sans);border-radius:var(--radius-sm);cursor:pointer;margin-left:var(--space-2);transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);font-size:13px;font-weight:500}.source-table__action-btn:hover{background:var(--color-bg);border-color:var(--color-link);color:var(--color-link)}.source-table__action-btn:focus-visible{outline:2px solid var(--color-link);outline-offset:2px}.source-table__action-btn--danger{color:var(--color-error);border-color:var(--color-error-border)}.source-table__action-btn--danger:hover{background:var(--color-error-bg);border-color:var(--color-error);color:var(--color-error)}.toggle{appearance:none;padding:var(--space-1);cursor:pointer;align-items:center;gap:var(--space-2);font-family:var(--font-sans);transition:opacity var(--transition-fast);background:0 0;border:none;font-size:13px;font-weight:500;display:inline-flex}.toggle:disabled{opacity:.6;cursor:not-allowed}.toggle--pending{opacity:.7}.toggle__track{background:var(--color-border-strong);width:36px;height:20px;transition:background var(--transition-fast);border-radius:10px;flex-shrink:0;display:inline-block;position:relative}.toggle--on .toggle__track{background:var(--color-open)}.toggle__thumb{width:16px;height:16px;box-shadow:var(--shadow-sm);transition:transform var(--transition-fast);background:#fff;border-radius:50%;position:absolute;top:2px;left:2px}.toggle--on .toggle__thumb{transform:translate(16px)}.toggle__label{color:var(--color-text-muted);font-size:12px}.toggle--on .toggle__label{color:var(--color-open)}.source-form-overlay{z-index:100;padding:var(--space-6);background:#0f172a80;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.source-form{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:100%;max-width:520px;max-height:90vh;overflow-y:auto}.source-form__title{padding:var(--space-6) var(--space-6) var(--space-4);color:var(--color-text);margin:0;font-size:18px;font-weight:600}.source-form__error-banner{margin:0 var(--space-6) var(--space-4);padding:var(--space-3) var(--space-4);background:var(--color-error-bg);border:1px solid var(--color-error-border);border-radius:var(--radius-md);color:var(--color-error);font-size:14px;font-weight:500}.source-form__fields{gap:var(--space-4);padding:0 var(--space-6);flex-direction:column;display:flex}.source-form__field{gap:var(--space-1);flex-direction:column;display:flex}.source-form__field--half{flex:1}.source-form__row{gap:var(--space-4);display:flex}.source-form__label{color:var(--color-text-secondary);font-size:13px;font-weight:500}.source-form__required{color:var(--color-error)}.source-form__input{appearance:none;border:1px solid var(--color-border-strong);background:var(--color-surface);padding:var(--space-2) var(--space-3);font-family:var(--font-sans);color:var(--color-text);border-radius:var(--radius-md);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);width:100%;font-size:14px}.source-form__input::placeholder{color:var(--color-text-muted)}.source-form__input:focus{border-color:var(--color-link);outline:none;box-shadow:0 0 0 3px #0a66c226}.source-form__field-error{color:var(--color-error);font-size:12px}.source-form__checkboxes{gap:var(--space-6);padding-top:var(--space-1);display:flex}.source-form__checkbox{align-items:center;gap:var(--space-2);color:var(--color-text-secondary);cursor:pointer;font-size:14px;display:flex}.source-form__checkbox input[type=checkbox]{width:16px;height:16px;accent-color:var(--color-link)}.source-form__actions{justify-content:flex-end;gap:var(--space-3);padding:var(--space-5) var(--space-6) var(--space-6);display:flex}.source-form__btn{appearance:none;border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text-secondary);padding:var(--space-2) var(--space-5);font-family:var(--font-sans);border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);font-size:14px;font-weight:500}.source-form__btn:hover:not(:disabled){background:var(--color-bg);border-color:var(--color-text-muted);color:var(--color-text)}.source-form__btn:focus-visible{outline:2px solid var(--color-link);outline-offset:2px}.source-form__btn:disabled{opacity:.5;cursor:not-allowed}.source-form__btn--cancel{border-color:var(--color-border)}.source-form__btn--submit{background:var(--color-link);color:#fff;border-color:var(--color-link)}.source-form__btn--submit:hover:not(:disabled){background:var(--color-link-hover);border-color:var(--color-link-hover)}.login-form-wrap{padding:var(--space-12) var(--space-6);justify-content:center;display:flex}.login-form-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-8);width:100%;max-width:400px;box-shadow:var(--shadow-md)}.login-form-card__title{margin:0 0 var(--space-2);color:var(--color-text);letter-spacing:-.3px;font-size:20px;font-weight:600}.login-form-card__subtitle{margin:0 0 var(--space-6);color:var(--color-text-secondary);font-size:14px}.login-form{gap:var(--space-4);flex-direction:column;display:flex}.login-form__error{padding:var(--space-3) var(--space-4);background:var(--color-error-bg);border:1px solid var(--color-error-border);border-radius:var(--radius-md);color:var(--color-error);font-size:14px;font-weight:500}.login-form__field{gap:var(--space-1);flex-direction:column;display:flex}.login-form__label{color:var(--color-text-secondary);font-size:13px;font-weight:500}.login-form__input{appearance:none;border:1px solid var(--color-border-strong);background:var(--color-surface);padding:var(--space-2) var(--space-3);font-family:var(--font-sans);color:var(--color-text);border-radius:var(--radius-md);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);font-size:14px}.login-form__input::placeholder{color:var(--color-text-muted)}.login-form__input:focus{border-color:var(--color-link);outline:none;box-shadow:0 0 0 3px #0a66c226}.login-form__input:disabled{opacity:.6;cursor:not-allowed}.login-form__submit{appearance:none;border:1px solid var(--color-link);background:var(--color-link);color:#fff;padding:var(--space-2) var(--space-5);font-family:var(--font-sans);border-radius:var(--radius-md);cursor:pointer;margin-top:var(--space-2);transition:background var(--transition-fast), box-shadow var(--transition-fast);font-size:14px;font-weight:500}.login-form__submit:hover:not(:disabled){background:var(--color-link-hover);box-shadow:var(--shadow-md)}.login-form__submit:focus-visible{outline:2px solid var(--color-link);outline-offset:2px}.login-form__submit:disabled{opacity:.5;cursor:not-allowed}.admin-shell{min-height:calc(100vh - var(--header-height));display:flex}.admin-shell__sidebar{background:var(--color-surface);border-right:1px solid var(--color-border);width:200px;padding:var(--space-4) 0;flex-direction:column;flex-shrink:0;justify-content:space-between;display:flex}.admin-shell__nav{gap:var(--space-1);padding:0 var(--space-2);flex-direction:column;display:flex}.admin-shell__nav-btn{appearance:none;padding:var(--space-2) var(--space-3);font-family:var(--font-sans);color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-md);text-align:left;transition:color var(--transition-fast), background var(--transition-fast);background:0 0;border:none;font-size:14px;font-weight:500}.admin-shell__nav-btn:hover{color:var(--color-text);background:var(--color-bg)}.admin-shell__nav-btn:focus-visible{outline:2px solid var(--color-link);outline-offset:2px}.admin-shell__nav-btn--active{color:var(--color-link);background:var(--color-active-bg);font-weight:600}.admin-shell__logout-btn{appearance:none;border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text-secondary);padding:var(--space-2) var(--space-4);margin:0 var(--space-4);font-family:var(--font-sans);border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);font-size:14px;font-weight:500}.admin-shell__logout-btn:hover{background:var(--color-error-bg);border-color:var(--color-error);color:var(--color-error)}.admin-shell__logout-btn:focus-visible{outline:2px solid var(--color-error);outline-offset:2px}.admin-shell__content{background:var(--color-bg);flex:1;min-width:0;overflow-y:auto}.stats-chart-wrap{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5) var(--space-6) var(--space-4);box-shadow:var(--shadow-sm)}.stats-chart__summary{margin:0 0 var(--space-5);color:var(--color-text-secondary);font-size:14px;font-weight:500}.stats-chart{height:200px;padding-bottom:var(--space-6);align-items:flex-end;gap:2px;display:flex;position:relative}.stats-chart__col{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;min-width:0;height:100%;display:flex;position:relative}.stats-chart__bar{background:var(--color-link);border-radius:var(--radius-sm) var(--radius-sm) 0 0;width:100%;max-width:28px;transition:opacity var(--transition-fast), background var(--transition-fast);flex-shrink:0}.stats-chart__bar--zero{background:var(--color-border);opacity:.5}.stats-chart__bar--today{background:var(--color-open)}.stats-chart__count{color:var(--color-text-secondary);white-space:nowrap;margin-bottom:2px;font-size:11px;font-weight:600;line-height:1}.stats-chart__label{bottom:calc(-1 * var(--space-6));color:var(--color-text-muted);white-space:nowrap;font-size:11px;line-height:1;position:absolute}.stats-chart__label--hidden{visibility:hidden}.stats-cards{gap:var(--space-4);margin:0 0 var(--space-5);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.stats-card{gap:var(--space-1);padding:var(--space-4) var(--space-5);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);flex-direction:column;display:flex}.stats-card__label{color:var(--color-text-secondary);font-size:13px;font-weight:500}.stats-card__value{color:var(--color-text);font-size:28px;font-weight:700;line-height:1.1}.stats-terms-wrap{margin-top:var(--space-6);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5) var(--space-6);box-shadow:var(--shadow-sm)}.stats-terms__title{margin:0 0 var(--space-4);color:var(--color-text);font-size:16px;font-weight:600}.stats-terms__list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.stats-terms__item{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-2) 0;border-bottom:1px solid var(--color-border);display:flex}.stats-terms__item:last-child{border-bottom:none}.stats-terms__term{color:var(--color-text);overflow-wrap:anywhere;font-size:15px}.stats-terms__count{text-align:center;min-width:28px;color:var(--color-link);background:var(--color-active-bg);border-radius:var(--radius-md);padding:2px var(--space-2);flex-shrink:0;font-size:13px;font-weight:600}@media (width<=640px){.stats-chart-wrap{padding:var(--space-4) var(--space-3) var(--space-3)}.stats-cards{gap:var(--space-3);grid-template-columns:1fr}.stats-chart{gap:1px;height:140px}.stats-chart__bar{max-width:16px}.stats-chart__count,.stats-chart__label{font-size:9px}}.crawl-log__badge{padding:2px var(--space-2);text-transform:uppercase;letter-spacing:.5px;border-radius:var(--radius-sm);align-items:center;font-size:11px;font-weight:600;line-height:1.5;display:inline-flex}.crawl-log__badge--manual{background:var(--color-open-bg);color:var(--color-open);border:1px solid var(--color-open-border)}.crawl-log__badge--scheduled{background:var(--color-closed-bg);color:var(--color-closed);border:1px solid var(--color-closed-border)}.crawl-log__count{font-size:14px;font-weight:500}.crawl-log__count--ok{color:var(--color-open)}.crawl-log__count--failed{color:var(--color-error);font-weight:600}.crawl-log__count--new{color:var(--color-primary);font-weight:600}.crawl-log__details-row{background:var(--color-bg)}.crawl-log__details-cell{padding:var(--space-3) var(--space-4) var(--space-3) var(--space-8);border-bottom:1px solid var(--color-border)}.crawl-log__details-list{gap:var(--space-2);flex-wrap:wrap;display:flex}.crawl-log__detail-item{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:13px;display:inline-flex}.crawl-log__detail-name{color:var(--color-text);font-weight:500}.crawl-log__detail-status{color:var(--color-open);text-transform:uppercase;font-size:11px;font-weight:600}.crawl-log__detail-status--failed{color:var(--color-error)}.crawl-log__detail-error{color:var(--color-error);font-size:12px;font-style:italic}.crawl-log__trigger-btn{margin-left:auto}.crawl-log__message{margin:0 0 var(--space-4);color:var(--color-text-secondary);font-size:14px}.crawl-log__message--error{color:var(--color-error)}@media (width<=640px){.admin-shell{flex-direction:column}.admin-shell__sidebar{border-right:none;border-bottom:1px solid var(--color-border);width:100%;padding:var(--space-2) 0;flex-direction:row;overflow-x:auto}.admin-shell__nav{padding:0 var(--space-2);flex-direction:row;flex:1;gap:0}.admin-shell__nav-btn{white-space:nowrap;text-align:center}.admin-shell__logout-btn{margin:0 var(--space-2);white-space:nowrap}}@media (width>=900px){.job-detail__back{display:none}}@media (width<=899px){.jobs-view__panes{flex-direction:column;overflow:visible}.jobs-view__list-pane{border-right:none;border-bottom:1px solid var(--color-border);width:100%;max-height:none;overflow-y:visible}.jobs-view__detail-pane{display:none;overflow-y:visible}.jobs-view--mobile-detail .jobs-view__list-pane{display:none}.jobs-view--mobile-detail .jobs-view__detail-pane{min-height:calc(100vh - var(--header-height));padding:var(--space-4) var(--space-4);flex-direction:column;display:flex}.jobs-view__detail-pane .job-detail__card{padding:var(--space-5)}.jobs-view__detail-pane .job-detail__title{font-size:20px}}@media (width<=640px){.header__inner{padding:0 var(--space-4)}.header__wordmark{font-size:18px}.header__nav-btn{padding:var(--space-2);font-size:13px}.hero{padding:var(--space-8) var(--space-4)}.hero__title{font-size:28px}.hero__subtitle{font-size:16px}.home-view__content{padding:var(--space-4)}.home-view__search{flex-direction:column;align-items:stretch}.search-box{width:100%}.jobs-view__toolbar{padding:var(--space-3) var(--space-4)}.jobs-view__toolbar-inner{flex-direction:column;align-items:stretch}.job-card{padding:var(--space-3) var(--space-4)}.job-card__header{gap:var(--space-2);flex-direction:column}.job-card__title{font-size:14px}.job-card__footer{gap:var(--space-2)}.about-view{padding:var(--space-6) var(--space-4)}.about-view__title{font-size:24px}.about-view__source-grid{grid-template-columns:1fr}.admin-page{padding:var(--space-4)}.admin-page__header{align-items:flex-start;gap:var(--space-3);flex-direction:column}.admin-page__add-btn,.admin-page__import-btn,.admin-page__logout-btn{text-align:center;width:100%;margin-left:0}.source-form-overlay{padding:var(--space-4)}.source-form__row{flex-direction:column}.source-form__checkboxes{gap:var(--space-3);flex-direction:column}.source-table__cell--url,.source-table__cell--domains{max-width:120px}.job-detail__card{padding:var(--space-5)}.job-detail__title{font-size:20px}.job-detail__header{gap:var(--space-2);flex-direction:column}}
