/* EvalLoop AI — AI Safety page. Visual system aligned with General Response and Compare. */
:root {
  --bg:#101211; --panel:#171b18; --panel2:#1d221f; --ink:#f1f1ef; --muted:#a4aaa6;
  --dim:#727974; --line:rgba(241,241,239,.14); --green:#3ecf8e; --green2:#85e7ba;
  --darkgreen:#13261c; --sans:Inter,system-ui,sans-serif; --mono:"DM Mono",monospace;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{min-height:100vh;background:var(--bg);color:var(--ink);font-family:var(--sans);font-weight:400;line-height:1.6;overflow-x:hidden}
button,textarea,input{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}
.background-grid{position:fixed;inset:0;pointer-events:none;z-index:-3;background-image:linear-gradient(rgba(241,241,239,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(241,241,239,.025) 1px,transparent 1px);background-size:48px 48px;mask-image:linear-gradient(to bottom,black,transparent 90%)}
.background-glow{position:fixed;width:700px;height:700px;top:-420px;left:50%;transform:translateX(-50%);pointer-events:none;z-index:-2;background:radial-gradient(circle,rgba(62,207,142,.13),transparent 65%)}
.app-header{position:sticky;top:0;z-index:20;border-bottom:1px solid var(--line);background:rgba(16,18,17,.88);backdrop-filter:blur(16px)}
.header-inner{width:min(1200px,calc(100% - 40px));min-height:72px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:24px}
.brand{display:inline-flex;align-items:center;font-family:var(--mono);font-size:17px;letter-spacing:-.02em}.brand>span{color:var(--green);animation:cursorBlink 1s steps(1,end) infinite}
@keyframes cursorBlink{0%,45%{opacity:1}46%,100%{opacity:0}}
.header-status{display:flex;align-items:center;gap:9px;color:var(--muted);font:11px var(--mono);letter-spacing:.08em;text-transform:uppercase}
.status-dot,.model-dot{width:7px;height:7px;border-radius:50%;background:var(--green)}.status-dot{box-shadow:0 0 0 4px rgba(62,207,142,.08),0 0 14px rgba(62,207,142,.4)}
.back-link{color:var(--muted);font-size:13px;transition:color .2s,transform .2s}.back-link:hover{color:var(--green2);transform:translateX(-3px)}
.workspace{width:min(1200px,calc(100% - 40px));margin:auto;padding:80px 0 100px}
.workspace-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:40px;margin-bottom:48px}
.eyebrow{margin-bottom:14px;color:var(--green);font:11px var(--mono);letter-spacing:.14em}
.workspace-heading h1{max-width:700px;font-size:clamp(38px,5vw,64px);line-height:1.02;font-weight:300;letter-spacing:-.045em}.workspace-heading h1 span{color:var(--green2)}
.workspace-heading p{max-width:650px;margin-top:20px;color:var(--muted);font-size:15px;line-height:1.8}
.model-badge{flex-shrink:0;display:flex;align-items:center;gap:9px;padding:10px 13px;border:1px solid var(--line);background:rgba(23,27,24,.7);color:var(--muted);font:11px var(--mono)}
.evaluation-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px;align-items:start}
.input-panel,.results-panel{min-width:0;border:1px solid var(--line);background:linear-gradient(145deg,rgba(29,34,31,.88),rgba(23,27,24,.94));box-shadow:0 30px 80px rgba(0,0,0,.18);padding:28px}
.results-panel{min-height:680px}
.panel-header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding-bottom:24px;margin-bottom:28px;border-bottom:1px solid var(--line)}
.panel-label{margin-bottom:7px;color:var(--green);font:10px var(--mono);letter-spacing:.12em}.panel-header h2{font-size:18px;line-height:1.2;font-weight:400;letter-spacing:-.02em}
.panel-state{padding:5px 8px;border:1px solid rgba(62,207,142,.25);background:rgba(19,38,28,.7);color:var(--green2);font:9px var(--mono);letter-spacing:.08em}.panel-state.waiting{color:var(--dim);border-color:var(--line);background:transparent}
.preset-section{margin-bottom:24px}.preset-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.preset-heading strong{font-size:12px;font-weight:400}.preset-heading span{color:var(--dim);font:10px var(--mono)}
.preset-buttons{display:flex;flex-wrap:wrap;gap:8px}.preset-button,.feedback-button{border:1px solid var(--line);background:rgba(16,18,17,.55);color:var(--muted);padding:8px 10px;font-size:11px;transition:border-color .2s,color .2s,background .2s}
.preset-button:hover,.preset-button:focus-visible,.feedback-button:hover,.feedback-button:focus-visible,.preset-button[aria-pressed=true],.feedback-button[aria-pressed=true]{border-color:rgba(62,207,142,.55);color:var(--green2);outline:none}.preset-button[aria-pressed=true],.feedback-button[aria-pressed=true]{background:rgba(19,38,28,.7)}
.field{margin-bottom:22px}.field-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px}.field-top label{color:var(--ink);font-size:13px;font-weight:400}.field-top>span{color:var(--dim);font:9px var(--mono);letter-spacing:.08em;text-transform:uppercase}.required{color:var(--green2)}
textarea{display:block;width:100%;min-height:145px;resize:vertical;padding:15px 16px;border:1px solid var(--line);border-radius:0;outline:none;background:rgba(16,18,17,.75);color:var(--ink);font-family:var(--sans);font-size:13px;font-weight:300;line-height:1.7;transition:border-color .2s,box-shadow .2s,background .2s}
textarea::placeholder{color:#626963}textarea:focus{border-color:rgba(62,207,142,.45);background:rgba(16,18,17,.95);box-shadow:0 0 0 3px rgba(62,207,142,.05)}
.response-box{min-height:190px}.reference-box{min-height:100px}
.field-meta{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-top:6px}.field-hint,.character-counter{color:var(--dim);font:10px var(--mono)}.field-hint{font-family:var(--sans);font-size:10px}.character-counter{flex-shrink:0;text-align:right}.character-counter.limit-near{color:#e9bd70}.character-counter.limit-reached{color:#ff8e8e}
.evaluate-button{width:100%;min-height:52px;display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:8px;padding:0 17px;border:1px solid rgba(62,207,142,.55);background:var(--darkgreen);color:var(--green2);font-size:13px;font-weight:400;transition:background .2s,border-color .2s,box-shadow .2s,transform .2s}
.evaluate-button:hover{background:#173522;border-color:var(--green);box-shadow:0 0 28px rgba(62,207,142,.09);transform:translateY(-1px)}.evaluate-button:active{transform:translateY(0)}.evaluate-button:disabled{cursor:wait;opacity:.65;transform:none}.button-arrow{font-size:18px;transition:transform .2s}.evaluate-button:hover .button-arrow{transform:translateX(4px)}
.form-message{min-height:22px;margin-top:12px;color:var(--dim);font:10px var(--mono);line-height:1.5}.form-message.error-message{color:#ff9b9b}
.hidden{display:none!important}.empty-state,.loading-state{min-height:540px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px}
.empty-orb{position:relative;width:105px;height:105px;display:flex;align-items:center;justify-content:center;margin-bottom:28px;border:1px solid rgba(62,207,142,.18);border-radius:50%;background:radial-gradient(circle,rgba(62,207,142,.08),transparent 65%);color:var(--green2);font:13px var(--mono)}
.empty-orb:before{content:"";position:absolute;inset:18px;border:1px solid rgba(62,207,142,.22);border-radius:50%}.orb-ring{position:absolute;border:1px solid rgba(62,207,142,.1);border-radius:50%}.ring-one{inset:-15px;animation:orbit 8s linear infinite}.ring-two{inset:-30px;border-style:dashed;animation:orbitReverse 12s linear infinite}
@keyframes orbit{from{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes orbitReverse{from{transform:rotate(360deg)}to{transform:rotate(0)}}
.empty-state h3,.loading-state h3{font-size:18px;font-weight:400;margin-bottom:9px}.empty-state p,.loading-state p{max-width:330px;color:var(--muted);font-size:13px;line-height:1.7}
.loading-spinner{width:38px;height:38px;margin-bottom:22px;border:2px solid rgba(62,207,142,.15);border-top-color:var(--green);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.results{animation:resultAppear .5s ease both}@keyframes resultAppear{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.safety-overview{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px;margin-bottom:18px;border:1px solid rgba(62,207,142,.18);background:linear-gradient(135deg,rgba(19,38,28,.75),rgba(23,27,24,.6))}
.result-label{margin-bottom:7px;color:var(--dim);font:9px var(--mono);letter-spacing:.1em}.score-line{display:flex;align-items:baseline;gap:5px;color:var(--green2);font:400 44px/1 var(--mono)}.score-line small{color:var(--muted);font-size:13px}
.overview-meta{text-align:right;display:flex;flex-direction:column;align-items:flex-end;gap:5px}.verdict-label{margin-top:9px}
.risk-pill,.verdict-pill{display:inline-block;padding:5px 8px;border:1px solid var(--line);color:var(--muted);font:10px var(--mono);text-transform:uppercase}
.risk-pill.low,.risk-pill.none,.verdict-pill.safe{color:var(--green2);border-color:rgba(62,207,142,.3);background:rgba(19,38,28,.35)}
.risk-pill.medium,.verdict-pill.review{color:#e9bd70;border-color:rgba(233,189,112,.35)}
.risk-pill.high,.risk-pill.critical,.verdict-pill.unsafe{color:#ff9b9b;border-color:rgba(255,115,115,.4);background:rgba(90,25,25,.18)}
.safety-disclaimer{margin-bottom:18px;padding:12px 14px;border:1px solid rgba(233,189,112,.35);background:rgba(90,65,25,.14);color:#e9bd70;font-size:11px;line-height:1.7}
.result-section{padding:20px 0;border-top:1px solid var(--line)}.result-section-title{margin-bottom:12px;color:var(--green);font:10px var(--mono);letter-spacing:.1em;text-transform:uppercase}
.risks-list{display:grid;gap:10px}.risk-card{padding:14px;border:1px solid var(--line);background:rgba(16,18,17,.45);min-width:0}.risk-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:8px}.risk-category{color:var(--ink);font-size:12px;font-weight:400}.severity-pill{flex-shrink:0;padding:3px 6px;border:1px solid var(--line);font:9px var(--mono);text-transform:uppercase;color:var(--muted)}
.severity-pill.low{color:var(--green2);border-color:rgba(62,207,142,.25)}.severity-pill.medium{color:#e9bd70;border-color:rgba(233,189,112,.3)}.severity-pill.high,.severity-pill.critical{color:#ff9b9b;border-color:rgba(255,115,115,.35)}
.risk-quote,.risk-detail{margin-top:8px;color:var(--muted);font-size:11px;line-height:1.7;overflow-wrap:anywhere}.risk-quote{padding:9px 10px;border-left:2px solid rgba(255,115,115,.45);background:rgba(16,18,17,.65);color:var(--ink)}.risk-detail strong{display:inline;color:var(--green2);font-weight:400}
.no-risks{padding:12px 0;color:var(--muted);font-size:12px;line-height:1.7}
.result-copy,.recommendation p{color:var(--muted);font-size:12px;line-height:1.75}.recommendation{padding:18px;border:1px solid rgba(62,207,142,.13);background:rgba(19,38,28,.38)}
.feedback-panel{padding:18px 0 0;margin-top:20px;border-top:1px solid var(--line)}.feedback-panel>p{color:var(--muted);font-size:12px;margin-bottom:10px}.feedback-actions{display:flex;flex-wrap:wrap;gap:8px}.feedback-button{display:inline-flex;align-items:center;gap:7px}.feedback-thanks{min-height:18px;margin-top:8px;color:var(--green2);font:10px var(--mono)}
@media(max-width:1000px){.evaluation-layout{grid-template-columns:1fr}.results-panel{min-height:auto}.empty-state,.loading-state{min-height:420px}}
@media(max-width:700px){.workspace{padding-top:52px}.workspace-heading{align-items:flex-start;flex-direction:column;gap:20px}}
@media(max-width:600px){.header-inner{width:min(100% - 28px,1200px);min-height:64px;gap:12px}.header-status{display:none}.workspace{width:min(100% - 28px,1200px);padding-top:42px}.workspace-heading h1{font-size:40px}.input-panel,.results-panel{padding:20px}.back-link{font-size:11px}.safety-overview{align-items:flex-start;flex-direction:column}.overview-meta{align-items:flex-start;text-align:left}.field-meta{gap:8px}.preset-buttons{gap:6px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
