:root{
  --bg:#e8e4dd;
  --paper:#f4f0e9;
  --paper-2:#ddd8cf;
  --ink:#151619;
  --ink-2:#27282c;
  --black:#0f1013;
  --black-soft:#17191d;
  --steel:#69727b;
  --line:#aaa39a;
  --line-dark:#3b3d43;
  --muted:#6f6d69;
  --red:#8c2732;
  --red-deep:#5d171f;
  --red-soft:#b06870;
  --blue:#425867;
  --shadow:0 22px 60px rgba(18,18,20,.14);
}
*{box-sizing:border-box}
html{background:var(--bg);scroll-behavior:smooth}
body{margin:0;min-width:320px;color:var(--ink);font-family:"Times New Roman","Yu Mincho","Hiragino Mincho ProN",serif;letter-spacing:.025em;background:
  linear-gradient(90deg,rgba(20,20,22,.025) 1px,transparent 1px),
  radial-gradient(circle at 18% 0%,rgba(255,255,255,.9),transparent 32%),
  linear-gradient(135deg,#f0ece5 0,#e3ded6 55%,#d6d1c8 100%);
  background-size:42px 42px,auto,auto;min-height:100vh}
a{color:inherit;text-decoration:none}button{font:inherit}.ab-shell{width:min(1180px,calc(100% - 36px));margin:auto}

/* top navigation */
.ab-topbar{min-height:72px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;color:#eee9e1;background:var(--black);padding:0 max(18px,calc((100vw - 1180px)/2));width:100%;max-width:none;position:relative}
.ab-topbar::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:linear-gradient(90deg,transparent 0 8%,var(--red) 28%,var(--red) 72%,transparent 92%)}
.ab-back{font-size:.68rem;letter-spacing:.19em;color:#c7c1b8}.ab-back:hover{color:#fff}.ab-topbar .center-mark{font-size:.61rem;letter-spacing:.30em;color:#8f9299}.ab-topbar .right-mark{text-align:right;font-size:.61rem;letter-spacing:.22em;color:#b78489}.ab-rule{display:none}
.ab-kicker{margin:0;color:var(--red);font-size:.62rem;letter-spacing:.31em;text-transform:uppercase}
.ab-button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 22px;border:1px solid #56585e;background:var(--black);color:#f1ece5;font-size:.65rem;letter-spacing:.17em;clip-path:polygon(0 0,calc(100% - 12px) 0,100% 12px,100% 100%,12px 100%,0 calc(100% - 12px));transition:.2s ease}.ab-button:hover{background:#202228;border-color:var(--red);transform:translateY(-2px)}.ab-button small{margin-left:10px;color:#b7b2ab;letter-spacing:.1em}

/* HOME / suspense game interface */
.command-hero{padding:0 0 34px}.command-frame{position:relative;overflow:hidden;min-height:620px;background:linear-gradient(115deg,rgba(247,243,236,.98) 0 58%,rgba(19,20,23,.98) 58% 100%);border:0;box-shadow:var(--shadow)}
.command-frame::before{content:"ABILITY / INCIDENT / PUBLIC SECURITY";position:absolute;left:34px;top:26px;color:rgba(20,20,22,.16);font-size:.55rem;letter-spacing:.33em;z-index:2}.command-frame::after{content:"";position:absolute;left:55%;top:-18%;width:5px;height:140%;background:var(--red);transform:rotate(17deg);box-shadow:22px 0 0 rgba(140,39,50,.18);z-index:1}
.command-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(330px,.8fr);min-height:620px;position:relative;z-index:2}.command-copy{padding:92px 68px 70px;position:relative}.command-copy::before{content:"CASE FILE / 00";display:inline-block;margin-bottom:24px;padding:7px 10px;background:var(--black);color:#eee8e0;font-size:.55rem;letter-spacing:.22em}.command-copy h1{margin:0 0 8px;font-weight:400;font-size:clamp(3.4rem,8vw,7.1rem);letter-spacing:.02em;line-height:.95;color:#16171a}.command-copy .jp{margin:12px 0 34px;color:var(--red);font-size:1rem;letter-spacing:.38em}.command-lead{max-width:650px;margin:0;line-height:2.15;color:#4f4c49;font-size:.91rem}.command-meta{display:flex;flex-wrap:wrap;gap:7px;margin-top:34px}.command-meta span{border-top:1px solid #87827b;border-bottom:1px solid #87827b;padding:8px 11px;color:#5e5a55;font-size:.55rem;letter-spacing:.19em}.command-visual{position:relative;display:grid;place-items:center;padding:66px 34px;background:
  linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),
  linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px),var(--black);background-size:28px 28px,28px 28px,auto}
