@import url('https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;600;700&display=swap');
:root{color-scheme:light;--bg:#eae6d8;--text:#303b34;--muted:#7d8071;--accent:#963f30;--line:#b6b6a1;--serif:"Noto Serif SC","STKaiti","KaiTi",serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--serif);font-size:14px;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23665533' opacity='.085' filter='url(%23n)' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}body:before{content:"";position:absolute;inset:0 0 auto;height:890px;background:url('assets/official/key-art.jpg') no-repeat center top;background-size:cover;pointer-events:none;z-index:-1}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:5px}.header{height:105px;margin:0 6%;display:flex;align-items:center;border-bottom:1px solid #838d7740;gap:40px}.brand{font-size:32px;font-weight:700;letter-spacing:6px;display:flex;gap:20px;align-items:center}.brand:before{content:'印';font-size:14px;font-weight:400;background:var(--accent);color:#f2e9ce;line-height:1;padding:6px 4px;letter-spacing:0;outline:1px solid var(--accent);outline-offset:2px;transform:rotate(-5deg)}.brand span{font-size:10px;letter-spacing:3px;font-weight:400;color:#626e60}.header nav{margin-left:auto}.header nav a{font-size:13px;letter-spacing:3px;padding:12px 0;border-bottom:2px solid var(--accent)}.add-button{width:39px;height:39px;border:1px solid #7c513b;border-radius:2px;font-size:26px;background:#e9e4d4a8;color:var(--accent);transition:.2s}.add-button:hover{background:var(--accent);color:#f0e9d8}.add-button:disabled{opacity:.5}main{max-width:1440px;margin:auto;padding:0 6%}.hero{padding:65px 0 55px;position:relative;min-height:520px}.eyebrow{font-size:11px;letter-spacing:5px;color:#727b69;display:flex;align-items:center;gap:12px}.eyebrow>span{width:16px;height:1px;background:var(--accent)}h1{font-weight:600;font-size:clamp(44px,5.2vw,74px);letter-spacing:8px;line-height:1.5;margin:28px 0 22px;position:relative;width:fit-content;text-shadow:0 2px 18px #eae6d870}.serif{color:#485e4d}h1 i{position:absolute;right:-64px;bottom:22px;font-size:19px;font-style:normal;font-weight:500;line-height:1.25;color:#f0e3c9;background:var(--accent);padding:8px 6px 8px 10px;letter-spacing:4px;outline:1px solid var(--accent);outline-offset:3px;border-radius:2px;transform:rotate(4deg)}.hero-bottom{display:flex;justify-content:space-between;align-items:end}.hero-bottom p{color:#626f5f;line-height:2.2;font-size:13px;margin:0;letter-spacing:1px}.hero-note{position:absolute;right:5%;top:75px;writing-mode:vertical-rl;line-height:2.5;letter-spacing:7px;font-size:16px;color:#526151}.works{position:relative;padding:0 27px 5px;background:#f4f0e4b8;border:1px solid #b2b6a1;outline:1px solid #b2b6a158;outline-offset:5px;box-shadow:0 12px 35px #39492c08}.works:before,.works:after{content:'◆';position:absolute;top:-9px;color:#7a806b;font-size:12px;background:var(--bg);padding:0 6px}.works:before{left:-12px}.works:after{right:-12px}.section-top{padding:26px 0 22px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #b6b6a163}.section-title{font-size:23px;letter-spacing:3px;display:flex;align-items:center;gap:10px}.section-title>span{font-size:10px;letter-spacing:3px;color:#808674;margin-left:8px}.section-title .chapter{font-size:14px;border:1px solid #a8ad96;padding:3px 6px;margin:0 6px 0 0;color:#656f57}.year{color:var(--muted);font-size:10px;letter-spacing:2px}.toolbar{display:flex;align-items:center;justify-content:space-between;margin:22px 0 27px}.tabs{display:flex;gap:12px}.tabs button{background:transparent;border:1px solid transparent;padding:9px 16px;color:#6a7462;font-size:12px;letter-spacing:1px}.tabs button span{font-family:Georgia,serif;font-size:10px;margin-left:8px;opacity:.7}.tabs button.selected{background:#465b49;color:#f6efdc;border:1px solid #465b49;outline:1px solid #465b4977;outline-offset:2px}.tabs button:hover:not(.selected){border-color:#a9af98}.view-note{font-size:10px;color:var(--muted);letter-spacing:2px}.view-note span{font-size:15px;margin-right:6px}.gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:30px 24px}.card{min-width:0}.art-button{border:4px solid #e7e3d5;outline:1px solid #b3b5a0;padding:0;width:100%;aspect-ratio:4/5;position:relative;background:#a8b2a1;overflow:hidden;display:block;text-align:left;box-shadow:3px 5px 10px #303c3214}.art-button img,.art-button video{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s}.art-button:hover img,.art-button:hover video{transform:scale(1.035)}.art-button:after{content:"";position:absolute;inset:65% 0 0;background:linear-gradient(transparent,#15251c50);pointer-events:none}.badge{position:absolute;top:13px;left:13px;padding:6px 9px;border:1px solid #dad9bd80;background:#eee6d8e8;color:#505b47;font-size:10px;letter-spacing:2px;z-index:1}.card-arrow{position:absolute;bottom:14px;right:14px;background:#eae6d8d9;border:1px solid #e5dec3;color:#40553e;width:30px;height:30px;display:grid;place-items:center;z-index:1}.card-info{display:flex;justify-content:space-between;margin-top:16px;padding-bottom:15px;gap:10px;border-bottom:1px solid #b6b6a15c}.card-info h3{font-size:17px;font-weight:500;margin:0 0 7px;letter-spacing:3px}.card-info p{font-size:9px;color:#848976;letter-spacing:1.5px;margin:0}.card-info>span{font:italic 15px Georgia,serif;color:#949b87;padding-top:4px}.collection-end{display:flex;align-items:center;justify-content:center;gap:15px;color:#87907b;letter-spacing:3px;font-size:10px;margin:36px 0}.collection-end>span{width:38px;height:1px;background:#b4b9a4}footer{margin:42px 6% 0;padding:28px 0 35px;display:flex;align-items:center;justify-content:space-between;color:var(--muted);border-top:1px solid #b6b6a163}footer .brand{font-size:22px}footer .brand:before{font-size:10px;padding:4px 3px}footer .brand span{font-size:9px}footer>span,footer small{font-size:10px;letter-spacing:1px}dialog{border:1px solid #969e86;border-radius:2px;background:#eee9da;color:var(--text);padding:28px;max-width:90vw;box-shadow:0 20px 80px #101b1a60}dialog::backdrop{background:#15221bdc;backdrop-filter:blur(8px)}.close{position:absolute;right:10px;top:10px;z-index:3;border:1px solid #b4b39e;background:#eee9da;width:34px;height:34px;font-size:24px}#viewer{width:850px}#viewerMedia{display:flex;justify-content:center}#viewerMedia img,#viewerMedia video{max-height:70vh;max-width:100%;object-fit:contain}.viewer-bottom{display:flex;justify-content:space-between;align-items:center;gap:20px}.viewer-bottom h2{font-size:21px;font-weight:500;letter-spacing:2px}.viewer-bottom p{font-size:11px;color:var(--muted)}#deleteButton{border:1px solid #b59585;color:var(--accent);padding:8px 12px;background:none}.toast{position:fixed;bottom:25px;left:50%;transform:translate(-50%,20px);opacity:0;pointer-events:none;z-index:9;background:#3f5543;color:#f2eddc;border:1px solid #8a987b;padding:13px 22px;transition:.2s;max-width:90vw;font-size:13px}.toast.show{opacity:1;transform:translate(-50%,0)}#empty{text-align:center;padding:90px 10px;color:var(--muted);border:1px dashed var(--line)}@media(min-width:1500px){.header,footer{max-width:1268px;margin-left:auto;margin-right:auto}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}@media(max-width:760px){body:before{height:760px;background-position:61% 0;opacity:.65}.header{height:82px;gap:20px}.brand{font-size:26px;gap:12px;letter-spacing:3px}.brand span{font-size:9px;letter-spacing:1px}.header nav a{font-size:11px;letter-spacing:1px}.add-button{width:34px;height:34px;flex-shrink:0}.hero{padding:45px 0 45px;min-height:430px}.eyebrow{font-size:10px;letter-spacing:3px}h1{font-size:46px;letter-spacing:4px;margin-top:30px}h1 i{right:-45px;font-size:14px;bottom:15px;padding:6px 3px 6px 7px}.hero-note{display:none}.hero-bottom p{font-size:11px;letter-spacing:0}.works{padding:0 14px 4px}.section-top{padding:22px 0 18px}.section-title{font-size:19px;gap:3px}.section-title>span:not(.chapter){display:none}.year{font-size:9px;letter-spacing:1px}.gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:23px 15px}.view-note{display:none}.tabs{gap:10px}.tabs button{padding:8px;font-size:11px;letter-spacing:0}.tabs button span{margin-left:4px}.toolbar{margin:20px 0 24px}.badge{top:8px;left:8px;font-size:9px;letter-spacing:0;padding:5px 7px}.card-info h3{font-size:14px;letter-spacing:1px}.card-info p{font-size:8px;letter-spacing:0;line-height:1.8}.card-info>span{font-size:12px}.collection-end{font-size:9px;letter-spacing:1px;gap:8px}.collection-end>span{width:20px}footer>span,footer .brand span{display:none}footer{margin-top:30px}footer .brand{font-size:20px}}@media(max-width:400px){.header{gap:14px}.header .brand span{display:none}h1{font-size:39px}.hero{min-height:400px}.eyebrow{letter-spacing:2px}.tabs{gap:5px}.tabs button{padding:8px 5px}.card-info>span{display:none}.art-button{border-width:3px}.gallery{gap:20px 12px}}

/* Official game art and scroll-inspired interface */
:root{--bg:#232323;--text:#ddd4be;--muted:#9d9788;--accent:#ad8a51;--line:#756b54}body{background:#232323}body:before{height:790px;background-image:linear-gradient(90deg,rgba(17,20,21,.9),rgba(17,20,21,.6) 27%,transparent 60%),linear-gradient(0deg,#232323 0%,transparent 36%),url('assets/official/key-art.jpg');background-position:center,center,60% top;background-size:cover,cover,auto 730px;background-repeat:no-repeat;opacity:1}.header{border-bottom-color:#c4bca32b;height:88px}.brand{color:#e7deca;font-family:"STKaiti","KaiTi",var(--serif);font-size:31px}.brand:before{background:#80392f;outline-color:#80392f;color:#ebdcc2}.brand span{color:#ada89c}.header nav a{color:#d8c5a1;border-color:#9c8053}.add-button{background:#292b2bd9;border-color:#9f865b;color:#e5d1a7;box-shadow:inset 0 0 0 3px #292b2b,inset 0 0 0 4px #75684e}.add-button:hover{background:#715a37;color:#fff4db}.hero{min-height:555px;padding:18px 0 70px}.game-logo{width:310px;height:162px;object-fit:contain;display:block;margin:0 0 9px -16px}.eyebrow{color:#c4baa5;font-size:11px;letter-spacing:4px}.eyebrow>span{background:#b19058}h1{font-family:"STKaiti","KaiTi",var(--serif);font-size:58px;font-weight:500;letter-spacing:7px;line-height:1.4;margin:20px 0 20px;text-shadow:0 3px 16px #000}.serif{color:#d4b67b;margin-left:7px}h1 i{font-size:15px;right:-47px;bottom:13px;background:#773c31;outline-color:#8f4e3d;color:#ecd8b6}.hero-bottom p{color:#c2bcae;line-height:2.2;font-size:13px;text-shadow:0 1px 5px #000}.hero-link{display:inline-block;margin-top:24px;border:1px solid #8f7a55;padding:10px 22px;font-size:12px;letter-spacing:3px;background:#242425ab;color:#d8c39c;box-shadow:inset 0 0 0 3px #27292a,inset 0 0 0 4px #655b49}.hero-link span{margin-left:20px}.hero-link:hover{background:#4c4437}.art-credit{position:absolute;right:0;bottom:40px;color:#bdb6a8;font-size:9px;letter-spacing:1px;text-shadow:0 1px 4px #000}.works{background:linear-gradient(#dad5c6ed,#c9c3b4f5),url('assets/official/screenshot-1.jpg') center/cover;color:#3c3b33;border:9px solid #56534a;outline:1px solid #8b7a54;outline-offset:0;box-shadow:inset 0 0 0 1px #a6966e,0 0 0 3px #242323,0 0 0 4px #837458,0 18px 40px #0005;padding:0 32px 6px;scroll-margin-top:20px}.works:before,.works:after{content:'';top:8px;width:25px;height:25px;background:transparent;border-top:3px double #a58e58;padding:0}.works:before{left:8px;border-left:3px double #a58e58}.works:after{right:8px;border-right:3px double #a58e58}.section-top{border-bottom-color:#8e867b70}.section-title{font-family:"STKaiti","KaiTi",var(--serif);font-size:26px}.section-title>span{color:#807866}.section-title .chapter{background:#555045;color:#d7c9a8;border:1px solid #ab9667}.year{color:#7c7363}.tabs button{color:#625d51}.tabs button.selected{background:linear-gradient(#5c574d,#3e3d38);color:#ecd9ac;border-color:#9f8a5b;outline:1px solid #6b614e;box-shadow:inset 0 0 0 2px #3c3c36,inset 0 0 0 3px #8b7b53}.tabs button:hover:not(.selected){border-color:#8b7b53;background:#c4bca9}.view-note{color:#817561}.art-button{border-color:#49463e;outline-color:#9f8a5b;background:#bdb5a4}.badge{background:#3e3b32df;color:#e6d5b5;border-color:#a08b61}.card-arrow{background:#3f3e36;color:#dbc8a2;border-color:#aa9362}.card-info{border-bottom-color:#978d7966}.card-info h3{color:#3c3b33}.card-info p,.card-info>span{color:#7b715f}.collection-end{color:#807460}.collection-end>span{background:#a29476}#empty{position:relative;border:1px solid #9c8d6a73;margin:5px 0 10px;padding:45px 15px;color:#776b56;background:linear-gradient(90deg,#d6d0c3eb,#dad5c9e8),url('assets/official/screenshot-1.jpg') center 60%/cover}#empty[hidden]{display:none}.empty-seal{display:inline-block;padding:5px 10px;border:1px solid #9e8870;outline:1px solid #b5a588;outline-offset:3px;color:#89775a;font-size:24px}#empty h2{font-weight:400;letter-spacing:6px;font-size:22px;margin:20px 0 12px}#empty p{font-size:12px;letter-spacing:2px}#emptyAddButton{margin-top:12px;padding:10px 20px;border:1px solid #94825c;background:#575044;color:#eee0bf;font-size:12px;letter-spacing:2px}footer{border-color:#b8a27833;color:#9a9281}footer .brand{font-size:24px}footer a:hover{color:#e7d7ad}.toast{background:#454139;border-color:#aa9261;color:#efe0bd}dialog{background:#d6d0c2;color:#39392f;border:4px solid #665e4d;outline:1px solid #aa9468}.close{background:#454037;color:#e5d2ae;border-color:#aa9468}.viewer-bottom p{color:#766b57}#deleteButton{color:#8d4638;border-color:#a58e76}@media(min-width:1700px){body:before{background-size:cover,cover,cover}}@media(max-width:760px){body:before{height:720px;background-position:center,center,60px 0;background-size:cover,cover,auto 480px;background-color:#232323;background-image:linear-gradient(90deg,#171b1ceb,#171b1c95 35%,#171b1c22),linear-gradient(0deg,#232323 10%,transparent 70%),url('assets/official/key-art.jpg');opacity:1}.header{height:78px}.brand{font-size:26px}.hero{min-height:490px;padding-top:10px;padding-bottom:60px}.game-logo{width:230px;height:130px;margin-left:-13px}h1{font-size:40px;letter-spacing:3px;margin:20px 0}.serif{margin-left:3px}h1 i{font-size:12px;right:-33px;bottom:9px;padding:5px 2px 5px 5px;letter-spacing:3px}.hero-bottom p{font-size:11px}.eyebrow{font-size:10px;letter-spacing:2px}.hero-link{font-size:11px}.art-credit{bottom:20px;font-size:8px;right:0}.works{padding:0 15px 5px;border-width:6px}.section-title{font-size:23px}.section-title .chapter{font-size:12px}.collection-end{font-size:9px}.year{font-size:8px}.section-top{gap:8px}#empty{padding:35px 12px}.header .brand span{font-size:9px}footer>span{display:block;font-size:8px;max-width:150px;line-height:2}footer .brand{font-size:20px}footer small{font-size:8px}}@media(max-width:400px){h1{font-size:34px}.hero{min-height:475px}.year{display:none}.brand{font-size:24px}footer>span{max-width:115px}}
@media(max-width:760px){body:before{background-position:center,center,64% top}}

/* Keep author controls hidden before scripts load and in visitor mode. */
[hidden]{display:none!important}

.author-panel{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:0 0 24px;padding:18px 22px;background:#34332f;border:1px solid #82714f;color:#d8c9a9}.author-panel strong{font-size:15px;font-weight:500}.author-panel p{font-size:11px;line-height:1.9;margin:8px 0 0;color:#b7ae99}.author-panel button{flex-shrink:0;background:#534938;border:1px solid #a48b5a;color:#efe0bd;padding:10px 16px}.author-panel button:disabled{opacity:.6;cursor:wait}@media(max-width:760px){.author-panel{display:block}.author-panel button{margin-top:12px}}
/* Author directory and independent galleries */
.add-author{display:flex;align-items:center;justify-content:center;gap:6px;width:auto;min-width:76px;padding:0 10px;flex-shrink:0}.add-author span{font-size:12px;letter-spacing:1px}.author-directory{margin:0 0 25px;padding:23px 25px;background:#2d2e2bd9;border:1px solid #78694e}.directory-heading{font-size:19px;letter-spacing:3px;color:#e0cfaa}.directory-heading>span{font-size:11px;color:#aaa08c;letter-spacing:2px;margin-left:18px}.author-tabs{display:flex;flex-wrap:wrap;gap:12px;margin-top:18px}.author-tab{display:flex;gap:16px;align-items:center;max-width:100%;padding:12px 18px;background:#33342f;color:#c7bfae;border:1px solid #635e50;text-align:left}.author-tab>span{overflow-wrap:anywhere}.author-tab small{font-size:10px;color:#a79c83;white-space:nowrap}.author-tab.selected{border-color:#c2a776;background:#554b37;color:#f0deb5;box-shadow:inset 0 0 0 3px #33342f}.author-tab.selected small{color:#d0bd95}.gallery-owner{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px 0 0}.gallery-owner>div{min-width:0}.gallery-owner h2{margin:0 0 10px;font-size:22px;font-weight:500;letter-spacing:2px;overflow-wrap:anywhere}.gallery-owner p{margin:0;font-size:12px;line-height:1.9;white-space:pre-wrap;overflow-wrap:anywhere;color:#6d614d}.gallery-owner button{flex-shrink:0;padding:8px 13px;border:1px solid #9b8861;background:transparent;color:#62513a;font-size:11px}#authorDialog{width:470px;padding:32px;max-height:90vh}#authorForm h2{font-size:23px;font-weight:500;margin:5px 0 25px}#authorForm label{display:block;font-size:13px;margin:18px 0 9px}#authorForm input,#authorForm textarea{display:block;width:100%;background:#ece6d8;color:#36372e;border:1px solid #9e9074;padding:11px 12px;border-radius:0;font:inherit;font-size:14px;resize:vertical}#authorForm input:focus,#authorForm textarea:focus{outline:2px solid #947848;outline-offset:2px}#authorForm p{font-size:11px;line-height:1.9;color:#776b56}.form-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:25px}.form-actions button{padding:10px 18px;background:transparent;border:1px solid #9e9074}.form-actions button[type=submit]{background:#514936;color:#ecddba}#authorForm #authorFormError{color:#97412e;min-height:21px}.section-top .year{overflow-wrap:anywhere;text-align:right;max-width:35%}@media(max-width:760px){.header{gap:12px;flex-wrap:wrap;height:auto;min-height:78px;padding:14px 0}.header .brand span{display:none}.add-author{min-width:59px;padding:0 6px;font-size:22px}.add-author span{font-size:10px}.header .brand{font-size:22px;gap:9px}.header nav{margin-left:auto}.directory-heading>span{display:block;margin:9px 0 0;font-size:10px}.author-directory{padding:18px 15px}.author-tabs{gap:9px}.author-tab{padding:11px 13px;gap:10px}.author-tab small{font-size:9px}.gallery-owner{align-items:start;gap:10px}.gallery-owner h2{font-size:19px}.gallery-owner button{padding:7px;font-size:10px}#authorDialog{padding:25px}.hero{padding-top:12px}}

.storage-status{padding:15px 20px;border:1px solid #ad775b;background:#44372d;color:#f1d3b0;line-height:1.8;font-size:13px}.media-error{display:grid;place-items:center;min-height:180px;height:100%;padding:25px;color:#e4d4b4;background:#4b473e;text-align:center;font-size:12px}button:disabled{cursor:wait;opacity:.6}

.publish-actions{display:flex;gap:10px;flex-wrap:wrap;flex-shrink:0}.publish-actions #publishButton{background:#75603b;color:#fff0cc}.publish-status{padding:14px 20px;margin:-10px 0 24px;border:1px solid #8e7c54;color:#e8d5af;background:#3e3b30;font-size:13px;line-height:1.9}.publish-status:empty{display:none}.publish-status.publish-error{border-color:#ae765b;color:#f2cfba}
