:root{--ink:#091120;--navy:#14213b;--paper:#f3f5f9;--card:#fff;--text:#182136;--muted:#6d778b;--line:#e1e6ef;--gold:#edb950;--blue:#7298ed;--danger:#b92f46;--success:#177d5a;--shadow:0 22px 60px rgba(9,17,32,.13)}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font:15px/1.55 Manrope,system-ui,sans-serif;color:var(--text);background:var(--paper)}button,input,select{font:inherit}button{cursor:pointer}.hidden{display:none!important}.auth{min-height:100vh;display:grid;grid-template-columns:1.12fr .88fr}.auth-art{background:radial-gradient(circle at 20% 10%,#263e70,#0a1120 58%);color:white;padding:56px;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden}.brand{display:flex;align-items:center;gap:11px;font-size:20px}.mark{width:40px;height:40px;border-radius:13px;background:linear-gradient(145deg,#f7d68d,var(--gold));display:grid;place-items:center;color:#251b08;font-weight:800}.eyebrow{text-transform:uppercase;letter-spacing:.15em;font-size:11px;font-weight:800;color:#91a1bf}.auth-art h1{font-size:clamp(40px,5vw,66px);line-height:1.02;letter-spacing:-.05em;margin:15px 0}.auth-art p{font-size:17px;color:#b9c4d8;max-width:620px}.shelf{height:190px;display:flex;align-items:end;gap:15px;margin-top:35px}.shelf i{width:105px;border-radius:8px 12px 12px 8px;box-shadow:0 20px 40px #0008}.shelf i:nth-child(1){height:150px;background:linear-gradient(145deg,#789aef,#294b96)}.shelf i:nth-child(2){height:185px;background:linear-gradient(145deg,#e9b650,#996410)}.shelf i:nth-child(3){height:165px;background:linear-gradient(145deg,#a182db,#493070)}.shelf i:nth-child(4){height:135px;background:linear-gradient(145deg,#59c9b3,#21665d)}.auth-panel{background:white;display:grid;place-items:center;padding:40px}.auth-card{width:min(430px,100%)}.auth-card h2{font-size:34px;letter-spacing:-.04em;margin:0}.auth-card>p{color:var(--muted);margin:5px 0 26px}.mobile-brand{display:none}.auth-card label,.upload-panel form label,dialog label{display:block;font-weight:700;font-size:13px;margin:16px 0}input,select{width:100%;padding:13px 14px;border:1px solid #d7dde8;border-radius:12px;background:#fbfcfe;margin-top:7px;outline:none}input:focus,select:focus{border-color:var(--blue);box-shadow:0 0 0 4px #7298ed22}.primary,.secondary,.button{border:0;border-radius:11px;padding:11px 15px;font-weight:800}.primary{background:var(--ink);color:white}.primary:hover{background:#192842}.primary:disabled{opacity:.5;cursor:not-allowed}.secondary{border:1px solid var(--line);background:white}.auth-card>.primary{width:100%;margin-top:7px;padding:14px}.link{border:0;background:none;color:#4c6295;font-weight:700;margin-top:14px}.message{font-size:13px;margin-top:12px;min-height:20px;color:var(--danger)}.message.success{color:var(--success)}.workspace{min-height:100vh;display:grid;grid-template-columns:250px minmax(0,1fr)}aside{height:100vh;position:sticky;top:0;padding:25px 17px;background:linear-gradient(#091120,#111d35 60%,#091120);color:white;display:flex;flex-direction:column}aside .brand{padding:0 8px 28px}nav{display:grid;gap:5px}nav button{border:0;background:transparent;color:#aeb9ce;padding:12px 14px;border-radius:10px;text-align:left;font-weight:700}nav button:hover,nav button.active{background:#ffffff12;color:white}.identity{margin-top:auto;border-top:1px solid #ffffff16;padding:18px 4px 0;display:flex;align-items:center;gap:10px}.identity>span{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(145deg,#7798ef,#a884d6);font-weight:800}.identity div{min-width:0;flex:1}.identity b,.identity small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.identity b{font-size:12px}.identity small{font-size:10px;color:#8f9ab1}.identity button,.icon{border:0;background:transparent;color:inherit;width:38px;height:38px;display:grid;place-items:center;border-radius:9px}.identity button:hover,.icon:hover{background:#ffffff14}svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}.content{padding:0 34px 40px;min-width:0}.content>header{height:88px;display:flex;justify-content:space-between;align-items:center}.content>header h2{margin:2px 0 0;font-size:28px;letter-spacing:-.035em}.hero{border-radius:24px;min-height:250px;padding:36px;background:linear-gradient(125deg,#111b32,#203661);color:white;display:grid;grid-template-columns:1fr 330px;box-shadow:var(--shadow);overflow:hidden}.hero h1{font-size:39px;line-height:1.05;letter-spacing:-.045em;margin:12px 0}.hero p{color:#bdc9dd}.hero-art{position:relative}.hero-art i{position:absolute;width:118px;height:165px;border-radius:9px;box-shadow:0 20px 40px #0008;top:30px}.hero-art i:nth-child(1){left:20px;transform:rotate(-13deg);background:linear-gradient(145deg,#7497ed,#3658a2)}.hero-art i:nth-child(2){left:85px;z-index:2;background:linear-gradient(145deg,#f0bf61,#ac7622)}.hero-art i:nth-child(3){left:150px;transform:rotate(13deg);background:linear-gradient(145deg,#9475d4,#50347e)}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin:18px 0}.metrics article{background:white;border:1px solid var(--line);border-radius:16px;padding:18px}.metrics small{display:block;font-size:11px;color:var(--muted);font-weight:800;letter-spacing:.1em}.metrics b{display:block;font-size:27px;margin-top:4px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(225px,1fr));gap:17px}.publication{background:white;border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:0 3px 12px #0911200b}.publication.archived{opacity:.65}.cover{aspect-ratio:3/4;background:linear-gradient(150deg,#213459,#0c1526);position:relative;display:grid;place-items:center;overflow:hidden}.cover canvas{width:100%;height:100%;object-fit:cover}.cover .fallback{font-size:64px;font-weight:800;color:#ffffff20}.cover button{position:absolute;inset:0;border:0;background:transparent}.cover button:focus{outline:3px solid var(--gold);outline-offset:-3px}.publication-body{padding:14px}.publication h3{margin:0;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.publication p{margin:4px 0 12px;color:var(--muted);font-size:12px}.actions{display:flex;gap:7px;flex-wrap:wrap}.actions button,.actions a{border:1px solid var(--line);background:white;border-radius:8px;padding:7px 9px;color:#35415a;text-decoration:none;font-size:11px;font-weight:700}.actions .danger{color:var(--danger)}.empty{grid-column:1/-1;text-align:center;background:white;border:1px dashed #cbd3e0;border-radius:18px;padding:55px 20px;color:var(--muted)}.panel{background:white;border:1px solid var(--line);border-radius:18px}.upload-panel{display:grid;grid-template-columns:1.3fr .7fr;gap:24px;padding:24px}.drop{min-height:420px;border:2px dashed #bbc6d8;border-radius:17px;display:grid;place-items:center;align-content:center;text-align:center;padding:30px}.drop.drag{border-color:var(--blue);background:#f5f8ff}.drop svg{width:55px;height:55px;color:#5373b6}.drop h3{font-size:22px;margin:15px 0 4px}.drop p{max-width:450px;color:var(--muted)}.drop input{position:absolute;left:-9999px}.section-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:14px 16px;border-bottom:1px solid var(--line);font-size:13px}th{font-size:11px;letter-spacing:.08em;color:var(--muted)}td small{display:block;color:var(--muted)}.pill{display:inline-block;padding:5px 8px;border-radius:999px;background:#eef3ff;color:#405d9c;font-size:10px;font-weight:800}.pill.off{background:#fff0f2;color:var(--danger)}td .icon{display:inline-grid;color:#3b4964}.danger{color:var(--danger)!important}dialog{border:0;border-radius:18px;padding:0;box-shadow:var(--shadow);width:min(570px,94vw)}dialog::backdrop{background:#050a14b8;backdrop-filter:blur(5px)}dialog form{padding:20px 23px}dialog form header,dialog form footer{display:flex;align-items:center;justify-content:space-between}dialog form header h3{margin:0}dialog form footer{justify-content:flex-end;gap:8px;margin-top:20px}#viewer{width:min(1400px,98vw);height:min(920px,97vh);background:#0c1422;color:white}.viewer{height:100%;display:grid;grid-template-rows:60px 1fr 58px}.viewer>header,.viewer>footer{background:#080f1b;display:flex;align-items:center;padding:0 14px}.viewer>header{justify-content:space-between}.viewer>header div{display:flex}.viewer>footer{justify-content:center;gap:14px}.viewer-stage{display:grid;place-items:center;overflow:hidden;position:relative;background:radial-gradient(circle at 50% 25%,#34425b,#131d2c 55%,#090f19)}#book{filter:drop-shadow(0 25px 40px #000b)}#viewerLoading{position:absolute;inset:0;display:grid;place-items:center;background:#111b2c}#toast{position:fixed;right:22px;bottom:22px;background:#111b2d;color:white;padding:12px 16px;border-radius:11px;box-shadow:var(--shadow);opacity:0;transform:translateY(10px);transition:.2s;pointer-events:none;z-index:999}#toast.show{opacity:1;transform:none}@media(max-width:900px){.workspace{grid-template-columns:80px 1fr}aside{padding:18px 10px}aside .brand b,.identity div{display:none}nav button{font-size:0;text-align:center}nav button:before{font-size:18px}nav button:nth-child(1):before{content:'▦'}nav button:nth-child(2):before{content:'＋'}nav button:nth-child(3):before{content:'◎'}nav button:nth-child(4):before{content:'≡'}.hero{grid-template-columns:1fr}.hero-art{display:none}.upload-panel{grid-template-columns:1fr}.drop{min-height:300px}}@media(max-width:640px){.auth{grid-template-columns:1fr}.auth-art{display:none}.mobile-brand{display:block;font-weight:800;font-size:20px;margin-bottom:30px}.workspace{display:block}.workspace aside{height:auto;position:sticky;z-index:10;padding:8px;display:block}.workspace aside>.brand,.identity{display:none}nav{display:flex;overflow:auto}nav button{font-size:12px;white-space:nowrap}nav button:before{display:none}.content{padding:0 14px 24px}.content>header{height:76px}.content>header h2{font-size:23px}.hero{padding:25px;min-height:220px}.hero h1{font-size:31px}.metrics{grid-template-columns:1fr}.grid{grid-template-columns:1fr 1fr}.table-wrap{margin:0 -14px;border-radius:0}th,td{padding:11px 10px}#viewer{width:100vw;height:100vh;max-width:none;max-height:none;border-radius:0}.viewer>header b{max-width:45vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media(max-width:430px){.grid{grid-template-columns:1fr}}

/* Folio premium branding/accessibility patch */
html,body{font-size:16px;line-height:1.6}
.brand{gap:13px}
.brand .jis-logo{width:52px;height:52px;object-fit:contain;display:block;flex:0 0 52px;filter:drop-shadow(0 7px 14px rgba(0,0,0,.18))}
.brand>div{display:grid;line-height:1.16}
.brand>div>b{font-size:20px;letter-spacing:-.02em}
.brand>div>small{font-size:10px;color:#93a2bd;margin-top:4px;letter-spacing:.045em;text-transform:uppercase;font-weight:700}
.auth-art .brand>div>small{color:#c6d0e0}
.mobile-brand{align-items:center;gap:10px}
.mobile-brand .jis-logo{width:44px;height:44px;object-fit:contain}
.mobile-brand span{font-size:22px;font-weight:800}
.auth-card label,.upload-panel form label,dialog label{font-size:14px}
input,select{font-size:15px;padding:14px 15px}
.primary,.secondary,.button{min-height:44px;padding:11px 17px;font-size:14px}
.with-icon{display:inline-flex;align-items:center;justify-content:center;gap:8px}
.with-icon svg{width:18px;height:18px;flex:none}
.eyebrow{font-size:12px}
.message{font-size:14px}
.workspace nav button{display:flex;align-items:center;gap:12px;font-size:14px;min-height:46px}
.workspace nav button svg{width:20px;height:20px;flex:none;color:#95a9cb}
.workspace nav button:hover svg,.workspace nav button.active svg{color:#f0c564}
.identity b{font-size:13px}.identity small{font-size:11px}
.content>header h2{font-size:30px}
.publication h3{font-size:16px}.publication p{font-size:13px}.actions button,.actions a{font-size:12.5px;padding:8px 10px}
th,td{font-size:14px}th{font-size:12px}.pill{font-size:11px}
.section-head{align-items:end}.section-head h3{font-size:24px;margin:3px 0 0;letter-spacing:-.025em}.section-head p{margin:4px 0 0;color:var(--muted)}
.action-group{display:flex;gap:5px;align-items:center;flex-wrap:wrap}
.action-icon{border:1px solid var(--line)!important;background:#fff!important;color:#40506c!important;width:38px!important;height:38px!important;border-radius:10px!important;display:inline-grid!important;place-items:center!important;transition:.18s ease}
.action-icon:hover{border-color:#aebbd1!important;background:#f6f8fc!important;transform:translateY(-1px)}
.action-icon svg{width:18px;height:18px}.action-icon.danger{color:var(--danger)!important}
#credentialDialog{width:min(680px,94vw)}
.credential-shell{padding:23px}
.credential-shell>header{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:17px}
.credential-shell>header h3{margin:2px 0 0;font-size:24px;letter-spacing:-.03em}
.credential-shell .icon{color:#46536a}
.credential-card{display:flex;align-items:center;gap:15px;padding:21px 0 17px}
.credential-avatar{width:58px;height:58px;border-radius:17px;background:linear-gradient(145deg,#213d78,#785fae);display:grid;place-items:center;color:white;font-size:18px;font-weight:800;box-shadow:0 10px 24px rgba(30,51,94,.22)}
.credential-card>div:last-child{display:grid;gap:3px}.credential-card b{font-size:18px}.credential-card span:not(.pill){font-size:13px;color:var(--muted)}
.credential-pills{display:flex;gap:6px;margin-top:6px}
.credential-meta{margin:0;background:#f7f9fc;border:1px solid var(--line);border-radius:14px;overflow:hidden}
.credential-meta>div{padding:14px 16px;display:grid;grid-template-columns:110px 1fr;gap:14px}.credential-meta>div+div{border-top:1px solid var(--line)}
.credential-meta dt{font-size:12px;text-transform:uppercase;letter-spacing:.08em;font-weight:800;color:#748198}.credential-meta dd{margin:0;font-size:14px;color:#33415c}
.credential-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-top:18px}
.auth-art{position:relative}.auth-art>*{position:relative;z-index:1}.auth-art:after{content:"";position:absolute;right:-190px;bottom:-210px;width:590px;height:590px;border:1px solid rgba(255,255,255,.08);border-radius:50%;box-shadow:0 0 0 75px rgba(255,255,255,.025),0 0 0 150px rgba(255,255,255,.018)}
@media(max-width:900px){
 .workspace{grid-template-columns:86px 1fr}
 .workspace aside .brand>div{display:none}
 .workspace aside .brand{justify-content:center;padding:0 0 24px}
 .workspace aside .brand .jis-logo{width:48px;height:48px;flex-basis:48px}
 .workspace nav button{font-size:0!important;justify-content:center;padding:12px!important}
 .workspace nav button span{display:none}
 .workspace nav button:before{display:none!important;content:none!important}
 .workspace nav button svg{width:22px;height:22px}
}
@media(max-width:640px){
 .mobile-brand{display:flex}
 .workspace nav button{font-size:13px!important;justify-content:flex-start;padding:10px 13px!important}
 .workspace nav button span{display:inline}
 .workspace nav button svg{width:18px;height:18px}
 .credential-meta>div{grid-template-columns:1fr;gap:3px}
 .credential-actions{display:grid;grid-template-columns:1fr}
 .credential-actions button{width:100%}
}
