/* FALCONS.AI Verify Anything — theme tokens copied from the product legal pages (SPEC 3). Dark only. */ @font-face { font-family: "IBM Plex Mono"; src: url("/static/fonts/IBMPlexMono-Regular.woff2") format("woff2"); font-weight: 400; font-display: swap; } @font-face { font-family: "IBM Plex Mono"; src: url("/static/fonts/IBMPlexMono-Medium.woff2") format("woff2"); font-weight: 500; font-display: swap; } :root { --bg: #070B14; --ink: #E8F0FF; --dim: #8FA3C0; --cyan: #33E0FF; --mint: #7CF7C4; --line: #22304A; --red: #FF5D6C; --red-dim: #5A1F2A; --amber: #FFC46B; --panel: #0A1120; --mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; } * { box-sizing: border-box; } html, body { margin: 0; background: var(--bg); color: var(--ink); font-family: var(--mono); font-size: 15px; line-height: 1.5; } a { color: var(--cyan); text-decoration: none; } a:hover, a:focus-visible { text-decoration: underline; } :focus-visible { outline: 2px solid var(--cyan); outline-offset: 2px; } .visually-hidden { position: absolute; width: 1px; height: 1px; clip: rect(0 0 0 0); overflow: hidden; white-space: nowrap; } /* ---------- masthead ---------- */ .masthead { padding: 28px 20px 18px; border-bottom: 1px solid var(--line); } .masthead h1 { margin: 0; font-size: 20px; font-weight: 500; letter-spacing: 0.08em; } .masthead .sub { margin: 6px 0 0; color: var(--dim); font-size: 13px; } .masthead .brand { color: var(--cyan); } /* ---------- workbench ---------- */ .workbench { display: grid; grid-template-columns: minmax(260px, 340px) 1fr; gap: 24px; padding: 24px 20px; max-width: 1080px; margin: 0 auto; } .panel-label { margin: 0 0 12px; font-size: 12px; font-weight: 500; letter-spacing: 0.14em; color: var(--dim); } /* sample cards */ .sample-card { border: 1px solid var(--line); background: var(--panel); border-radius: 8px; padding: 14px; margin-bottom: 12px; cursor: grab; user-select: none; -webkit-user-select: none; transition: border-color 120ms ease; min-height: 44px; } .sample-card:hover, .sample-card:focus-visible { border-color: var(--cyan); } .sample-card:active { cursor: grabbing; } .sample-card.dragging { opacity: 0.5; } .sample-card .card-title { display: flex; align-items: center; gap: 8px; font-weight: 500; letter-spacing: 0.06em; } .sample-card .glyph { color: var(--cyan); } .sample-card .blurb { margin: 6px 0 0; color: var(--dim); font-size: 13px; } .samples .hint { color: var(--dim); font-size: 12px; margin: 4px 0 0; } /* the grid */ .grid { position: relative; border: 1px dashed var(--line); border-radius: 10px; background: linear-gradient(var(--line) 1px, transparent 1px) 0 0 / 32px 32px, linear-gradient(90deg, var(--line) 1px, transparent 1px) 0 0 / 32px 32px, var(--panel); min-height: 220px; display: flex; align-items: center; justify-content: center; text-align: center; padding: 20px; transition: border-color 120ms ease, box-shadow 120ms ease; } .grid.dragover { border-color: var(--mint); box-shadow: 0 0 0 1px var(--mint), inset 0 0 24px rgba(124, 247, 196, 0.25); } .grid-idle p { color: var(--dim); margin: 8px 0 0; } .grid-glyph { font-size: 28px; color: var(--cyan); } .grid-busy p { margin: 8px 0 12px; } .scanline { width: 180px; height: 3px; margin: 0 auto; background: linear-gradient(90deg, transparent, var(--cyan), transparent); animation: scan 1.1s linear infinite; border-radius: 2px; } @keyframes scan { 0% { transform: translateX(-40px); opacity: 0.4; } 50% { transform: translateX(40px); opacity: 1; } 100% { transform: translateX(-40px); opacity: 0.4; } } @media (prefers-reduced-motion: reduce) { .scanline { animation: none; } } .cancel { background: none; border: 1px solid var(--line); color: var(--dim); font-family: var(--mono); font-size: 13px; border-radius: 6px; padding: 10px 16px; min-height: 44px; cursor: pointer; } .cancel:hover { border-color: var(--red); color: var(--red); } /* alt inputs */ .alt-inputs { margin-top: 14px; display: flex; flex-wrap: wrap; gap: 12px; align-items: center; } .filebtn span { display: inline-flex; align-items: center; border: 1px solid var(--line); background: var(--panel); color: var(--ink); border-radius: 6px; padding: 10px 16px; min-height: 44px; cursor: pointer; } .filebtn span:hover { border-color: var(--cyan); } .repoform { display: flex; gap: 8px; flex: 1; min-width: 260px; } .repoform input { flex: 1; min-width: 0; background: var(--panel); border: 1px solid var(--line); color: var(--ink); font-family: var(--mono); font-size: 14px; border-radius: 6px; padding: 10px 12px; min-height: 44px; } .repoform input::placeholder { color: var(--dim); opacity: 0.8; } .repoform input:focus { border-color: var(--cyan); outline: none; } .repoform button { background: var(--cyan); color: #04222B; border: none; font-family: var(--mono); font-weight: 500; letter-spacing: 0.08em; border-radius: 6px; padding: 10px 18px; min-height: 44px; cursor: pointer; } .repoform button:hover { filter: brightness(1.1); } button:disabled, input:disabled, .filebtn.disabled span, .sample-card.disabled { opacity: 0.45; pointer-events: none; } /* ---------- verdicts ---------- */ .verdicts { max-width: 1080px; margin: 0 auto; padding: 0 20px 24px; } .verdict-card { border: 1px solid var(--line); border-left-width: 4px; border-radius: 8px; background: var(--panel); padding: 16px; margin-bottom: 12px; } .verdict-card .vhead { font-size: 16px; font-weight: 500; letter-spacing: 0.06em; margin: 0 0 8px; } .verdict-card .vsub { color: var(--dim); font-size: 12px; margin: 0 0 8px; overflow-wrap: anywhere; } .verdict-card .vline { margin: 4px 0; font-size: 14px; overflow-wrap: anywhere; } .verdict-card .vdetail { font-size: 14px; margin: 8px 0 0; overflow-wrap: anywhere; } .v-verified { border-left-color: var(--mint); } .v-verified .vhead { color: var(--mint); } .v-tampered { border-left-color: var(--red); background: linear-gradient(0deg, rgba(90,31,42,.25), rgba(90,31,42,.25)), var(--panel); } .v-tampered .vhead { color: var(--red); } .v-amber { border-left-color: var(--amber); } .v-amber .vhead { color: var(--amber); } .v-error { border-left-color: var(--dim); } .v-error .vhead { color: var(--dim); } .keyid { display: inline-flex; align-items: center; gap: 8px; background: #060A12; border: 1px solid var(--line); border-radius: 6px; padding: 4px 8px; font-size: 13px; } .keyid button { background: none; border: none; color: var(--cyan); font-family: var(--mono); font-size: 12px; cursor: pointer; padding: 4px; } .kcaption { color: var(--dim); font-size: 12px; margin-left: 8px; } details.receipt { margin-top: 10px; } details.receipt summary { color: var(--cyan); font-size: 13px; cursor: pointer; user-select: none; min-height: 32px; display: flex; align-items: center; } details.receipt pre { background: #060A12; border: 1px solid var(--line); border-radius: 6px; padding: 12px; font-size: 12px; color: var(--dim); overflow-x: auto; white-space: pre-wrap; overflow-wrap: anywhere; margin: 8px 0 0; } /* ---------- footer ---------- */ .footer { border-top: 1px solid var(--line); padding: 20px; color: var(--dim); font-size: 13px; text-align: center; } .footlinks { margin-bottom: 8px; } .strapline { color: var(--dim); margin: 0; } /* ---------- mobile (SPEC 3: iPhone SE, no sideways scroll, 44px taps) ---- */ @media (max-width: 720px) { .workbench { grid-template-columns: 1fr; gap: 16px; padding: 16px 12px; } .verdicts { padding: 0 12px 16px; } .masthead { padding: 20px 12px 14px; } .masthead h1 { font-size: 17px; } .grid { min-height: 160px; } .repoform { min-width: 0; width: 100%; } } /* ---- masthead branding ---- */ .masthead{display:flex;align-items:center;gap:18px;text-align:left} .brandmark{flex:0 0 auto;display:block;line-height:0} .brandmark img{width:72px;height:72px;display:block; filter:drop-shadow(0 0 14px rgba(217,32,44,.35))} .masthead-text{min-width:0} .byline{margin:.15rem 0 .1rem;font-size:1.05rem;letter-spacing:.14em;color:var(--dim)} .byline .brand-name{color:#E0202C;font-weight:700;letter-spacing:.18em} @media (max-width:720px){ .masthead{flex-direction:column;text-align:center;gap:10px} .brandmark img{width:56px;height:56px} } .buildtag{margin:.2rem 0 0;font-size:.68rem;letter-spacing:.08em;color:var(--line);text-align:center}