:root{--bg: #f7f4ee;--fg: #1d1a16;--muted: #6b655d;--accent: #8a3324;--accent-light: #d09a8a;--correct: #2f7d3a;--wrong: #b13a3a;--card: #ffffff;--border: #d8d2c6;--radius: 10px;--shadow: 0 2px 12px rgba(0, 0, 0, .06);font-family:Hiragino Sans,Yu Gothic,Segoe UI,system-ui,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);line-height:1.55}a{color:var(--accent)}.app-shell{max-width:900px;margin:0 auto;padding:1.5rem 1rem 3rem;display:flex;flex-direction:column;min-height:100vh}.app-shell>main{flex:1}.app-footer{margin-top:2rem;color:var(--muted);font-size:.85rem;text-align:center}.mode-select{text-align:center;padding:2rem 0}.title{font-size:clamp(1.5rem,4vw,2.4rem);margin:0 0 .5rem}.subtitle{color:var(--muted);margin:0 0 2rem}.mode-buttons{display:grid;grid-template-columns:1fr 1fr;gap:1rem;max-width:560px;margin:0 auto}.mode-button{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem 1rem;cursor:pointer;text-align:left;box-shadow:var(--shadow);transition:transform .1s,border-color .1s}.mode-button:hover{border-color:var(--accent);transform:translateY(-2px)}.mode-name{display:block;font-size:1.3rem;font-weight:700;color:var(--accent)}.mode-desc{display:block;color:var(--muted);font-size:.9rem;margin-top:.25rem}.credits-note{margin-top:2rem;font-size:.8rem;color:var(--muted)}@media(max-width:480px){.mode-buttons{grid-template-columns:1fr}}.quiz-header{display:flex;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1rem;flex-wrap:wrap}.quiz-mode{background:var(--accent);color:#fff;padding:.25rem .75rem;border-radius:999px;font-size:.85rem;font-weight:600}.quiz-progress{font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums}.quiz-score{font-weight:600;font-variant-numeric:tabular-nums}.image-card{margin:0 0 1.5rem;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.image-frame{position:relative;background:#0a0a0a;min-height:220px;display:flex;align-items:center;justify-content:center}.image-frame img{display:block;width:100%;height:auto;max-height:60vh;object-fit:contain;opacity:0;transition:opacity .3s ease}.image-frame img.is-loaded{opacity:1}.image-loader{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.spinner{width:44px;height:44px;border:4px solid rgba(255,255,255,.18);border-top-color:var(--accent-light);border-radius:50%;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.image-error{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#e8d6d2;font-size:.9rem;padding:1rem;text-align:center}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.image-card figcaption{padding:.5rem .75rem .75rem}.image-type-badge{display:inline-block;font-size:.75rem;padding:.15rem .5rem;border-radius:4px;background:#eee;color:#333;margin-bottom:.25rem}.image-type-badge[data-type=interior]{background:#efe6d4;color:#6a4f10}.image-type-badge[data-type=exterior]{background:#dde7ef;color:#1a4566}.attribution{margin:0;font-size:.75rem;color:var(--muted);word-break:break-word}.attribution a{color:var(--muted);text-decoration:underline}.meta-panel{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:.75rem 1rem;margin-bottom:1rem;box-shadow:var(--shadow)}.building-name{margin:0;font-size:1.2rem}.building-name-en{margin:.1rem 0 .3rem;color:var(--muted);font-style:italic}.building-location{margin:0;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.year-built{color:var(--muted)}.flag{width:1.3em;height:auto;border:1px solid var(--border)}.flag-fallback{display:inline-block;background:var(--border);padding:0 .4em;font-size:.8em;border-radius:3px}.choice-list{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.choice{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:.85rem 1rem;text-align:left;cursor:pointer;transition:transform .08s,border-color .08s,background .08s;display:flex;flex-direction:column;gap:.15rem}.choice:hover:not(:disabled){border-color:var(--accent);transform:translateY(-1px)}.choice:disabled{cursor:default}.choice-label{font-weight:700}.choice-sub{font-size:.78rem;color:var(--muted)}.choice.correct{background:#e7f4e8;border-color:var(--correct)}.choice.wrong{background:#f7e4e4;border-color:var(--wrong)}.choice.missed{border-color:var(--correct);border-style:dashed}@media(max-width:480px){.choice-list{grid-template-columns:1fr}}.result{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;margin-top:1rem;box-shadow:var(--shadow)}.result-headline{margin:0 0 .5rem}.result-headline.correct{color:var(--correct)}.result-headline.wrong{color:var(--wrong)}.result-multi{color:var(--muted);font-size:.85rem}.sub-style{margin:.5rem 0;color:var(--muted);font-size:.9rem}.style-explainer{margin-top:1rem}.style-explainer h3{margin:0 0 .25rem;font-size:1rem}.style-explainer p{margin:0;color:var(--fg)}.result-actions{display:flex;gap:.5rem;margin-top:1.25rem}button.primary,button.secondary{border:none;padding:.6rem 1.2rem;border-radius:8px;font-weight:600;cursor:pointer}button.primary{background:var(--accent);color:#fff}button.secondary{background:transparent;color:var(--accent);border:1px solid var(--accent)}.summary{text-align:center;padding:2rem 1rem}.summary h1{margin:0 0 1rem;font-size:1.6rem}.summary-score{margin:.5rem 0 0;font-size:1.3rem;color:var(--muted);font-variant-numeric:tabular-nums}.summary-score strong{font-size:3rem;color:var(--accent);font-weight:800;line-height:1;display:inline-block;margin-right:.1em}.summary-score-sep{margin:0 .15em}.summary-rate{color:var(--muted);margin:.5rem 0 .25rem;font-size:1rem}.summary-mode{color:var(--muted);margin:.25rem 0 1.75rem;font-size:.9rem}.summary-actions{display:flex;gap:.75rem;justify-content:center;flex-wrap:wrap}.summary-actions button{min-width:160px}.empty-state{text-align:center;padding:4rem 1rem;color:var(--muted)}.empty-state code{background:#eee;padding:.1rem .4rem;border-radius:4px;font-size:.9em}
