:root { color-scheme: light; --ink:#16241d; --muted:#607068; --line:#d9e0db; --accent:#0f6d61; --soft:#f3f7f4; }
* { box-sizing:border-box; }
body { margin:0; min-height:100vh; background:#eef3ef; color:var(--ink); font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif; }
body.locked { overflow:hidden; }
body.locked > :not(.access-gate) { filter:blur(7px); pointer-events:none; user-select:none; }
.access-gate { position:fixed; z-index:100; display:grid; inset:0; place-items:center; padding:24px; background:rgba(17,45,36,.64); backdrop-filter:blur(10px); }
.access-gate[hidden] { display:none; }
.access-card { display:grid; width:min(440px,100%); min-width:0; overflow:hidden; gap:14px; padding:38px; border:1px solid rgba(255,255,255,.65); border-radius:18px; background:#fff; box-shadow:0 26px 76px rgba(9,30,24,.3); }
.access-card > * { min-width:0; }
.access-card h1 { max-width:100%; font-size:clamp(29px,6vw,41px); overflow-wrap:anywhere; }
.access-card > p:not(.access-eyebrow) { margin:0 0 8px; color:var(--muted); line-height:1.55; }
.access-mark { display:grid; width:58px; height:58px; place-items:center; margin-bottom:8px; border-radius:13px; color:#fff; background:#163d34; font-weight:900; }
.access-eyebrow { margin:0; }
.access-card input { width:100%; min-height:48px; border:1px solid #bfcac3; border-radius:9px; padding:0 13px; font:inherit; }
.access-card input:focus { border-color:var(--accent); box-shadow:0 0 0 3px rgba(15,109,97,.13); outline:none; }
.access-error { color:#991b1b; font-size:13px; font-weight:700; }
.shell { width:min(760px,calc(100% - 32px)); margin:0 auto; padding:56px 0; }
header { margin-bottom:28px; }
header a { color:var(--accent); font-weight:700; text-decoration:none; }
.eyebrow { margin:34px 0 8px; color:var(--accent); font-size:13px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
h1 { margin:0; font-family:Georgia,serif; font-size:clamp(34px,6vw,56px); line-height:1.05; }
.intro { max-width:620px; margin:18px 0 0; color:var(--muted); font-size:18px; line-height:1.55; }
.card,.notice { border:1px solid var(--line); border-radius:14px; background:#fff; box-shadow:0 14px 36px rgba(27,51,39,.07); }
.card { display:grid; gap:20px; padding:28px; }
.field { display:grid; gap:8px; }
label { font-size:13px; font-weight:800; }
select,input[type=password] { width:100%; min-height:48px; border:1px solid #bfcac3; border-radius:9px; background:#fff; padding:0 13px; font:inherit; }
.upload { position:relative; display:grid; min-height:170px; place-content:center; gap:8px; border:1px dashed #8eaaa0; border-radius:12px; background:var(--soft); text-align:center; cursor:pointer; }
.upload input { position:absolute; inset:0; opacity:0; cursor:pointer; }
.upload strong { color:var(--accent); font-size:18px; }
.upload span,.status,.notice p { color:var(--muted); }
button,.download { display:flex; min-height:50px; align-items:center; justify-content:center; border:0; border-radius:9px; background:var(--accent); color:#fff; font:inherit; font-weight:800; text-decoration:none; cursor:pointer; }
button:disabled { cursor:not-allowed; opacity:.45; }
.status { min-height:24px; line-height:1.5; }
.progress { height:7px; overflow:hidden; border-radius:999px; background:#e5ebe7; }
.progress span { display:block; width:0; height:100%; background:var(--accent); transition:width .35s ease; }
.download { background:#163d34; }
.notice { margin-top:18px; padding:20px 24px; }
.notice p { margin:7px 0 0; line-height:1.55; }
@media (max-width:600px) { .shell{padding:28px 0}.card{padding:20px} }
