:root{--slate:#23303f;--slate-soft:#3a4a5c;--ink:#1a1a1a;--muted:#667085;--line:#e3e6ea;--panel:#ffffff;--bg:#f6f7f8;--field:#fbfcfd;--green:#1a7f4b;--green-bg:#e8f5ee;--amber:#b5730b;--amber-bg:#fbf1de;--red:#b42318;--red-bg:#fbeae8}*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--bg);font-size:14px;line-height:1.5}.app{max-width:1400px;margin:0 auto;padding:20px}header.masthead{display:flex;align-items:baseline;justify-content:space-between;border-bottom:2px solid var(--slate);padding-bottom:12px;margin-bottom:18px;flex-wrap:wrap;gap:8px}header.masthead h1{font-size:20px;margin:0;color:var(--slate);letter-spacing:-.01em}header.masthead .sub{color:var(--muted);font-size:12.5px;max-width:640px}.grid{display:grid;grid-template-columns:1fr 1fr 1.15fr;grid-gap:16px;gap:16px;align-items:start}@media (max-width:1080px){.grid{grid-template-columns:1fr}}.panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:14px}.panel h2{text-transform:uppercase;letter-spacing:.06em;color:var(--slate);padding-bottom:6px;border-bottom:1px solid var(--line)}.panel .hint,.panel h2{font-size:12px;margin:0 0 10px}.panel .hint{color:var(--muted)}label{display:block;font-size:12px;font-weight:600;color:var(--slate-soft);margin:10px 0 4px}input[type=text],textarea{width:100%;border:1px solid var(--line);border-radius:6px;padding:8px 10px;font-size:13px;font-family:inherit;background:var(--field);color:var(--ink);resize:vertical}input[type=text]:focus,textarea:focus{outline:none;border-color:var(--slate);box-shadow:0 0 0 3px rgba(35,48,63,.08)}.dropzone{border:1.5px dashed var(--line);border-radius:8px;padding:18px;text-align:center;color:var(--muted);font-size:12.5px;cursor:pointer;transition:all .12s ease;background:var(--field)}.dropzone.drag{border-color:var(--slate);background:#eef1f4}.dropzone strong,.dropzone.drag{color:var(--slate)}.filelist{list-style:none;margin:12px 0 0;padding:0}.filelist li{display:flex;align-items:center;gap:8px;padding:8px;border:1px solid var(--line);border-radius:6px;margin-bottom:6px;background:#fff}.filelist li.sel{border-color:var(--slate);background:#f3f6f9}.filelist .fname{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12.5px}.filelist .meta{color:var(--muted);font-size:11px;white-space:nowrap}.filelist .chip{font-size:10px;text-transform:uppercase;letter-spacing:.04em;padding:1px 6px;border-radius:4px;background:#eef1f4;color:var(--slate-soft)}.roletoggle{display:inline-flex;border:1px solid var(--line);border-radius:5px;overflow:hidden;flex-shrink:0}.roletoggle button{border:none;background:#fff;color:var(--muted);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:2px 7px;cursor:pointer;font-family:inherit}.roletoggle button+button{border-left:1px solid var(--line)}.roletoggle button.on{background:var(--slate);color:#fff}.roletoggle button.on.funder{background:var(--amber)}.btn{border:none;border-radius:6px;padding:10px 16px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit}.btn.primary{background:var(--slate);color:#fff;width:100%;padding:12px;font-size:14px}.btn.primary:disabled{background:#9aa6b2;cursor:not-allowed}.btn.ghost{background:transparent;color:var(--muted);padding:2px 6px;font-size:12px}.btn.ghost:hover{color:var(--red)}.btn.link{background:none;border:none;color:var(--slate);cursor:pointer;font-size:12px;padding:0;text-decoration:underline}.warn{color:var(--amber);font-size:11.5px;margin-top:6px}.err{color:var(--red);background:var(--red-bg);border:1px solid #f0c4bf;border-radius:6px;padding:10px;font-size:12.5px;margin-top:10px}.verdict{border-radius:8px;padding:14px;margin-bottom:14px;border:1px solid}.verdict.PURSUE{background:var(--green-bg);border-color:#b7dfc6}.verdict.PURSUE_WITH_CAVEATS{background:var(--amber-bg);border-color:#eecfa0}.verdict.DO_NOT_PURSUE{background:var(--red-bg);border-color:#f0c4bf}.verdict .badge{display:inline-block;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:3px 10px;border-radius:5px;color:#fff}.badge.PURSUE{background:var(--green)}.badge.PURSUE_WITH_CAVEATS{background:var(--amber)}.badge.DO_NOT_PURSUE{background:var(--red)}.verdict .headline{font-size:15px;font-weight:600;margin:10px 0 4px;color:var(--ink)}.verdict .scoreline{font-size:12.5px;color:var(--slate-soft);display:flex;gap:14px;align-items:center;flex-wrap:wrap}.scorebar{height:8px;background:#e6e9ec;border-radius:4px;overflow:hidden;flex:1 1;min-width:120px}.scorebar>span{display:block;height:100%}.rel{font-size:12.5px;padding:8px 10px;border-radius:6px;margin-bottom:14px}.rel.yes{background:var(--green-bg);border:1px solid #b7dfc6}.rel.no{background:#f1f3f5;border:1px solid var(--line)}section.block{margin-bottom:14px}section.block h3{font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--slate);margin:0 0 6px}ul.clean{margin:0;padding-left:18px}ul.clean li{margin-bottom:4px;font-size:13px}table.scorecard{width:100%;border-collapse:collapse;font-size:12px}table.scorecard th{text-align:left;background:var(--slate);color:#fff;padding:6px 8px;font-weight:600;font-size:11px}table.scorecard td{padding:6px 8px;border-bottom:1px solid var(--line);vertical-align:top}table.scorecard .dim{font-weight:600;white-space:nowrap}.rating{font-size:10px;text-transform:uppercase;letter-spacing:.03em;padding:1px 6px;border-radius:4px;font-weight:700;white-space:nowrap}.rating.strong{background:var(--green-bg);color:var(--green)}.rating.moderate{background:var(--amber-bg);color:var(--amber)}.rating.weak{background:var(--red-bg);color:var(--red)}.rating.unknown{background:#eef1f4;color:var(--muted)}.ev{color:var(--muted);font-size:11px}.nextaction{background:#f3f6f9;border-left:3px solid var(--slate);padding:10px 12px;border-radius:0 6px 6px 0;font-size:13px}.usage{color:var(--muted);font-size:11px;margin-top:12px;border-top:1px solid var(--line);padding-top:8px}.placeholder{color:var(--muted);text-align:center;padding:40px 20px;font-size:13px}.history{margin-top:12px;border-top:1px solid var(--line);padding-top:10px}.history .h-item{padding:8px;border:1px solid var(--line);border-radius:6px;margin-bottom:6px;font-size:12px;cursor:pointer;background:#fff}.history .h-item:hover{border-color:var(--slate)}.history .h-top{display:flex;justify-content:space-between;gap:8px}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px}.dot.PURSUE{background:var(--green)}.dot.PURSUE_WITH_CAVEATS{background:var(--amber)}.dot.DO_NOT_PURSUE{background:var(--red)}.spinner{display:inline-block;width:14px;height:14px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;vertical-align:-2px;margin-right:8px}@keyframes spin{to{transform:rotate(1turn)}}.btn.outline{background:#fff;color:var(--slate);border:1px solid var(--slate);padding:7px 12px}.btn.outline:hover{background:#f3f6f9}.print-actions{display:flex;justify-content:flex-end;margin-bottom:10px}.printable{-webkit-print-color-adjust:exact;print-color-adjust:exact}.print-only{display:none}.print-header h1{font-size:20px;color:var(--slate);margin:0 0 4px}.print-header .ph-meta{color:var(--muted);font-size:12px;margin-bottom:8px}.print-footer{margin-top:16px;padding-top:8px;border-top:1px solid var(--line);color:var(--muted);font-size:11px}@keyframes fadeInUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.anim-in{animation:fadeInUp .45s cubic-bezier(.2,.7,.2,1) both}@keyframes msgIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@keyframes shimmerMove{0%{transform:translateX(-120%)}to{transform:translateX(360%)}}@keyframes pulseDot{0%,to{opacity:.35;transform:scale(.8)}50%{opacity:1;transform:scale(1.1)}}.analyzing{margin-top:14px}.analyzing-status{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--slate);min-height:20px}.pulse-dot{width:9px;height:9px;border-radius:50%;background:var(--slate);display:inline-block;animation:pulseDot 1s infinite;flex-shrink:0}.status-msg{animation:msgIn .4s ease}.shimmerbar{position:relative;height:4px;background:#eef1f4;border-radius:3px;overflow:hidden;margin:10px 0 14px}.shimmerbar>span{position:absolute;left:0;top:0;height:100%;width:30%;border-radius:3px;background:linear-gradient(90deg,transparent,var(--slate),transparent);animation:shimmerMove 1.3s linear infinite}.game-wrap{border:1px solid var(--line);border-radius:8px;padding:10px;background:linear-gradient(180deg,#fbfcfd,#f3f6f9)}.game-head{display:flex;justify-content:space-between;align-items:baseline;font-size:12px;font-weight:700;color:var(--slate);margin-bottom:8px}.game-head .hint{font-weight:500;color:var(--muted);font-size:11px}.game-canvas-holder{position:relative}.game-canvas{display:block;width:100%;border-radius:6px;background:#fff;cursor:none;touch-action:none}.game-canvas,.game-score{border:1px solid var(--line)}.game-score{position:absolute;top:6px;right:8px;z-index:1;font-size:12px;color:var(--slate);background:rgba(255,255,255,.85);border-radius:5px;padding:1px 7px}.game-foot,.game-score .best{color:var(--muted)}.game-foot{font-size:11px;margin-top:8px;text-align:center}.btn{transition:background .15s ease,transform .06s ease,box-shadow .15s ease}.btn:active{transform:translateY(1px)}.filelist li{transition:border-color .12s ease,background .12s ease}@media (prefers-reduced-motion:reduce){.anim-in,.pulse-dot,.shimmerbar>span,.status-msg{animation:none!important}}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.login-card{width:100%;max-width:360px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:24px;box-shadow:0 8px 30px rgba(35,48,63,.07)}.login-card h1{font-size:18px;color:var(--slate);margin:0 0 4px}.login-card p{color:var(--muted);font-size:13px;margin:0 0 16px}.login-card input{margin-bottom:12px}.login-card .btn.primary{width:100%}.login-card .err{margin-top:12px}.masthead-right{display:flex;align-items:center;gap:10px}.secret-dot{border:none;background:transparent;color:var(--line);font-size:24px;line-height:1;cursor:pointer;padding:0 6px;opacity:.5;transition:opacity .15s ease,color .15s ease}.secret-dot:hover{opacity:1;color:var(--slate)}.devbar{border:1px solid var(--line);background:#f3f6f9;border-radius:8px;padding:10px 12px;margin-bottom:14px}.devbar-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.devbar-row label{margin:0}.devbar-row select{width:auto;min-width:240px}.devbar-note{color:var(--muted);font-size:11px}.devbar-spacer{flex:1 1}.btn.ghost.logout{color:var(--red);border:1px solid var(--line);background:#fff;padding:5px 10px}.devbar-hint{color:var(--muted);font-size:11px;margin-top:8px}select{border:1px solid var(--line);border-radius:6px;padding:7px 10px;font-size:13px;font-family:inherit;background:var(--field);color:var(--ink);cursor:pointer}select:focus{outline:none;border-color:var(--slate);box-shadow:0 0 0 3px rgba(35,48,63,.08)}@media print{@page{margin:16mm}body{background:#fff}body *{visibility:hidden}.printable,.printable *{visibility:visible}.printable{position:absolute;left:0;top:0;width:100%;margin:0;padding:0}.no-print{display:none!important}.print-only{display:block}.print-header{border-bottom:2px solid var(--slate);padding-bottom:8px;margin-bottom:12px}.rel,.verdict,section.block,table.scorecard tr{page-break-inside:avoid;break-inside:avoid}}