/* Shared collection surfaces consume the established graphite / steel tokens. */
.explore-page { --control-radius:11px; --card-radius:16px; --map-land:#303b49; --map-sea:#191f28; --tile-quiet:#29313c; --tile-low:#d9e2ee; --tile-mid:#abc5ec; --tile-high:#344d70; }
.explore-header,.explore-main,.explore-footer { width:min(1200px,calc(100% - 96px)); margin-inline:auto; }
.explore-header { display:flex; align-items:center; justify-content:space-between; gap:24px; padding:25px 0; border-bottom:1px solid var(--line); }
.explore-brand { font-size:23px; letter-spacing:-.06em; font-weight:650; }
.explore-brand span { display:block; color:var(--muted); letter-spacing:.06em; font-size:10px; font-weight:400; }
.explore-nav { display:flex; flex-wrap:wrap; gap:4px; }
.explore-nav a { display:flex; align-items:center; min-height:44px; padding:8px 14px; border-radius:var(--control-radius); color:var(--muted); font-size:13px; }
.explore-nav a:hover,.explore-nav a[aria-current="page"] { color:var(--text); background:var(--panel); }
.explore-back { color:var(--muted); font-size:13px; min-height:44px; display:flex; align-items:center; white-space:nowrap; }
.explore-back:hover { color:var(--accent); }
.explore-main { padding:64px 0 80px; min-height:65svh; outline:none; }
.collection-intro { display:flex; justify-content:space-between; align-items:flex-end; gap:30px; margin-bottom:38px; }
.collection-kicker { color:var(--accent); font:11px/1.5 var(--font-meta); letter-spacing:.1em; margin-bottom:16px; }
.collection-intro h1 { font-size:clamp(34px,4vw,58px); font-weight:600; letter-spacing:-.045em; }
.collection-lead { color:var(--muted); max-width:590px; margin-top:18px; line-height:1.9; }
.collection-counter { font:11px/1.8 var(--font-meta); color:var(--quiet); white-space:nowrap; text-align:right; }
.collection-counter strong { color:var(--accent); font:38px/1.2 var(--font-meta); display:block; margin-bottom:5px; }
.collection-toolbar { display:flex; align-items:center; gap:16px; justify-content:space-between; flex-wrap:wrap; padding:18px 0; border-block:1px solid var(--line); margin-bottom:28px; }
.filter-group { display:flex; flex-wrap:wrap; gap:6px; }
.filter-group button,.game-choice { border:1px solid transparent; border-radius:var(--control-radius); min-height:44px; padding:9px 15px; background:transparent; color:var(--muted); }
.filter-group button:hover,.game-choice:hover { background:var(--panel); color:var(--text); }
.filter-group button[aria-pressed="true"],.game-choice[aria-pressed="true"] { background:var(--primary); color:var(--text); }
.search-box { display:flex; gap:4px; align-items:center; border:1px solid var(--line); border-radius:var(--control-radius); background:var(--panel); width:250px; }
.search-box input { width:100%; min-width:0; padding:10px 12px; font-size:14px; border:0; background:transparent; color:var(--text); border-radius:var(--control-radius); }
.search-box button { background:transparent; color:var(--muted); border:0; min-height:44px; min-width:44px; }
.collection-button { display:inline-flex; justify-content:center; align-items:center; gap:10px; min-height:44px; padding:10px 17px; border:1px solid var(--line); border-radius:var(--control-radius); background:var(--panel); color:var(--text); font-size:14px; white-space:nowrap; }
.collection-button:hover:not(:disabled) { border-color:var(--accent); background:var(--tile-quiet); }
.collection-button.primary { background:var(--primary); border-color:var(--primary); }
.collection-button.primary:hover:not(:disabled) { background:var(--tile-high); border-color:var(--accent); }
.collection-button.danger { color:var(--danger); }
.plain-button { min-height:44px; border:0; background:transparent; color:var(--muted); padding:8px 10px; font-size:13px; }
.plain-button:hover:not(:disabled) { color:var(--accent); }
.collection-state { min-height:270px; display:flex; flex-direction:column; justify-content:center; align-items:center; text-align:center; gap:12px; padding:35px; border:1px dashed var(--line); border-radius:var(--card-radius); color:var(--muted); }
.collection-state h2 { font-size:22px; font-weight:550; color:var(--text); }
.collection-state p { max-width:430px; }
.result-summary { color:var(--quiet); font-size:12px; margin-bottom:18px; }
.project-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:22px; }
.project-card { background:var(--panel); border:1px solid var(--line); border-radius:var(--card-radius); overflow:hidden; display:flex; flex-direction:column; }
.project-visual { aspect-ratio:1.75; display:flex; align-items:center; justify-content:center; position:relative; background:var(--map-sea); border-bottom:1px solid var(--line); overflow:hidden; }
.project-visual img { width:100%; height:100%; object-fit:cover; position:absolute; inset:0; }
.project-visual .visual-word { font:600 40px/1.2 var(--font-meta); letter-spacing:-.05em; color:var(--accent); }
.project-visual::before { content:""; position:absolute; inset:24px; border:1px solid var(--line); border-radius:8px; }
.visual-caption { position:absolute; top:15px; left:17px; color:var(--quiet); font:9px/1.5 var(--font-meta); }
.visual-dots { position:absolute; bottom:16px; right:18px; color:var(--muted); letter-spacing:7px; font-size:10px; }
.project-body { padding:24px; flex:1; display:flex; flex-direction:column; }
.entry-meta { display:flex; align-items:center; justify-content:space-between; gap:12px; color:var(--muted); font-size:11px; }
.entry-badge { color:var(--accent); padding:3px 8px; border:1px solid var(--line); border-radius:6px; font-size:11px; }
.project-body h2 { font-size:22px; font-weight:550; margin:18px 0 12px; }
.entry-copy { color:var(--muted); font-size:14px; line-height:1.9; overflow-wrap:anywhere; }
.entry-tags { display:flex; gap:7px; flex-wrap:wrap; margin:20px 0; font:10px/1.6 var(--font-meta); color:var(--accent-soft); }
.entry-tags span { border-bottom:1px solid var(--line); padding:2px 0; }
.entry-actions { display:flex; flex-wrap:wrap; gap:8px; margin-top:auto; padding-top:10px; }
.owner-actions { display:flex; gap:12px; padding-top:12px; margin-top:12px; border-top:1px solid var(--line); }
.book-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:22px; }
.book-card { display:flex; align-items:flex-start; gap:20px; padding:24px; background:var(--panel); border:1px solid var(--line); border-radius:var(--card-radius); }
.book-cover { width:82px; aspect-ratio:2/3; flex-shrink:0; object-fit:cover; background:var(--primary); color:var(--text); border-radius:3px 8px 8px 3px; box-shadow:inset 6px 0 0 rgba(0,0,0,.25); padding:13px; font:17px/1.6 var(--font-note); overflow:hidden; overflow-wrap:anywhere; }
.book-card img.book-cover { padding:0; }
.book-info { min-width:0; flex:1; }
.book-info h2 { font-size:19px; font-weight:550; margin:12px 0 5px; overflow-wrap:anywhere; }
.book-author { color:var(--muted); font-size:12px; }
.book-rating { color:var(--accent); font-size:12px; margin:12px 0; letter-spacing:2px; }
.book-progress { width:100%; height:4px; appearance:none; border:0; border-radius:4px; background:var(--tile-quiet); }
.book-progress::-webkit-progress-bar { background:var(--tile-quiet); border-radius:4px; }
.book-progress::-webkit-progress-value { background:var(--accent); border-radius:4px; }
.book-progress::-moz-progress-bar { background:var(--accent); }
.book-note { font:13px/1.8 var(--font-note); color:var(--muted); margin-top:12px; }
.book-info .entry-actions { margin-top:14px; }
.shelf-scene { display:flex; align-items:flex-end; justify-content:center; gap:12px; height:130px; width:min(260px,100%); padding:20px 20px 0; border-bottom:5px solid var(--tile-quiet); margin-bottom:15px; }
.shelf-scene span { height:80px; width:30px; background:var(--primary); border-radius:3px 5px 0 0; border-left:4px solid var(--tile-quiet); }
.shelf-scene span:nth-child(2) { height:95px; background:var(--accent-soft); transform:rotate(-8deg); margin-right:5px; }
.shelf-scene span:nth-child(3) { height:75px; background:var(--tile-quiet); }
.map-layout { display:grid; grid-template-columns:minmax(0,1fr) 320px; gap:22px; align-items:start; }
.map-frame { background:var(--map-sea); border:1px solid var(--line); border-radius:var(--card-radius); padding:20px; overflow:hidden; }
.map-controls { display:flex; gap:6px; justify-content:space-between; flex-wrap:wrap; margin-bottom:16px; }
.map-zoom { display:flex; gap:6px; }
.map-zoom button { min-width:44px; }
.footprint-map { width:100%; aspect-ratio:1.7; display:block; touch-action:pan-y; border-radius:8px; background:var(--map-sea); }
.map-land { fill:var(--map-land); stroke:var(--map-sea); stroke-width:.6; vector-effect:non-scaling-stroke; }
.map-grid { fill:none; stroke:var(--line); stroke-width:.5; vector-effect:non-scaling-stroke; }
.map-pin { fill:var(--accent); stroke:var(--bg); stroke-width:1.5; cursor:pointer; vector-effect:non-scaling-stroke; }
.map-pin:hover,.map-pin:focus-visible { fill:var(--paper); stroke:var(--accent); outline:none; }
.map-credit { color:var(--quiet); font-size:10px; margin-top:14px; }
.map-credit a { text-decoration:underline; }
.footprint-list { max-height:640px; overflow:auto; display:flex; flex-direction:column; gap:10px; }
.footprint-row { display:flex; gap:12px; text-align:left; width:100%; padding:18px; background:var(--panel); border:1px solid var(--line); border-radius:var(--control-radius); color:var(--text); }
.footprint-row:hover { border-color:var(--accent); }
.footprint-row img { width:56px; height:56px; object-fit:cover; border-radius:8px; }
.footprint-row strong { display:block; font-size:16px; font-weight:550; }
.footprint-row small { color:var(--muted); display:block; font-size:11px; margin-top:5px; }
.footprint-row .pin-symbol { color:var(--accent); font-size:23px; }
.map-empty { text-align:center; color:var(--muted); font-size:13px; padding:20px 0 5px; }
.collection-pagination { display:flex; justify-content:center; gap:14px; align-items:center; margin-top:32px; color:var(--muted); font-size:12px; }
.collection-dialog { width:min(760px,calc(100% - 32px)); max-height:calc(100svh - 32px); border:1px solid var(--line); border-radius:var(--card-radius); padding:0; background:var(--panel); color:var(--text); }
.collection-dialog::backdrop { background:rgba(0,0,0,.7); backdrop-filter:blur(4px); }
.dialog-head { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:22px 28px; border-bottom:1px solid var(--line); }
.dialog-head h2 { font-size:22px; font-weight:550; }
.dialog-body { padding:26px 28px; }
.dialog-body h3 { font-size:17px; font-weight:550; margin:26px 0 12px; }
.detail-photo { display:block; width:100%; max-height:360px; object-fit:contain; background:var(--map-sea); border-radius:10px; margin-bottom:20px; }
.detail-copy { white-space:pre-wrap; overflow-wrap:anywhere; color:var(--muted); line-height:1.9; }
.detail-quote { white-space:pre-wrap; font:17px/1.9 var(--font-note); border-left:2px solid var(--accent); padding-left:18px; color:var(--text); }
.detail-log { padding-left:20px; color:var(--muted); }
.detail-log li { padding:9px 0; white-space:pre-wrap; overflow-wrap:anywhere; }
.collection-form { display:grid; grid-template-columns:1fr 1fr; gap:18px; }
.collection-field { display:flex; flex-direction:column; gap:7px; min-width:0; color:var(--muted); font-size:13px; }
.collection-field.wide,.form-notice,.form-error,.form-footer,.discard-panel { grid-column:1/-1; }
.collection-field input,.collection-field textarea,.collection-field select { border:1px solid var(--line); border-radius:var(--control-radius); background:var(--bg); color:var(--text); font-size:16px; padding:11px 12px; min-height:46px; width:100%; }
.collection-field textarea { min-height:125px; resize:none; }
.collection-field input[type="file"] { font-size:13px; }
.field-hint { color:var(--quiet); font-size:11px; }
.field-error,.form-error { color:var(--danger); font-size:12px; min-height:18px; }
.collection-field [aria-invalid="true"] { border-color:var(--danger); }
.form-notice { padding:13px 15px; border:1px solid var(--line); border-radius:10px; color:var(--accent-soft); font-size:12px; background:var(--bg); }
.form-footer { display:flex; justify-content:flex-end; align-items:center; gap:10px; border-top:1px solid var(--line); padding-top:20px; }
.collection-form fieldset { border:0; padding:0; margin:0; display:contents; }
.discard-panel { border:1px solid var(--line); padding:18px; border-radius:10px; }
.discard-panel p { margin-bottom:15px; color:var(--muted); }
.discard-panel div { display:flex; gap:10px; flex-wrap:wrap; }
.collection-status { position:fixed; bottom:22px; left:50%; transform:translateX(-50%); padding:12px 20px; border:1px solid var(--line); border-radius:var(--control-radius); color:var(--text); background:var(--panel); box-shadow:0 8px 30px rgba(0,0,0,.2); z-index:100; max-width:calc(100% - 32px); font-size:13px; }
.explore-footer { display:flex; align-items:center; justify-content:space-between; gap:20px; border-top:1px solid var(--line); padding:22px 0 30px; color:var(--quiet); font-size:12px; }
.skip-content { position:fixed; top:-100px; left:16px; padding:10px 20px; z-index:200; background:var(--primary); border-radius:10px; }
.skip-content:focus { top:12px; }
/* The arcade uses the same controls; the board is the visual signature. */
.game-selector { display:flex; gap:8px; flex-wrap:wrap; padding:10px 0 22px; border-bottom:1px solid var(--line); }
.game-layout { display:grid; grid-template-columns:minmax(0,600px) minmax(240px,1fr); gap:60px; margin-top:35px; align-items:start; }
.game-topbar { display:flex; align-items:center; justify-content:space-between; gap:15px; margin-bottom:20px; }
.game-scores { display:flex; gap:23px; font-size:11px; color:var(--muted); }
.game-scores strong { display:block; color:var(--text); font:24px/1.5 var(--font-meta); }
.game-board { width:100%; aspect-ratio:1; border:1px solid var(--line); border-radius:var(--card-radius); background:var(--panel); padding:14px; position:relative; outline-offset:5px; }
.board-2048 { display:grid; grid-template-columns:repeat(4,1fr); grid-template-rows:repeat(4,1fr); gap:10px; touch-action:none; }
.tile { display:flex; align-items:center; justify-content:center; border-radius:10px; background:var(--tile-quiet); color:var(--text); font:600 clamp(24px,3.5vw,42px)/1 var(--font-meta); }
.tile[data-value="2"],.tile[data-value="4"] { background:var(--tile-low); color:var(--ink); }
.tile[data-value="8"],.tile[data-value="16"],.tile[data-value="32"] { background:var(--tile-mid); color:var(--ink); }
.tile[data-value="64"],.tile[data-value="128"],.tile[data-value="256"] { background:var(--primary); }
.tile.high-tile { background:var(--accent); color:var(--ink); font-size:clamp(20px,3vw,36px); }
.game-message { min-height:54px; padding:16px 0 0; color:var(--accent); font-size:14px; }
.game-guide h2 { font-size:24px; font-weight:550; margin:8px 0 16px; }
.game-guide p { color:var(--muted); font-size:14px; line-height:1.9; }
.game-guide dl { margin-top:30px; padding:22px 0; border-block:1px solid var(--line); }
.game-guide dt { font-size:12px; color:var(--accent); margin-bottom:8px; }
.game-guide dd { margin:0 0 20px; color:var(--muted); font-size:13px; }
.game-guide dd:last-child { margin-bottom:0; }
.game-controls { display:grid; grid-template-columns:repeat(3,48px); gap:5px; justify-content:center; margin-top:16px; }
.game-controls button { min-height:46px; padding:0; }
.game-controls button:first-child { grid-column:2; }
.game-controls button:nth-child(2) { grid-column:1; }
.gomoku-board { padding:8px; background:var(--paper); display:grid; grid-template-columns:repeat(15,1fr); gap:0; touch-action:manipulation; }
.gomoku-cell { min-width:0; padding:0; border:0; background:transparent; position:relative; display:flex; align-items:center; justify-content:center; }
.gomoku-cell::before { content:""; position:absolute; inset:0; background:linear-gradient(to right,transparent calc(50% - .5px),var(--accent-soft) calc(50% - .5px),var(--accent-soft) calc(50% + .5px),transparent calc(50% + .5px)),linear-gradient(to bottom,transparent calc(50% - .5px),var(--accent-soft) calc(50% - .5px),var(--accent-soft) calc(50% + .5px),transparent calc(50% + .5px)); }
.gomoku-cell:hover { background:var(--tile-low); }
.gomoku-cell:focus-visible { outline-color:var(--ink); outline-offset:-2px; z-index:1; }
.gomoku-cell .stone { width:80%; aspect-ratio:1; border-radius:50%; position:relative; background:var(--ink); box-shadow:inset 0 -3px 5px rgba(0,0,0,.25); }
.gomoku-cell[data-stone="2"] .stone { background:white; border:1px solid var(--accent-soft); }
.gomoku-cell.last-move .stone::after { content:""; position:absolute; inset:38%; background:var(--accent); border-radius:50%; }
.snake-board { display:block; image-rendering:pixelated; touch-action:none; padding:0; }
.snake-actions { display:flex; flex-wrap:wrap; gap:10px; margin-top:16px; }
@media(max-width:1000px) { .explore-header,.explore-main,.explore-footer { width:calc(100% - 48px); } .explore-header { flex-wrap:wrap; gap:16px; } .explore-nav { order:3; width:100%; } .project-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .book-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .map-layout { grid-template-columns:1fr; } .footprint-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); max-height:none; } .game-layout { gap:30px; grid-template-columns:minmax(0,1fr) 240px; } }
@media(max-width:620px) { .explore-header,.explore-main,.explore-footer { width:calc(100% - 32px); } .explore-header { padding:17px 0; gap:12px; } .explore-brand { font-size:21px; } .explore-nav { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:2px; } .explore-nav a { padding:8px 3px; justify-content:center; font-size:12px; white-space:nowrap; } .explore-main { padding:38px 0 50px; } .collection-intro { gap:14px; margin-bottom:26px; align-items:flex-start; } .collection-intro h1 { font-size:33px; } .collection-lead { font-size:13px; } .collection-counter { display:none; } .collection-toolbar { gap:12px; } .search-box { width:100%; order:3; } .project-grid,.book-grid { grid-template-columns:1fr; } .project-visual { aspect-ratio:2.05; } .project-body { padding:22px; } .collection-form { grid-template-columns:1fr; } .collection-field { grid-column:1; } .dialog-head { padding:17px 20px; } .dialog-body { padding:20px; } .collection-dialog { max-height:calc(100svh - 20px); } .explore-footer { flex-wrap:wrap; gap:8px 20px; } .explore-footer>span { order:3; width:100%; } .map-frame { padding:12px; } .footprint-list { grid-template-columns:1fr; } .map-controls .collection-button { padding:8px 10px; font-size:12px; } .footprint-map { aspect-ratio:1.2; } .game-layout { grid-template-columns:1fr; gap:25px; } .game-guide { order:2; } .game-topbar { gap:8px; } .game-scores { gap:15px; } .game-scores strong { font-size:21px; } .game-board { padding:10px; } .board-2048 { gap:7px; } .snake-board { padding:0; } .gomoku-board { padding:6px; } .filter-group button { padding:8px 12px; } }
@media(prefers-reduced-motion:reduce) { .explore-page *, .explore-page *::before,.explore-page *::after { scroll-behavior:auto!important; transition:none!important; animation:none!important; } }
@media(forced-colors:active) { .map-pin { fill:Highlight; stroke:CanvasText; } .gomoku-cell .stone { border:2px solid CanvasText; } .tile { border:1px solid CanvasText; } }
