/* BRILLIANCY — THE VERDICT and THE RUN END (mocks/verdict.html A–D). Paper documents, sitting
   straight (Chris 9/14), under the band. Desk: the 1140-wide sheet; phone: the sheet fills the
   glass beneath the band and scrolls, the buttons pinned at the foot. */
body.docOn #console,body.docOn #meta,body.docOn #info,body.docOn #frame,body.docOn #eq,body.docOn #drills,
body.docOn #acts,body.docOn #sheet,body.docOn #np,body.docOn #tabs,body.docOn #rail{visibility:hidden}
#verdict,#report{z-index:65}
.vsheet{background:linear-gradient(180deg,#f6e8c2,var(--paper) 30%,#ecd9a8);color:var(--paper-ink);box-shadow:0 22px 60px rgba(0,0,0,.7);position:relative}
.vin{position:relative;border:1px solid rgba(107,77,34,.45);height:100%}
.vin::before{content:'';position:absolute;inset:3px;border:1px solid rgba(107,77,34,.25);pointer-events:none}
.vey{font-family:var(--sc);font-weight:600;letter-spacing:.03em;color:var(--paper-ink-2);}
.vt{font-family:var(--serif);font-weight:700;line-height:1;color:var(--paper-ink)}
.v.lose .vt{color:#8a2a1c}
.c{text-align:center}
.vh{font-family:var(--sc);font-weight:600;letter-spacing:.03em;color:var(--paper-ink);border-bottom:1px solid rgba(107,77,34,.45)}
.vln{display:flex;justify-content:space-between;align-items:baseline;gap:14px;border-bottom:1px solid rgba(107,77,34,.2)}
.vln span{color:var(--paper-ink)} .vln b{font-weight:700;text-align:right} .vln b.g{color:var(--paper-ink-2)} .vln b.neg{color:#8a2a1c}
.vtot{display:flex;justify-content:space-between;align-items:baseline;border-top:2px solid var(--paper-ink)}
.vtot span{font-family:var(--sc);font-weight:600;letter-spacing:.03em;}
.vtot b{font-weight:700;color:var(--gold-lo)}
.vp{line-height:1.45} .vp b{font-weight:700}
.vboards{display:grid;grid-template-columns:repeat(4,1fr)}
.vboards:has(.vbd:nth-child(5)){grid-template-columns:repeat(5,1fr)}
.vbd{text-align:center}
.vbd .th{position:relative;border:3px solid var(--panel-hi);box-shadow:0 3px 8px rgba(0,0,0,.3);margin:0 auto;line-height:0}
.vbd .th svg{width:100%;height:auto;display:block}
.vbd.wreck .th{filter:grayscale(1) contrast(.8)}
.vbd .mk{position:absolute;top:-10px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-style:normal;font-family:var(--serif);font-weight:700;line-height:1;border:1.5px solid rgba(255,245,220,.9)}
.vbd .mk.mt{right:-10px;background:var(--paper-ink);color:var(--paper)}
.vbd .mk.br{right:22px;background:var(--night);color:var(--brill);border-color:var(--brill)}
.vbd .mk.br:last-child{right:-10px}
.vbd .nm{font-family:var(--sc);font-weight:600;letter-spacing:.03em;color:var(--paper-ink-2);}
.vbd .sc{font-weight:700}
.vbd.wreck .nm,.vbd.wreck .sc{color:#8a2a1c}
.vbar{position:relative;border-radius:7px;background:rgba(107,77,34,.15);border:1px solid rgba(107,77,34,.45)}
.vbar i{position:absolute;left:0;top:0;bottom:0;border-radius:7px;background:linear-gradient(90deg,var(--gold-lo),var(--gold),var(--gold-hi))}
.vbar.lose i{background:linear-gradient(90deg,#5d1f16,#8a2a1c)}
.vbar b{position:absolute;top:-6px;bottom:-6px;width:3px;margin-left:-1.5px;background:var(--paper-ink)}
.vbarn{display:flex;justify-content:space-between} .vbarn b{font-weight:700}
.hearts{display:flex;gap:10px} .hearts svg{fill:none;stroke:#8a2a1c;stroke-width:1.6} .hearts svg.on{fill:var(--carmine);stroke:var(--wax)}
.vseal{position:absolute;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;z-index:2;
  animation:vsealIn 700ms var(--e-land) 250ms both}
.vseal::before{content:'';position:absolute;inset:9px;border-radius:50%;border:1px dashed rgba(255,235,210,.5)}
.vseal .a,.vseal .c{font-family:var(--sc);font-weight:600;letter-spacing:.03em;}
.vseal .b{font-family:var(--serif);font-weight:700;line-height:1.05}
.vseal.brass{background:radial-gradient(circle at 40% 35%,#f6d98a,var(--gold) 58%,#8a6a26);color:var(--paper-ink);box-shadow:inset 0 2px 8px rgba(255,245,210,.5),0 8px 20px rgba(0,0,0,.35)}
.vseal.brass::before{border-color:rgba(43,29,16,.35)}
.vseal.wax{background:radial-gradient(circle at 40% 35%,var(--wax-hi),var(--wax) 58%,#4e1c14);color:#f3dcc6;box-shadow:inset 0 2px 8px rgba(255,190,170,.35),0 8px 20px rgba(0,0,0,.4)}
@keyframes vsealIn{0%{transform:scale(1.9) rotate(-8deg);opacity:0}60%{opacity:1}100%{transform:scale(1) rotate(0);opacity:1}}
.vroad{display:flex;justify-content:space-between;position:relative}
.vroad::before{content:'';position:absolute;left:8%;right:8%;border-top:2px dashed rgba(107,77,34,.5)}
.vroad .st{flex:1;display:flex;flex-direction:column;align-items:center;position:relative;text-align:center}
.vroad .md{border-radius:50%;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 40% 35%,var(--brass-hi),var(--brass) 60%,var(--brass-lo));border:2px solid var(--brass-lo);color:var(--paper-ink);font-weight:700}
.vroad .st.boss .md{background:radial-gradient(circle at 40% 35%,var(--wax-hi),var(--wax) 60%,#4e1c14);border-color:#4e1c14;color:#f3dcc6}
.vroad .lb{font-family:var(--sc);font-weight:600;letter-spacing:.03em;color:var(--paper-ink-2);}
.vbig{font-family:var(--serif);font-weight:700;text-align:center;color:var(--gold-lo);line-height:1}
.vbigl{font-family:var(--sc);font-weight:600;letter-spacing:.03em;text-align:center;color:var(--paper-ink-2);}
.vstats{display:grid;grid-template-columns:repeat(4,1fr)}
.vstat{border:1px solid rgba(107,77,34,.4);border-radius:3px;text-align:center;background:rgba(255,250,235,.35)}
.vstat .k{font-family:var(--sc);font-weight:600;letter-spacing:.03em;color:var(--paper-ink-2);}
.vstat .v{font-weight:700}
.vcards{display:flex;justify-content:center;flex-wrap:wrap}
.vcard{position:relative;border-radius:7px;background:var(--paper);border:6px solid var(--rar-c);box-shadow:0 5px 12px rgba(0,0,0,.35);overflow:hidden}
.vcard.u{border-color:var(--rar-u)} .vcard.r{border-color:var(--rar-r)} .vcard.l{border-color:var(--rar-l);box-shadow:0 0 14px rgba(201,163,232,.7)}
.vcard .sb{height:6px} .vcard .em{position:absolute;left:0;right:0;top:14px;bottom:4px;display:flex;align-items:center;justify-content:center}
.vcard .em svg{width:100%;height:auto}
.vbtns{display:flex;justify-content:center;flex-wrap:wrap}
.vb{font-family:var(--sc);font-weight:600;letter-spacing:.03em;color:var(--brass-hi);border:1.5px solid var(--brass);border-radius:5px;background:rgb(var(--night-rgb) / .85);white-space:nowrap}
.vb.pri{background:linear-gradient(180deg,var(--brass-hi),var(--brass));color:var(--paper-ink);border-color:var(--brass-lo)}
.vb.warn{color:#e0604c;border-color:var(--carmine)}
.vb.q{color:var(--dim);border-color:var(--rule)}
#report{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgb(var(--night-rgb) / .7)}
#report .rsheet{background:var(--paper);color:var(--paper-ink);box-shadow:0 22px 60px rgba(0,0,0,.7);display:flex;flex-direction:column}
#report textarea{flex:1;resize:none;font-family:ui-monospace,Consolas,monospace;color:var(--paper-ink);background:rgba(255,250,235,.6);border:1px solid rgba(107,77,34,.45);user-select:text}

/* ---------------- DESK ---------------- */
body.desk #verdict{left:0;top:0;width:1600px;height:1000px;pointer-events:none}
body.desk #verdict>*{pointer-events:auto}
body.desk .vsheet{position:absolute;left:230px;top:158px;width:1140px;height:724px;padding:12px}
body.desk .vin{padding:34px 36px}
body.desk .vey{font-size:17px} body.desk .vt{font-size:64px;margin:8px 0 26px}
body.desk .vcols{display:grid;grid-template-columns:600px 400px;gap:44px}
body.desk .vh{font-size:19px;padding-bottom:10px;margin-bottom:10px}
body.desk .vln{font-size:20px;padding:8px 0} body.desk .vtot{font-size:32px;padding-top:14px;margin-top:6px} body.desk .vtot span{font-size:22px}
body.desk .vp{font-size:24px;margin-top:10px} body.desk .hearts{margin-top:16px} body.desk .hearts svg{width:40px;height:36px}
body.desk .vboards{gap:22px;margin-top:4px} body.desk .vbd .th{width:132px} body.desk .vbd .nm{font-size:15px;margin-top:10px} body.desk .vbd .sc{font-size:24px;margin-top:2px}
body.desk .vbd .mk{width:28px;height:28px;font-size:14px}
body.desk .vbar{height:16px;margin-top:22px} body.desk .vbarn{font-size:20px;margin:8px 0 22px}
body.desk .vseal{right:36px;top:22px;width:168px;height:168px} body.desk .vseal .a,body.desk .vseal .c{font-size:15px} body.desk .vseal .b{font-size:34px;margin:6px 0}
body.desk .vroad{position:absolute;left:36px;right:36px;bottom:24px} body.desk .vroad::before{top:22px}
body.desk .vroad .md{width:46px;height:46px;font-size:20px} body.desk .vroad .lb{font-size:15px;margin-top:10px;max-width:190px}
body.desk .v.boss .vcols{max-height:330px}
body.desk .vbtns{position:absolute;left:0;right:0;top:900px;gap:18px}
body.desk .vb{font-size:24px;padding:14px 32px}
body.desk .v.runend .vt{font-size:64px;margin:10px 0 18px} body.desk .vbig{font-size:92px} body.desk .vbigl{font-size:17px;margin:8px 0 40px}
body.desk .vstats{gap:18px;margin-bottom:34px} body.desk .vstat{padding:18px 10px} body.desk .vstat .k{font-size:15px} body.desk .vstat .v{font-size:40px;margin-top:6px}
body.desk .v.runend .vh{margin-bottom:20px} body.desk .vcards{gap:16px} body.desk .vcard{width:96px;height:128px}
body.desk .v.runend .vp{font-size:18px;margin-top:18px}
body.desk #report .rsheet{width:900px;height:720px;padding:30px 34px;gap:16px} body.desk #report textarea{font-size:14px;padding:14px}
body.desk #report .vh{font-size:19px;padding-bottom:10px}

/* ---------------- PORT ---------------- */
body.port #verdict{position:absolute;left:0;right:0;top:64px;bottom:0;display:flex;flex-direction:column;padding:10px 8px 10px}
body.port .vsheet{flex:1;min-height:0;overflow-y:auto;padding:6px;scrollbar-width:thin}
body.port .vin{padding:18px 16px 20px;height:auto;min-height:100%}
body.port .vey{font-size:11px;padding-right:96px} body.port .vt{font-size:34px;margin:6px 0 22px;padding-right:90px}
body.port .v.runend .vey,body.port .v.runend .vt{padding-right:0}
body.port .vcols{display:flex;flex-direction:column;gap:18px}
body.port .vh{font-size:13px;padding-bottom:8px;margin-bottom:8px}
body.port .vln{font-size:15px;padding:7px 0} body.port .vtot{font-size:24px;padding-top:10px;margin-top:4px} body.port .vtot span{font-size:16px}
body.port .vp{font-size:17px;margin-top:6px} body.port .hearts{margin-top:10px} body.port .hearts svg{width:30px;height:27px}
body.port .vboards{gap:10px} body.port .vbd .th{width:100%;border-width:2px} body.port .vbd .nm{font-size:10.5px;margin-top:6px;letter-spacing:.04em} body.port .vbd .sc{font-size:16px}
body.port .vbd .mk{width:20px;height:20px;font-size:10px;top:-7px} body.port .vbd .mk.mt{right:-7px} body.port .vbd .mk.br{right:14px} body.port .vbd .mk.br:last-child{right:-7px}
body.port .vbar{height:11px;margin-top:18px} body.port .vbarn{font-size:14px;margin:8px 0 20px;gap:10px}
body.port .vseal{right:14px;top:12px;width:96px;height:96px} body.port .vseal::before{inset:6px} body.port .vseal .a,body.port .vseal .c{font-size:9.5px;letter-spacing:.1em} body.port .vseal .b{font-size:21px;margin:3px 0}
body.port .v.runend .vseal{position:relative;right:auto;top:auto;margin:0 auto 12px}
body.port .vroad{margin-top:22px} body.port .vroad::before{top:15px} body.port .vroad .md{width:32px;height:32px;font-size:14px} body.port .vroad .lb{font-size:9.5px;margin-top:6px;letter-spacing:.04em}
body.port .vbtns{flex:none;flex-direction:column;gap:8px;margin-top:10px}
body.port .vb{font-size:16px;padding:13px 16px;width:100%}
body.port .vbig{font-size:52px} body.port .vbigl{font-size:12px;margin:6px 0 20px}
body.port .vstats{grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:20px} body.port .vstat{padding:10px 6px} body.port .vstat .k{font-size:10.5px} body.port .vstat .v{font-size:26px;margin-top:4px}
body.port .vcards{gap:8px} body.port .vcard{width:58px;height:78px;border-width:4px} body.port .vcard .em{top:9px}
body.port .v.runend .vp{font-size:14px;margin-top:14px}
body.port #report .rsheet{width:410px;height:80%;padding:18px;gap:12px} body.port #report textarea{font-size:11px;padding:10px}
body.port #report .vbtns{flex-direction:row} body.port #report .vb{width:auto;flex:1}
body.port #report{position:absolute}

/* the sheet fits its page (Chris 10/2: "Brilliancies · mates" ran off the bottom): tighter rhythm, and the content
   scrolls inside the sheet if a long Set still overflows */
body.desk .vin{height:100%;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(107,77,34,.45) transparent}
body.desk .vt{margin:6px 0 14px} body.desk .vln{padding:5px 0} body.desk .vbar{margin-top:16px} body.desk .vbarn{margin:6px 0 12px}

/* ---------------- the playtest bot's faults (10/5): verdict ---------------- */
/* A TIMED SET'S TWO LINES (fault 21). With a time bonus the line under the bar reads "Boards … · Time bonus ×1.43 ·
   Banked …" and "Target … · crossed on board two". The two halves cannot share one line, so each wrapped and the
   sheet scrolled by 23 pixels, cutting the last row of The Play. They are two lines by design now (.vbarn.two), and
   the sheet of a timed Set is set a little tighter so that nothing scrolls. */
.vbarn.two{display:block} .vbarn.two span{display:block}
body.desk .v.timed .vbd .th{width:118px}
body.desk .v.timed .vbar{margin-top:12px} body.desk .v.timed .vbarn{margin:5px 0 10px;line-height:1.3}
body.desk .v.timed .vt{margin:4px 0 10px}
/* FIVE BOARDS (The Sore Loser; fault 18): the fifth thumbnail ran into the right-hand column and covered the Lives
   text and the hearts. Five Boards share the left column's width. */
.v.five .vboards{grid-template-columns:repeat(5,minmax(0,1fr))}
body.desk .v.five .vboards{gap:12px} body.desk .v.five .vbd .th{width:104px} body.desk .v.five .vbd .nm{font-size:13px} body.desk .v.five .vbd .sc{font-size:20px}
body.port .v.five .vboards{gap:6px} body.port .v.five .vbd .nm{font-size:9px;letter-spacing:0} body.port .v.five .vbd .sc{font-size:13px}
/* a Board's score never leaves its own column, however long (fault 20) */
.vbd{min-width:0} .vbd .sc{display:inline-block;white-space:nowrap}
.v.runend .vbig{white-space:nowrap}
/* more than nine Tutors at the Run's end (Immortal Tutors keep their seats) still make one row */
body.desk .vcards.many{gap:10px} body.desk .vcards.many .vcard{width:74px;height:99px;border-width:5px}
/* the heading over the Gold ends short of the seal on the desk (ui/verdict.js sealClear); where the columns are stacked, the seal is nowhere near it and the rule runs its whole width */
body.port .vr .vh{margin-right:0!important}

/* THE DRAWN SEAL (Chris 10/6: the flat gold disc "looks a little bit cheap"): the art is ui/art/_screen_art.js */
.vseal.drawn{background:none;box-shadow:none}
.vseal.drawn::before{display:none}
.vseal .sart{position:absolute;left:-7%;top:-7%;width:114%;height:114%;z-index:-1;filter:drop-shadow(0 9px 12px rgba(0,0,0,.34))}
.vseal.drawn.brass .a,.vseal.drawn.brass .c{color:#4a3510} .vseal.drawn.brass .b{color:#2b1d10;text-shadow:0 1px 0 rgba(255,246,210,.55)}
.vseal.drawn.wax .b{text-shadow:0 1px 2px rgba(40,10,6,.6)}
body.desk .vseal.drawn .b{font-size:32px;margin:4px 0 6px} body.desk .vseal.drawn .a,body.desk .vseal.drawn .c{font-size:14px}

/* THE END OF A RUN (Chris 10/6: the sheet "looks a little simplistic"; the Tutors carry their names) */
.vorn{display:flex;align-items:center;justify-content:center;gap:12px} .vorn i{display:block;height:1px;background:linear-gradient(90deg,transparent,rgba(107,77,34,.6));flex:0 0 150px} .vorn i:last-child{transform:scaleX(-1)}
.vscore{display:flex;align-items:center;justify-content:center;gap:26px}
.vsprig{display:block;flex:none} .vsprig.r{transform:scaleX(-1)}
.v.runend .vstat{position:relative;border:1px solid rgba(107,77,34,.5);border-radius:5px;background:linear-gradient(180deg,rgba(255,252,240,.7),rgba(255,246,222,.28));box-shadow:inset 0 0 0 3px rgba(255,250,235,.55),inset 0 0 0 4px rgba(107,77,34,.22),0 2px 5px rgba(60,40,10,.12)}
.v.runend .vstat .vic{display:block;margin:0 auto 4px}
.vtut{display:flex;flex-direction:column;align-items:center}
.vtn{font-family:var(--body);font-weight:600;color:var(--paper-ink);text-align:center;line-height:1.12}
body.desk .v.runend .vt{margin:8px 0 10px} body.desk .vorn{margin:0 0 6px}
body.desk .vsprig{width:44px;height:92px} body.desk .v.runend .vbig{font-size:84px} body.desk .v.runend .vbigl{margin:4px 0 0}
body.desk .v.runend .vscore{margin-bottom:20px}
body.desk .v.runend .vstats{margin-bottom:22px} body.desk .v.runend .vstat{padding:10px 10px 12px} body.desk .v.runend .vstat .v{font-size:34px;margin-top:2px}
body.desk .v.runend .vh{margin-bottom:14px}
body.desk .vtut{width:112px} body.desk .vtn{font-size:15px;margin-top:8px;max-width:112px} body.desk .vcards{gap:10px}
body.desk .vcards.many .vtut{width:88px} body.desk .vcards.many .vtn{font-size:12.5px;max-width:88px}
body.port .vorn i{flex-basis:70px} body.port .vorn{margin-bottom:6px} body.port .vsprig{width:26px;height:54px} body.port .vscore{gap:12px;margin-bottom:14px} body.port .v.runend .vbigl{margin:4px 0 0}
body.port .v.runend .vstat .vic{width:22px;height:22px} body.port .vtut{width:70px} body.port .vtn{font-size:10.5px;margin-top:5px;max-width:70px}

/* Brilliancies and Mates: each number beside its own word, a rule between the two (Chris 10/6) */
.vln.vpair{justify-content:flex-start;align-items:center;gap:16px} .vln.vpair b{margin-left:8px} .vln.vpair i{display:block;width:1px;align-self:stretch;margin:3px 0;background:rgba(107,77,34,.5)}
/* the four pictures over a Run's figures are drawn larger */
body.desk .v.runend .vstat .vic{width:44px;height:44px;margin-bottom:2px} body.port .v.runend .vstat .vic{width:28px;height:28px}

/* ---------------- the 11/9 sweep's scrollbars (Chris: "fix the scrollbars") ---------------- */
/* the timed Final Score Sheet scrolled by 14px and the lost Run's sheet by 8px: the sheet's margins give back 20px */
body.desk .vin{padding:24px 36px}
/* the Run Report scrolled by 15px at Set 19: the box is 80px taller (a longer Run still scrolls, as a document does) */
body.desk #report .rsheet{height:800px}
