:root{--fs-green: #124734;--fs-green-dark: #0c3226;--fs-gold: #cda053;--fs-gold-dark: #b8863a;--fs-cream: #f3f1ef;--fs-white: #ffffff;--fs-text: #2f2f2f;--fs-border: #e3e0da;font-family:"Source Sans 3",system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--fs-cream);color:var(--fs-text)}.site{display:flex;flex-direction:column;min-height:100vh}.site-header{background:var(--fs-white);border-bottom:1px solid var(--fs-border);position:sticky;top:0;z-index:10}.site-header-inner{max-width:1200px;margin:0 auto;padding:.9rem 1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.site-header .logo{height:44px;width:auto;max-width:100%;display:block}.app-badge{color:var(--fs-green);font-weight:600;font-size:.85rem;letter-spacing:.04em;text-transform:uppercase;border-left:2px solid var(--fs-gold);padding-left:.75rem}.app{max-width:1200px;margin:0 auto;padding:1.75rem 1.5rem;width:100%;flex:1}.app h1{color:var(--fs-text);font-size:1.9rem;margin:0 0 .4rem}.site-footer{background:var(--fs-green);margin-top:auto}.site-footer-inner{max-width:1200px;margin:0 auto;padding:1.75rem 1.5rem;display:flex;align-items:center;gap:1.25rem;flex-wrap:wrap}.site-footer .logo{height:40px;width:auto;max-width:100%;display:block}.site-footer p{color:#e9e4d8;font-size:.85rem;margin:0}.panel{background:var(--fs-white);border:1px solid var(--fs-border);border-radius:2px;padding:1.1rem 1.35rem;margin-bottom:1.25rem}.panel h2{font-size:1.05rem;text-transform:uppercase;letter-spacing:.03em;color:var(--fs-green);margin:0 0 .6rem}.panel h3{font-size:1rem;text-transform:uppercase;letter-spacing:.03em;color:var(--fs-green);margin:0 0 .6rem}.tabs{display:flex;gap:1.75rem;margin-bottom:1.25rem;border-bottom:1px solid var(--fs-border)}.tab{padding:.6rem .1rem;cursor:pointer;font-size:.85rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:#6b6b6b;border-bottom:3px solid transparent}.tab:hover{color:var(--fs-green)}.tab.active{color:var(--fs-green);border-bottom-color:var(--fs-gold)}button{cursor:pointer;border-radius:2px;border:1px solid var(--fs-green);background:var(--fs-green);color:#fff;padding:.65rem 1.4rem;font-size:.85rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;transition:background .15s ease,border-color .15s ease,transform .1s ease,box-shadow .15s ease}button:hover:not(:disabled){background:var(--fs-green-dark);border-color:var(--fs-green-dark);box-shadow:0 2px 6px #12473440}button:active:not(:disabled){transform:scale(.96);box-shadow:none}button:disabled{opacity:.45;cursor:not-allowed}button.secondary{background:transparent;color:var(--fs-green);border:1px solid var(--fs-green)}button.secondary:hover:not(:disabled){background:var(--fs-green);color:#fff}button.primary-cta{background:var(--fs-gold);border-color:var(--fs-gold);color:#fff}button.primary-cta:hover:not(:disabled){background:var(--fs-gold-dark);border-color:var(--fs-gold-dark);box-shadow:0 2px 6px #cda05366}input[type=password],input[type=number],input[type=text]{border:1px solid var(--fs-border);border-radius:2px;padding:.5rem .6rem;font-family:inherit;font-size:.9rem;background:var(--fs-white);color:var(--fs-text)}input:focus{outline:2px solid var(--fs-gold);outline-offset:1px}label{font-size:.85rem;color:var(--fs-text)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem}.card{border:1px solid var(--fs-border);border-radius:2px;overflow:hidden;background:var(--fs-white);font-size:.85rem}.card-enter{animation:card-enter .3s ease both}@keyframes card-enter{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.thumb{position:relative}.card img{width:100%;height:140px;object-fit:cover;display:block}.thumb-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#1247348c;animation:overlay-fade-in .2s ease both}@keyframes overlay-fade-in{0%{opacity:0}to{opacity:1}}.spinner{display:inline-block;border-radius:50%;border-style:solid;border-color:#ffffff59;border-top-color:var(--fs-gold);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.timer-live{animation:pulse-text 1.4s ease-in-out infinite}@keyframes pulse-text{0%,to{opacity:.6}50%{opacity:1}}.card .body{padding:.6rem}.badge{display:inline-block;padding:.15rem .55rem;border-radius:2px;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.02em}.badge.done{background:#e3efe9;color:var(--fs-green)}.badge.failed{background:#fbdcdc;color:#a01414}.badge.duplicate{background:#f4e9d6;color:var(--fs-gold-dark)}.badge.scoring,.badge.preparing,.badge.hashing,.badge.queued{background:#f4e9d6;color:#8a6d00}.field-invalid{border-color:#a01414!important}.field-error{color:#a01414;font-size:.85rem;margin-left:.5rem}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.85rem}th,td{border:1px solid var(--fs-border);padding:.5rem .65rem;text-align:left;vertical-align:top}th{background:var(--fs-cream);color:var(--fs-green);text-transform:uppercase;font-size:.75rem;letter-spacing:.03em}.warnings-list{margin:.3rem 0 0;padding-left:1rem}.muted{color:#777;font-size:.8rem}.score-row{display:flex;justify-content:space-between;gap:.5rem}.toolbar{display:flex;gap:.6rem;flex-wrap:wrap;margin-bottom:1rem;align-items:center}.progress-wrap{margin-top:.75rem}.progress-label{display:flex;justify-content:space-between;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--fs-green);margin-bottom:.3rem}.progress-track{height:8px;background:var(--fs-cream);border:1px solid var(--fs-border);border-radius:999px;overflow:hidden}.progress-fill{height:100%;background:var(--fs-gold);border-radius:999px;transition:width .25s ease}.progress-fill-active{background-image:linear-gradient(135deg,var(--fs-gold) 25%,var(--fs-gold-dark) 25%,var(--fs-gold-dark) 50%,var(--fs-gold) 50%,var(--fs-gold) 75%,var(--fs-gold-dark) 75%,var(--fs-gold-dark) 100%);background-size:28px 28px;animation:progress-stripes 1s linear infinite}@keyframes progress-stripes{to{background-position:28px 0}}.progress-fill-done{background:var(--fs-green)}@media (prefers-reduced-motion: reduce){.card-enter,.thumb-overlay,.spinner,.timer-live,.progress-fill-active{animation:none}button,.progress-fill{transition:none}}@media (max-width: 640px){.site-header-inner{justify-content:center;text-align:center}.app-badge{border-left:none;padding-left:0}.score-row{flex-direction:column;align-items:flex-start;gap:.2rem}.tabs{gap:1rem;overflow-x:auto}}
