/* Use when: any towarpg.com page needs the shared look — tokens, header, buttons, footer, subpage layouts.
   Does: owns every cross-page style; page files keep only styles unique to that page.
   Core identity: one stylesheet for the static (Astro) and server-rendered pages, so the site never drifts into two themes. */
:root{
  color-scheme:light;
  --sky:#47a9f5;--sky-deep:#1f78d1;--sky-pale:#e4f4ff;
  --cream:#fffaf0;--paper:#fff4dc;--paper-deep:#ffe6b3;--paper-line:#e2c497;
  --bark:#6b4529;--bark-dark:#3f2816;--bark-soft:#a8784e;--ink:#3d2a1c;--muted:#8a6e55;
  --leaf:#5cc24a;--leaf-deep:#2f8f3a;--sun:#ffc93d;--sun-deep:#f59f0b;
  --glitch:#ff4d6a;--water:#7b6cff;--fire:#ff8a2a;--grass:#3fbf5a;
  --round:18px;
}
*{box-sizing:border-box}
html{background:var(--sky-pale)}
body{margin:0;min-height:100vh;display:flex;flex-direction:column;color:var(--ink);font:15px/1.6 "Pretendard","Noto Sans KR",system-ui,-apple-system,sans-serif;
  background:radial-gradient(circle at 12px 12px,#ffffff 2px,transparent 2.5px) 0 0/48px 48px,linear-gradient(180deg,#bfe5ff 0,#e9f6ff 520px,#fff8ea 1400px,#fff3dd 100%)}
a{color:inherit;text-decoration:none}
button{font:inherit}
.wrap{width:min(1180px,calc(100% - 40px));margin:auto}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
[data-session-login]{visibility:hidden}

/* header — wooden signboard bar */
header{position:fixed;inset:0 0 auto;z-index:30;background:linear-gradient(180deg,#7a5232,#5d3d24);border-bottom:3px solid var(--bark-dark);box-shadow:0 4px 0 #00000018}
nav.wrap{height:60px;display:flex;align-items:center;gap:8px}
.brand{margin-right:auto;display:flex;align-items:center;gap:8px;color:#fff;font:900 22px/1 system-ui;letter-spacing:.06em;-webkit-text-stroke:1px var(--bark-dark);text-shadow:0 3px 0 var(--bark-dark)}
.brand img{width:34px;height:34px;filter:drop-shadow(0 2px 0 var(--bark-dark))}
.navlink{padding:7px 13px;border-radius:999px;color:#fde9cf;font-weight:800;font-size:13px;transition:background .15s,color .15s}
.navlink:hover{background:#ffffff22;color:#fff}
.language-picker select{border:2px solid var(--bark-dark);border-radius:999px;background:var(--paper);color:var(--ink);padding:5px 10px;font:700 12px system-ui;cursor:pointer}
.play,.button{display:inline-block;padding:9px 20px;border-radius:999px;border:3px solid var(--bark-dark);background:linear-gradient(180deg,#ffe066,var(--sun-deep));color:var(--bark-dark);font-weight:900;box-shadow:0 4px 0 var(--bark-dark);cursor:pointer;transition:transform .12s,box-shadow .12s}
.play{margin-left:6px}
.play:hover,.button:hover{transform:translateY(-2px);box-shadow:0 6px 0 var(--bark-dark)}
.button.secondary{background:var(--cream)}
.button:disabled{cursor:not-allowed;filter:grayscale(1);opacity:.5;transform:none}

footer{margin-top:auto;padding:26px 0 40px;background:linear-gradient(180deg,#7a5232,#5d3d24);border-top:3px solid var(--bark-dark);color:#fde9cf}
footer .wrap{display:flex;flex-wrap:wrap;gap:18px;align-items:center}
footer a{font-weight:800}footer a:hover{color:#fff}
.brand-foot{display:inline-flex;align-items:center;gap:8px;font:900 16px system-ui;letter-spacing:.04em}
.brand-foot img{width:24px;height:24px}

/* shared building blocks */
.section-title{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px}
.section-title h1,.section-title h2{display:inline-flex;align-items:center;gap:12px;margin:0;color:var(--ink);font:900 clamp(28px,3.4vw,40px)/1.1 system-ui}
.section-title h1::before,.section-title h2::before{content:"";flex:none;width:18px;height:18px;rotate:45deg;border:3px solid var(--bark);border-radius:4px;background:var(--sun)}
.section-title .eyebrow{display:none}
.eyebrow{display:inline-block;padding:4px 12px;border:2px solid var(--paper-line);border-radius:999px;background:#fff;color:var(--leaf-deep);font:900 11px/1.2 system-ui;letter-spacing:.08em}
.meta{color:var(--leaf-deep);font-weight:900;font-size:12px}
.muted,time{color:var(--muted)}
.empty{padding:48px;border-radius:14px;background:var(--paper);color:var(--muted);text-align:center;font-weight:800}
.card,.article,.site-subpage form{border:4px solid var(--bark);border-radius:var(--round);background:var(--cream);box-shadow:0 6px 0 var(--bark)}
.card{padding:20px 22px;margin-top:14px}.card h2,.card h3{margin-top:0}
.warning{border:3px solid var(--glitch);border-radius:14px;background:#fff0f2;padding:14px 18px;color:var(--ink)}

/* subpage layout */
.site-subpage main{min-height:calc(100vh - 160px);padding:104px 0 60px}
.breadcrumbs{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 22px;color:var(--muted);font-size:12px;font-weight:700}
.breadcrumbs a{color:var(--sky-deep)}.breadcrumbs a:hover{text-decoration:underline}
.page-hero{position:relative;margin-bottom:34px;padding:30px 34px 34px;border:4px solid var(--bark);border-radius:var(--round);background:linear-gradient(120deg,#fff 0,var(--cream) 55%,#e9f8e3 100%);box-shadow:0 6px 0 var(--bark)}
.page-hero h1{margin:12px 0 10px;color:var(--ink);font:900 clamp(32px,5vw,54px)/1.1 system-ui}
.page-hero p{max-width:780px;margin:0;color:var(--muted);font-size:16px;font-weight:600;line-height:1.8}

.archive-index{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;margin:0 0 60px}
.archive-index>a{display:grid;grid-template-columns:44px minmax(0,1fr) 24px;gap:14px;align-items:center;padding:16px 18px;border:3px solid var(--paper-line);border-radius:16px;background:#fff;transition:border-color .12s,transform .12s}
.archive-index>a:hover{border-color:var(--bark);transform:translateY(-3px)}
.archive-number{display:grid;place-items:center;width:36px;height:36px;border:3px solid var(--bark);border-radius:12px;background:var(--sun);font:900 12px/1 system-ui}
.archive-index strong{display:block;font-size:18px}
.archive-index small{display:block;margin-top:4px;color:var(--muted);font-size:12px;font-weight:600}
.archive-index b{color:var(--bark-soft);font-size:20px}

.story-sections{display:grid;gap:12px;margin:0 0 60px}
.story-sections section{display:grid;grid-template-columns:minmax(180px,.35fr) minmax(0,1fr);gap:26px;padding:22px 26px;border:3px solid var(--paper-line);border-radius:16px;background:#fff}
.story-sections h2{margin:0;font:900 20px/1.3 system-ui}
.story-sections p{margin:0;color:var(--muted);font-size:15px;font-weight:600;line-height:1.9}

.codex{margin:0 0 60px;padding:20px 22px;border:4px solid var(--bark);border-radius:var(--round);background:var(--cream);box-shadow:0 6px 0 var(--bark)}
.codex-title{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.codex-title .eyebrow{display:none}
.codex-title h2{margin:0;font:900 26px/1 system-ui}
.codex-title>small{padding:3px 10px;border-radius:999px;background:var(--sun);border:2px solid var(--bark);font:900 13px/1.2 system-ui}
.codex ol{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:10px}
.codex li{display:grid;grid-template-columns:30px 72px minmax(0,1fr) auto;gap:12px;align-items:center;padding:8px 14px;border:3px solid var(--paper-line);border-radius:14px;background:#fff}
.codex li:hover{border-color:var(--bark)}
.codex-number{color:var(--bark-soft);font:900 11px/1 system-ui}
.codex img{width:64px;height:64px;object-fit:contain}
.codex-soul-art{position:relative;width:64px;height:64px;display:grid;place-items:center;overflow:hidden;border-radius:12px;background:var(--sky-pale)}
.codex-soul-art canvas{width:64px;height:64px}
.soul-runtime-placeholder{position:absolute;inset:0;display:grid;place-items:center;width:100%;height:100%;color:#c9ab80;font:900 8px system-ui}
.codex-main strong{display:block;font-size:15px}.codex-main small{display:block;margin-top:3px;color:var(--muted);font-size:10px}
.element{padding:4px 10px;border-radius:999px;border:2px solid currentColor;font:900 11px system-ui;text-transform:capitalize}
.element-water{color:var(--water)}.element-fire{color:var(--fire)}.element-grass{color:var(--grass)}
.equipment-facts{text-align:right}.equipment-facts b,.equipment-facts small{display:block}.equipment-facts small{color:var(--muted);font-size:10px}

/* news / support lists and articles (server-rendered) */
.list{display:grid;gap:10px}
.post{display:block;padding:16px 20px;border:3px solid var(--paper-line);border-radius:16px;background:#fff;transition:border-color .12s,transform .12s}
a.post:hover{border-color:var(--bark);transform:translateX(4px)}
.post h2{margin:4px 0 6px;font:900 18px/1.35 system-ui}
.post p{margin:0 0 6px}
.article{max-width:860px;margin:auto;padding:30px 34px}
.article h1{margin:8px 0 0;font:900 clamp(26px,4vw,40px)/1.25 system-ui}
.article>h2{margin-top:34px}
.article-body{margin-top:24px;font-size:16px;line-height:1.85}
.article-body img{display:block;max-width:100%;height:auto;margin:22px auto;border-radius:14px;border:3px solid var(--paper-line)}
.bullet{padding-left:12px}

/* forms and editor (support / operator pages) */
.site-subpage form{display:grid;gap:15px;max-width:780px;padding:24px}
label{font-weight:900}
input,select,textarea{width:100%;margin-top:6px;border:3px solid var(--paper-line);border-radius:12px;background:#fff;color:var(--ink);padding:11px 13px;font:inherit}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--sky)}
textarea{min-height:280px;resize:vertical}
.upload-row{display:flex;gap:10px;align-items:end}.upload-row label{flex:1}
.upload-status{color:var(--muted)}.upload-status.ready{color:var(--leaf-deep)}.upload-status.error{color:var(--glitch)}
.editor{border:3px solid var(--paper-line);border-radius:14px;background:#fff;overflow:hidden}
.editor-tabs{display:flex;border-bottom:3px solid var(--paper-line);background:var(--paper)}
.editor-tab,.tool{border:0;border-right:2px solid var(--paper-line);background:transparent;color:var(--muted);padding:10px 16px;font-weight:800;cursor:pointer}
.editor-tab.active{color:var(--ink);background:#fff}
.editor-tools{display:flex;flex-wrap:wrap;border-bottom:2px solid var(--paper-line)}
.tool{padding:7px 12px}
.editor-preview,.editor-source{width:100%;min-height:330px;padding:22px;border:0;outline:0;background:#fff;color:var(--ink)}
.editor-source{display:none;margin:0;resize:vertical;font:14px/1.6 ui-monospace,Consolas,monospace}
.editor.source .editor-preview{display:none}.editor.source .editor-source{display:block}

.metrics-consent{margin-top:34px;padding:18px 20px;border-top:2px dashed var(--paper-line);color:var(--muted);font-size:12px}
.metrics-consent form{display:inline;margin:0 0 0 12px;padding:0;border:0;background:transparent;box-shadow:none}
.metrics-consent .button{padding:6px 12px;font-size:11px}

@media (max-width:900px){
  nav.wrap{gap:4px}.navlink{padding:6px 8px;font-size:12px}.language-picker{display:none}
  .story-sections section{grid-template-columns:1fr;gap:8px}
}
@media (max-width:620px){
  .navlink:not([data-session-login]),.hide-mobile{display:none}.brand{font-size:18px}
  .page-hero{padding:22px}.article{padding:22px}.upload-row{display:grid}
  .codex ol,.archive-index{grid-template-columns:1fr}
}

/* Static Soul facts keep disclosure confined to the artwork panel. */
.soul-element-tabs,.soul-variant-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}
.soul-element-tabs button,.soul-variant-tabs button{cursor:pointer;border:1px solid #cbbfa9;border-radius:24px;background:#fffaf0;padding:9px 18px;color:#504637;font:700 13px system-ui}
.soul-element-tabs button[aria-pressed="true"],.soul-variant-tabs button[aria-pressed="true"]{background:#385a57;color:#fff;border-color:#385a57}
.soul-card-grid{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:18px}
.soul-card{border:1px solid #d9cbb5;border-radius:20px;padding:18px;background:#fffaf1;box-shadow:0 5px 18px #46361c09}
.soul-card[hidden],[data-codex-panel][hidden]{display:none}
.soul-card-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.soul-card-heading h3{font-size:19px;margin:8px 0}
.soul-species-id{color:#8f806c;font-size:11px}.soul-card-image{position:relative;display:grid;place-items:center;height:190px;margin:8px 0;background:#ede5d8;border-radius:14px;overflow:hidden}
.soul-card-image img,.soul-card-image canvas{width:180px;height:180px;object-fit:contain}.soul-card-image canvas[hidden]{display:none}
.soul-unknown-overlay{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font:900 32px system-ui;color:#fff;text-shadow:0 2px 7px #000;letter-spacing:3px}
.soul-stat-block{margin:0;font-size:12px}.soul-stat-block div{display:flex;justify-content:space-between;gap:10px;padding:7px 0;border-bottom:1px solid #e6dccd}
.soul-stat-block dt{color:#746552}.soul-stat-block dd{font-weight:700;margin:0;text-align:right}

.soul-runtime-placeholder[hidden]{display:none}
.soul-card-body h4{font-size:13px;margin:18px 0 8px;color:#665846}