.command-visual::before{content:"PRIMARY OFFICER / VISUAL SLOT";position:absolute;left:22px;top:22px;color:#777982;font-size:.55rem;letter-spacing:.25em}.command-visual::after{content:"01";position:absolute;right:20px;bottom:10px;color:rgba(255,255,255,.06);font-size:9rem;line-height:1;font-style:italic}.badge-card{width:min(330px,100%);padding:14px;background:#e9e5de;border:1px solid #5b5c62;box-shadow:0 20px 55px rgba(0,0,0,.34);transform:rotate(-1.3deg);position:relative;z-index:1}.badge-card::before{content:"";position:absolute;left:-12px;top:22px;width:4px;height:74%;background:var(--red)}.badge-top{display:flex;justify-content:space-between;border-bottom:1px solid #8e8a84;padding:8px 2px 11px;font-size:.52rem;letter-spacing:.2em}.badge-photo{height:235px;margin:15px 0;background:linear-gradient(150deg,#555a61 0,#25272c 58%,#0e0f12 100%);position:relative;overflow:hidden}.badge-photo::before{content:"PORTRAIT";position:absolute;inset:auto 0 18px;text-align:center;color:rgba(255,255,255,.22);font-size:1.2rem;letter-spacing:.55em}.badge-photo::after{content:"";position:absolute;left:50%;top:-20%;width:1px;height:150%;background:rgba(176,104,112,.55);transform:rotate(19deg)}.badge-lines{display:grid;gap:7px}.badge-lines i{height:1px;background:#9f9a92}.badge-code{margin-top:15px;display:flex;justify-content:space-between;font-size:.55rem;letter-spacing:.16em;color:#55545a}.scan-corner{display:none}

.ab-section{padding:68px 0}.ab-heading{margin-bottom:28px;position:relative;padding-left:20px}.ab-heading::before{content:"";position:absolute;left:0;top:3px;bottom:3px;width:3px;background:var(--red)}.ab-heading h2{margin:8px 0 10px;font-size:clamp(2rem,4.8vw,3.4rem);font-weight:400;letter-spacing:.05em}.ab-heading p{max-width:780px;margin:0;color:#615e5a;line-height:1.95}
.ab-info{display:grid;grid-template-columns:1fr 1fr;gap:0;border-top:1px solid #6e6962;border-bottom:1px solid #6e6962}.ab-copy{padding:32px;background:rgba(246,242,235,.74);border:0;border-right:1px solid #aaa39a;position:relative}.ab-copy:last-child{border-right:0}.ab-copy h3{margin:0 0 15px;font-size:1.35rem;font-weight:400;letter-spacing:.08em}.ab-copy p{margin:0;color:#5e5b56;line-height:2;font-size:.88rem}

/* three routes */
.faction-board{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.faction-card{position:relative;min-height:330px;padding:28px 27px;display:flex;flex-direction:column;overflow:hidden;border:1px solid #8d8881;background:linear-gradient(150deg,#f5f0e9,#ded8cf);transition:.22s ease}.faction-card::before{content:attr(data-side);position:absolute;right:-2px;top:18px;font-size:5.8rem;line-height:1;color:rgba(20,20,22,.055);font-style:italic}.faction-card::after{content:"";position:absolute;left:-20%;bottom:33px;width:140%;height:1px;background:rgba(140,39,50,.33);transform:rotate(-7deg)}.faction-card:hover{transform:translateY(-5px);box-shadow:0 18px 38px rgba(25,24,25,.13);border-color:#5e5b58}.faction-card .num{font-size:.58rem;letter-spacing:.23em;color:#77716c}.faction-card h3{margin:76px 0 12px;font-weight:400;font-size:1.7rem;letter-spacing:.06em}.faction-card p{margin:0 0 28px;color:#5e5b57;line-height:1.85;font-size:.85rem}.faction-card .go{margin-top:auto;font-size:.63rem;letter-spacing:.18em;color:var(--red);position:relative;z-index:2}.faction-card.police{border-top:5px solid #34383f}.faction-card.neutral{background:linear-gradient(150deg,#232428,#111216);color:#eee8e0;border-color:#2f3034}.faction-card.neutral .num,.faction-card.neutral p{color:#9d9ca0}.faction-card.neutral .go{color:#d1a4aa}.faction-card.criminal{border-top:5px solid var(--red);background:linear-gradient(155deg,#f2ece6,#d9d0c9)}

.character-gateway{display:grid;grid-template-columns:1fr auto;gap:15px;align-items:end;min-height:205px;padding:34px;border:1px solid #76726d;background:linear-gradient(110deg,#f4efe8 0 72%,#1a1b1f 72%);position:relative;overflow:hidden;transition:.2s ease}.character-gateway::before{content:"CHARACTER";position:absolute;right:16px;top:14px;color:rgba(255,255,255,.08);font-size:3.1rem;letter-spacing:.08em}.character-gateway:hover{transform:translateY(-3px);box-shadow:0 17px 35px rgba(25,24,25,.12)}.gateway-index{grid-column:1/-1;font-size:.58rem;letter-spacing:.23em;color:#6b6761}.character-gateway strong{font-size:clamp(1.8rem,4vw,2.9rem);font-weight:400;letter-spacing:.08em}.gateway-arrow{font-size:.62rem;letter-spacing:.17em;color:#d1a4aa;position:relative;z-index:2}.ab-next{display:flex;justify-content:flex-end;padding:16px 0 68px}.ab-footer{padding:30px 0 58px;text-align:center;color:#77736e;font-size:.58rem;letter-spacing:.23em}

/* faction / dossier pages */
.file-page{background:linear-gradient(135deg,#ede8e0,#d9d3ca)}.file-cover{margin:46px 0 30px;border:1px solid #78746f;background:#efeae3;box-shadow:var(--shadow);position:relative;overflow:hidden}.file-cover::before{content:"";position:absolute;right:-70px;top:-80px;width:250px;height:250px;border:1px solid rgba(140,39,50,.14);transform:rotate(45deg)}.file-head{display:grid;grid-template-columns:210px 1fr;border-bottom:1px solid #88837c}.file-stamp{display:grid;place-items:center;min-height:190px;background:var(--black);color:#eee8e0;border-right:1px solid #88837c;text-align:center}.file-stamp strong{display:block;font-size:2rem;font-weight:400;letter-spacing:.14em}.file-stamp span{font-size:.52rem;letter-spacing:.24em;color:#9b9ca1}.file-title{padding:40px 42px;position:relative}.file-title::after{content:"";position:absolute;right:24px;top:28px;width:42px;height:3px;background:var(--red)}.file-title h1{margin:8px 0 7px;font-size:clamp(2.5rem,5vw,4.2rem);font-weight:400;letter-spacing:.06em}.file-title p{margin:0;color:#5d5a56;line-height:1.9}.file-body{padding:38px 42px 46px}.file-section-title{margin:0 0 18px;color:var(--red);font-size:.60rem;letter-spacing:.27em}.police-book{display:grid;grid-template-columns:1fr 1fr;gap:12px}.id-page{min-height:230px;padding:26px;border:1px solid #8f8a83;background:#f7f2eb;position:relative;overflow:hidden}.id-page::before{content:"";position:absolute;left:0;top:0;width:5px;height:100%;background:#31343a}.id-page::after{content:"PUBLIC SECURITY";position:absolute;right:12px;bottom:11px;color:rgba(20,20,22,.12);font-size:.55rem;letter-spacing:.22em}.id-page h3{margin:10px 0 16px;font-weight:400;font-size:1.3rem}.id-page p{margin:0;color:#5d5b57;line-height:1.9;font-size:.87rem}.inline-detail{display:inline-block;margin-top:14px;border-bottom:1px solid currentColor;padding-bottom:3px;color:var(--red);font-size:.61rem;letter-spacing:.17em}

.neutral-page{background:linear-gradient(135deg,#e3dfd8,#cfcac2)}.neutral-page .file-stamp{background:#17181b}.neutral-archive::after{content:"NO FLAG / THIRD PARTY / OBSERVER";position:absolute;right:-125px;top:280px;transform:rotate(90deg);font-size:.52rem;letter-spacing:.34em;color:rgba(20,20,22,.25)}.neutral-sigil{position:absolute;right:44px;top:220px;width:178px;height:178px;border:1px solid rgba(20,20,22,.2);border-radius:50%;display:grid;place-items:center;opacity:.35}.neutral-sigil::before,.neutral-sigil::after{content:"";position:absolute;inset:18px;border:1px solid rgba(20,20,22,.33);transform:rotate(45deg)}.neutral-sigil::after{inset:43px;transform:rotate(0)}.neutral-sigil span,.neutral-sigil i{position:absolute;font-size:.47rem;letter-spacing:.22em;font-style:normal}.neutral-sigil span{top:25px}.neutral-sigil i{bottom:23px}.neutral-sigil b{font-size:2.4rem;font-weight:400}.neutral-page .id-page::before{background:#15161a}.neutral-page .id-page::after{content:"NO AFFILIATION"}

/* criminal access */
.criminal-page{background:linear-gradient(135deg,#e5dfd8,#d5cec6)}.warning-screen{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:26px;background:rgba(10,10,12,.97)}.warning-screen.hidden{display:none}.warning-box{width:min(620px,100%);padding:48px 34px;border:1px solid #6b2028;background:linear-gradient(135deg,#17181c,#0d0e11);color:#eee8e0;text-align:center;box-shadow:0 28px 80px rgba(0,0,0,.48);position:relative}.warning-box::before,.warning-box::after{content:"";position:absolute;left:24px;right:24px;height:1px;background:var(--red)}.warning-box::before{top:16px}.warning-box::after{bottom:16px}.warning-icon{font-size:3.2rem;color:#c54c59}.warning-box h1{font-weight:400;letter-spacing:.18em}.warning-box p{color:#aaa5a1;line-height:1.9}.warning-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:28px}.danger-button{border-color:var(--red);color:#f3e8e9;background:#42161c}.criminal-head{margin-top:46px;padding:36px 40px;border:1px solid #876d69;background:linear-gradient(110deg,#efe8e1 0 80%,#8c2732 80%)}.criminal-head h1{margin:8px 0;font-weight:400;letter-spacing:.1em}.criminal-head p{max-width:760px;color:#625957;line-height:1.8}.criminal-table{width:100%;border-collapse:collapse;margin:20px 0 38px;background:#eee9e3;border:1px solid #9a8d87}.criminal-table th,.criminal-table td{padding:17px 13px;border-bottom:1px solid #b6aaa3;text-align:left}.criminal-table th{background:#211b1d;color:#d6c9c8;font-size:.57rem;font-weight:400;letter-spacing:.18em}.criminal-table td{font-size:.84rem;color:#554d49}.tag{display:inline-block;padding:4px 8px;border:1px solid #8b4d54;color:#782f38;font-size:.56rem;letter-spacing:.11em}

/* character database */
.character-db-head{border-color:#76716a}.db-side-block{margin:18px 0 34px;border:1px solid #8f8981;background:rgba(244,239,232,.82)}.db-side-title{display:flex;justify-content:space-between;align-items:center;padding:14px 20px;border-bottom:1px solid #99928b;background:#1a1b1f;color:#eee8e0}.db-side-title span{font-size:.55rem;letter-spacing:.22em;color:#9c9ca1}.db-side-title h2{margin:0;font-size:1rem;font-weight:400;letter-spacing:.13em}.police-block{border-top:4px solid #30333a}.neutral-block{border-top:4px solid #15161a}.criminal-block{border-top:4px solid var(--red)}.unregistered-block{border-top:4px solid #77716a}.person-record{display:grid;grid-template-columns:1fr auto;gap:26px;align-items:center;padding:28px;position:relative}.person-record::before{content:"";position:absolute;left:0;top:22px;bottom:22px;width:2px;background:rgba(140,39,50,.35)}.person-record h3{margin:8px 0 10px;font-size:1.45rem;font-weight:400}.person-record p{max-width:840px;margin:0;color:#5d5a56;line-height:1.95;font-size:.87rem}.person-record>a{font-size:.61rem;letter-spacing:.16em;color:var(--red);border-bottom:1px solid currentColor;padding-bottom:3px}.neutral-record{background:linear-gradient(110deg,rgba(20,20,22,.06),transparent 42%)}

/* individual detail sheets */
.detail-sheet{margin:46px 0 28px;border:1px solid #807a73;background:#f0ebe4;box-shadow:var(--shadow)}.detail-title{padding:42px;border-bottom:1px solid #989189;background:linear-gradient(120deg,#f7f1ea,#ddd7cf)}.detail-title h1{font-size:clamp(2.4rem,6vw,4.7rem);font-weight:400;letter-spacing:.055em;margin:9px 0}.detail-title>p:last-child{color:#625e59}.detail-section{padding:32px 42px;border-bottom:1px solid #b6aea6}.detail-section:last-child{border-bottom:0}.detail-section h2{margin:0 0 14px;color:var(--red);font-size:.62rem;font-weight:400;letter-spacing:.24em}.detail-section p{max-width:920px;margin:0;color:#55524e;line-height:2;font-size:.9rem}.criminal-detail .detail-sheet{border-top:5px solid var(--red)}.police-detail .detail-sheet{border-top:5px solid #31343a}.neutral-detail .detail-sheet{border-top:5px solid #16171a}

@media(max-width:880px){
  .command-grid{grid-template-columns:1fr}.command-frame{background:#f1ece5}.command-frame::after{left:auto;right:24%;top:54%;height:75%;opacity:.75}.command-visual{min-height:440px}.faction-board{grid-template-columns:1fr}.ab-info,.police-book{grid-template-columns:1fr}.ab-copy{border-right:0;border-bottom:1px solid #aaa39a}.ab-copy:last-child{border-bottom:0}.file-head{grid-template-columns:1fr}.file-stamp{min-height:118px;border-right:0;border-bottom:1px solid #88837c}.neutral-sigil{right:-38px;top:240px;transform:scale(.78)}
}
@media(max-width:640px){
  .ab-shell{width:min(100% - 22px,1180px)}.ab-topbar{grid-template-columns:1fr auto;padding:0 14px}.ab-topbar .center-mark{display:none}.command-copy{padding:72px 24px 46px}.command-copy h1{font-size:clamp(3rem,18vw,5rem)}.command-visual{padding:54px 24px;min-height:390px}.badge-photo{height:205px}.character-gateway{grid-template-columns:1fr;background:linear-gradient(150deg,#f4efe8 0 82%,#1a1b1f 82%)}.gateway-arrow{margin-top:10px}.file-title,.file-body,.criminal-head,.detail-title,.detail-section{padding-left:23px;padding-right:23px}.person-record{grid-template-columns:1fr}.criminal-table th:nth-child(3),.criminal-table td:nth-child(3){display:none}
}
