:root{--color-squid-ink: #232f3e;--color-anchor: #1b2838;--color-smile-orange: #ff9900;--color-smile-orange-hover: #ec7211;--color-cosmos-blue: #0073bb;--color-cosmos-blue-hover: #005a94;--color-nebula: #1a1a2e;--color-white: #ffffff;--color-cloud: #f2f3f3;--color-fog: #fafafa;--color-border: #d5dbdb;--color-border-light: #eaeded;--color-text-primary: #16191f;--color-text-secondary: #545b64;--color-text-muted: #687078;--color-success: #1d8102;--color-error: #d13212;--font-family: "Amazon Ember", "Helvetica Neue", Roboto, Arial, sans-serif;--font-size-base: 16px;--border-radius: 4px;--border-radius-lg: 8px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 2px 8px rgba(0, 0, 0, .08);--shadow-lg: 0 4px 16px rgba(0, 0, 0, .12);--max-width: 960px;--transition: .15s ease-in-out}*{box-sizing:border-box}body{margin:0;font-family:var(--font-family);font-size:var(--font-size-base);line-height:1.6;color:var(--color-text-primary);background:var(--color-fog);-webkit-font-smoothing:antialiased}img{max-width:100%;height:auto;display:block}a{color:var(--color-cosmos-blue);text-decoration:none}a:hover{text-decoration:underline;color:var(--color-cosmos-blue-hover)}h1,h2,h3{color:var(--color-squid-ink);line-height:1.3}.app-layout{min-height:100vh;display:flex;flex-direction:column}.app-header{background:var(--color-squid-ink);padding:0 1.5rem;position:sticky;top:0;z-index:100;box-shadow:var(--shadow-md)}.app-header nav{max-width:var(--max-width);margin:0 auto;display:flex;align-items:center;justify-content:space-between;height:56px}.nav-brand{color:var(--color-white);font-size:1.125rem;font-weight:700;text-decoration:none;letter-spacing:-.01em}.nav-brand:hover{color:var(--color-smile-orange);text-decoration:none}.nav-links{list-style:none;margin:0;padding:0;display:flex;align-items:center;gap:.25rem}.nav-link{color:var(--color-white);text-decoration:none;padding:.5rem 1rem;border-radius:var(--border-radius);font-size:.875rem;font-weight:500;transition:background var(--transition),color var(--transition)}.nav-link:hover{background:#ffffff1a;color:var(--color-white);text-decoration:none}.nav-link--primary{background:var(--color-smile-orange);color:var(--color-squid-ink);font-weight:700}.nav-link--primary:hover{background:var(--color-smile-orange-hover);color:var(--color-squid-ink)}.app-main{flex:1;padding:2rem 1.5rem}.home-page,.exhibit-page,.quick-view-page,.scavenger-hunt-page,.completion-page,.leaderboard-page,.survey-page{max-width:var(--max-width);margin:0 auto}.exhibit-image{width:100%;max-height:400px;object-fit:cover;border-radius:var(--border-radius-lg);margin-bottom:1.5rem;box-shadow:var(--shadow-md)}.exhibit-thumbnail{width:72px;height:72px;object-fit:cover;border-radius:var(--border-radius);flex-shrink:0}.exhibit-list ul{list-style:none;padding:0;margin:0}.exhibit-list-item{margin-bottom:.75rem}.exhibit-list-button{display:flex;align-items:center;gap:1rem;width:100%;padding:1rem;border:1px solid var(--color-border);border-radius:var(--border-radius-lg);background:var(--color-white);cursor:pointer;text-align:left;transition:box-shadow var(--transition),border-color var(--transition);box-shadow:var(--shadow-sm)}.exhibit-list-button:hover{border-color:var(--color-cosmos-blue);box-shadow:var(--shadow-md)}.exhibit-info{flex:1;min-width:0}.exhibit-title{font-size:1rem;font-weight:600;margin:0;color:var(--color-squid-ink)}.exhibit-subtitle{font-size:.875rem;color:var(--color-text-secondary);margin:.25rem 0 0}.exhibit-code-form{display:flex;gap:.5rem;margin-top:.75rem}.exhibit-code-form input{flex:1;padding:.625rem .75rem;border:1px solid var(--color-border);border-radius:var(--border-radius);font-size:1rem;transition:border-color var(--transition)}.exhibit-code-form input:focus{outline:none;border-color:var(--color-cosmos-blue);box-shadow:0 0 0 2px #0073bb33}.exhibit-code-form button{padding:.625rem 1.25rem;background:var(--color-smile-orange);color:var(--color-squid-ink);border:none;border-radius:var(--border-radius);cursor:pointer;font-weight:700;font-size:.875rem;transition:background var(--transition)}.exhibit-code-form button:hover{background:var(--color-smile-orange-hover)}.back-link{display:inline-block;margin-bottom:1rem;font-size:.875rem;font-weight:500;color:var(--color-cosmos-blue)}.back-link:hover{color:var(--color-cosmos-blue-hover)}.exhibit-section{margin-top:1.5rem}.exhibit-page-title{margin:.5rem 0 .25rem;font-size:1.75rem}.exhibit-page-subtitle{color:var(--color-text-secondary);margin:0 0 1rem;font-size:1.125rem}.course-links{list-style:none;padding:0}.course-links li{margin-bottom:.5rem}.course-link{color:var(--color-cosmos-blue);font-weight:500}.error-message{color:var(--color-error);font-size:.875rem;padding:.75rem 1rem;background:#fef2f0;border:1px solid #fad4cc;border-radius:var(--border-radius)}.audio-player{margin-top:1.5rem;padding:1.25rem;background:var(--color-white);border-radius:var(--border-radius-lg);border:1px solid var(--color-border);box-shadow:var(--shadow-sm)}.audio-player-controls{display:flex;align-items:center;gap:.75rem}.audio-play-btn{width:44px;height:44px;border-radius:50%;border:none;background:var(--color-smile-orange);color:var(--color-squid-ink);font-size:1rem;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background var(--transition),transform var(--transition)}.audio-play-btn:hover{background:var(--color-smile-orange-hover);transform:scale(1.05)}.audio-play-btn:focus-visible{outline:2px solid var(--color-cosmos-blue);outline-offset:2px}.audio-progress-container{flex:1;position:relative;height:6px;background:var(--color-border-light);border-radius:3px;overflow:hidden}.audio-progress-bar{position:absolute;top:0;left:0;width:100%;height:100%;margin:0;padding:0;opacity:0;cursor:pointer;z-index:2;-webkit-appearance:none;-moz-appearance:none;appearance:none}.audio-progress-fill{position:absolute;top:0;left:0;height:100%;background:var(--color-smile-orange);border-radius:3px;transition:width .1s linear;pointer-events:none}.audio-time{font-size:.75rem;color:var(--color-text-muted);white-space:nowrap;min-width:80px;text-align:right}.audio-guide-name{margin:.5rem 0 0;font-size:.8rem;color:var(--color-text-muted)}.audio-transcript-toggle{margin-top:.75rem;padding:.4rem .75rem;background:none;border:1px solid var(--color-border);border-radius:var(--border-radius);cursor:pointer;font-size:.875rem;color:var(--color-cosmos-blue);font-weight:500;transition:background var(--transition)}.audio-transcript-toggle:hover{background:var(--color-cloud)}.audio-transcript-toggle:focus-visible{outline:2px solid var(--color-cosmos-blue);outline-offset:2px}.audio-transcript{margin-top:.75rem;padding:1rem;background:var(--color-fog);border:1px solid var(--color-border-light);border-radius:var(--border-radius);font-size:.875rem;line-height:1.7;max-height:200px;overflow-y:auto}.tour-guide-selector{margin-top:1.5rem;padding:1.25rem;background:var(--color-white);border-radius:var(--border-radius-lg);border:1px solid var(--color-border);box-shadow:var(--shadow-sm)}.tour-guide-label{display:block;font-size:.875rem;font-weight:700;color:var(--color-squid-ink);margin-bottom:.5rem}.tour-guide-select{width:100%;padding:.5rem 2rem .5rem .75rem;font-size:1rem;border:1px solid var(--color-border);border-radius:var(--border-radius);background:var(--color-white);color:var(--color-text-primary);cursor:pointer;-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23545b64' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;transition:border-color var(--transition)}.tour-guide-select:focus-visible{outline:none;border-color:var(--color-cosmos-blue);box-shadow:0 0 0 2px #0073bb33}.tour-guide-description{margin:.5rem 0 0;font-size:.75rem;color:var(--color-text-muted)}.quick-view-title{margin:0 0 .25rem}.quick-view-subtitle{color:var(--color-text-secondary);margin:0 0 1.5rem;font-size:.875rem}.quick-view-list{list-style:none;padding:0;margin:0}.quick-view-item{padding:1rem;border:1px solid var(--color-border);border-radius:var(--border-radius-lg);margin-bottom:.75rem;background:var(--color-white);box-shadow:var(--shadow-sm);transition:box-shadow var(--transition)}.quick-view-item:hover{box-shadow:var(--shadow-md)}.quick-view-item-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.quick-view-exhibit-name{font-weight:600;font-size:1rem;flex:1;min-width:0;color:var(--color-squid-ink)}.audio-player-inline{display:flex;align-items:center;gap:.5rem;margin-top:.5rem}.audio-play-btn-inline{width:32px;height:32px;font-size:.8rem}.audio-progress-inline{flex:1}.audio-time-inline{font-size:.7rem;min-width:70px}.scavenger-hunt-form{display:flex;gap:.5rem;margin-top:.75rem}.scavenger-hunt-form input{flex:1;max-width:180px;padding:.625rem .75rem;border:1px solid var(--color-border);border-radius:var(--border-radius);font-size:1.25rem;text-align:center;text-transform:uppercase;letter-spacing:.15em;transition:border-color var(--transition)}.scavenger-hunt-form input:focus{outline:none;border-color:var(--color-cosmos-blue);box-shadow:0 0 0 2px #0073bb33}.scavenger-hunt-form button{padding:.625rem 1.5rem;background:var(--color-smile-orange);color:var(--color-squid-ink);border:none;border-radius:var(--border-radius);cursor:pointer;font-size:1rem;font-weight:700;transition:background var(--transition)}.scavenger-hunt-form button:hover{background:var(--color-smile-orange-hover)}.scavenger-hunt-form button:disabled{opacity:.5;cursor:not-allowed}.scavenger-hunt-alias-card{margin-top:2rem;padding:2rem;background:var(--color-white);border-radius:var(--border-radius-lg);border:1px solid var(--color-border);box-shadow:var(--shadow-md);text-align:center}.scavenger-hunt-alias-label{margin:0 0 .5rem;font-size:.875rem;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em}.scavenger-hunt-alias-name{margin:0;font-size:2rem;font-weight:700;color:var(--color-smile-orange)}.scavenger-hunt-alias-note{margin:.75rem 0 0;font-size:.8rem;color:var(--color-text-muted)}.scavenger-hunt-proceed-btn{display:block;margin:2rem auto 0;padding:.875rem 2.5rem;background:var(--color-smile-orange);color:var(--color-squid-ink);border:none;border-radius:var(--border-radius);font-size:1rem;font-weight:700;cursor:pointer;transition:background var(--transition),transform var(--transition)}.scavenger-hunt-proceed-btn:hover{background:var(--color-smile-orange-hover);transform:translateY(-1px)}.survey-participant{font-size:.875rem;color:var(--color-text-secondary);margin-bottom:1.5rem}.survey-questions{list-style:none;padding:0;margin:0;counter-reset:question}.survey-question{margin-bottom:1.5rem;padding:1.25rem;background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-sm);counter-increment:question}.survey-question fieldset{border:none;padding:0;margin:0}.survey-question-text{font-weight:600;font-size:1rem;color:var(--color-squid-ink);margin-bottom:.75rem;display:block}.survey-question-text:before{content:counter(question) ". ";color:var(--color-smile-orange);font-weight:700}.survey-options{display:flex;flex-direction:column;gap:.5rem}.survey-option{display:flex;align-items:center;gap:.75rem;padding:.625rem .75rem;border:1px solid var(--color-border-light);border-radius:var(--border-radius);cursor:pointer;transition:background var(--transition),border-color var(--transition)}.survey-option:hover{background:var(--color-cloud);border-color:var(--color-border)}.survey-option input[type=radio]{accent-color:var(--color-smile-orange);width:18px;height:18px;cursor:pointer}.survey-option-text{font-size:.9375rem;color:var(--color-text-primary)}.survey-submit-btn{display:block;width:100%;max-width:320px;margin:2rem auto 0;padding:.875rem 2rem;background:var(--color-smile-orange);color:var(--color-squid-ink);border:none;border-radius:var(--border-radius);font-size:1rem;font-weight:700;cursor:pointer;transition:background var(--transition),transform var(--transition)}.survey-submit-btn:hover:not(:disabled){background:var(--color-smile-orange-hover);transform:translateY(-1px)}.survey-submit-btn:disabled{opacity:.5;cursor:not-allowed}.survey-loading{color:var(--color-text-muted)}.completion-page{text-align:center}.completion-alias{font-size:1.125rem;color:var(--color-text-secondary);margin:.5rem 0 1.5rem}.completion-results{display:flex;justify-content:center;gap:3rem;margin:2rem 0;padding:2rem;background:var(--color-white);border-radius:var(--border-radius-lg);border:1px solid var(--color-border);box-shadow:var(--shadow-md)}.completion-stat{display:flex;flex-direction:column;align-items:center;gap:.5rem}.completion-stat-label{font-size:.75rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.08em;font-weight:700}.completion-stat-value{font-size:2.5rem;font-weight:700;color:var(--color-squid-ink)}.completion-leaderboard-link{display:inline-block;margin-top:2rem;padding:.875rem 2.5rem;background:var(--color-smile-orange);color:var(--color-squid-ink);border-radius:var(--border-radius);text-decoration:none;font-size:1rem;font-weight:700;transition:background var(--transition),transform var(--transition)}.completion-leaderboard-link:hover{background:var(--color-smile-orange-hover);text-decoration:none;transform:translateY(-1px)}.completion-link{display:inline-block;margin-top:1rem;color:var(--color-cosmos-blue)}.leaderboard-event-code{font-size:.875rem;color:var(--color-text-secondary);margin:0 0 1.5rem}.leaderboard-loading{color:var(--color-text-muted)}.leaderboard-empty{color:var(--color-text-muted);text-align:center;padding:3rem 0}.leaderboard-table-wrapper{overflow-x:auto;border-radius:var(--border-radius-lg);border:1px solid var(--color-border);box-shadow:var(--shadow-sm)}.leaderboard-table{width:100%;border-collapse:collapse;font-size:.9375rem;background:var(--color-white)}.leaderboard-table thead{background:var(--color-squid-ink);color:var(--color-white)}.leaderboard-table th{padding:.875rem 1.25rem;text-align:left;font-weight:700;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em}.leaderboard-table td{padding:.875rem 1.25rem;border-bottom:1px solid var(--color-border-light)}.leaderboard-table tbody tr:last-child td{border-bottom:none}.leaderboard-table tbody tr:hover{background:var(--color-cloud)}.leaderboard-rank{font-weight:700;color:var(--color-squid-ink);width:60px}.leaderboard-alias{font-weight:600;color:var(--color-text-primary)}.leaderboard-score{font-weight:700;color:var(--color-smile-orange)}.leaderboard-time{color:var(--color-text-secondary)}.leaderboard-refresh-note{margin-top:1rem;font-size:.75rem;color:var(--color-text-muted);text-align:center}.leaderboard-back-link{display:inline-block;margin-top:1rem;color:var(--color-cosmos-blue)}.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}@media(max-width:600px){.app-header nav{height:48px}.nav-brand{font-size:1rem}.nav-link{padding:.4rem .75rem;font-size:.8rem}.app-main{padding:1.25rem 1rem}.completion-results{flex-direction:column;gap:1.5rem}.completion-stat-value{font-size:2rem}.leaderboard-table th,.leaderboard-table td{padding:.625rem .75rem}}.admin-page{max-width:var(--max-width);margin:0 auto}.admin-page h1{margin:0 0 .5rem;font-size:1.75rem}.admin-role-badge{font-size:.875rem;color:var(--color-text-secondary);margin:0 0 1.5rem}.admin-section{margin-bottom:2.5rem}.admin-section h2{font-size:1.25rem;margin:0 0 1rem;padding-bottom:.5rem;border-bottom:1px solid var(--color-border-light)}.admin-form{display:flex;flex-direction:column;gap:1rem}.admin-form-row{display:flex;gap:1rem}.admin-form-row .admin-form-field{flex:1}.admin-form-field{display:flex;flex-direction:column;gap:.375rem}.admin-form-field label{font-size:.875rem;font-weight:600;color:var(--color-squid-ink)}.admin-form-field input,.admin-form-field select{padding:.625rem .75rem;border:1px solid var(--color-border);border-radius:var(--border-radius);font-size:1rem;transition:border-color var(--transition)}.admin-form-field input:focus,.admin-form-field select:focus{outline:none;border-color:var(--color-cosmos-blue);box-shadow:0 0 0 2px #0073bb33}.admin-form-field input:disabled{background:var(--color-cloud);color:var(--color-text-muted);cursor:not-allowed}.admin-btn{padding:.625rem 1.25rem;border:none;border-radius:var(--border-radius);font-size:.875rem;font-weight:700;cursor:pointer;transition:background var(--transition),transform var(--transition)}.admin-btn:disabled{opacity:.5;cursor:not-allowed}.admin-btn--primary{background:var(--color-smile-orange);color:var(--color-squid-ink)}.admin-btn--primary:hover:not(:disabled){background:var(--color-smile-orange-hover)}.admin-btn--secondary{background:var(--color-cloud);color:var(--color-squid-ink);border:1px solid var(--color-border)}.admin-btn--secondary:hover:not(:disabled){background:var(--color-border-light)}.admin-btn--danger{background:var(--color-error);color:var(--color-white)}.admin-btn--danger:hover:not(:disabled){background:#b02a0c}.admin-btn--icon{padding:.25rem .5rem;background:none;color:var(--color-error);font-size:1rem;line-height:1}.admin-btn--icon:hover{background:#fef2f0}.admin-btn--sm{padding:.375rem .75rem;font-size:.8rem}.admin-btn--lg{padding:.875rem 2rem;font-size:1rem;margin-top:1rem}.admin-generated-code{margin-top:1rem;padding:1.25rem;background:var(--color-white);border:2px solid var(--color-success);border-radius:var(--border-radius-lg);text-align:center}.admin-generated-code p{margin:0 0 .5rem;font-size:.875rem;color:var(--color-text-secondary)}.admin-code-display{font-size:2rem;font-weight:700;color:var(--color-squid-ink);letter-spacing:.1em;font-family:monospace}.admin-table{width:100%;border-collapse:collapse;font-size:.9375rem;background:var(--color-white);border-radius:var(--border-radius-lg);overflow:hidden;border:1px solid var(--color-border);box-shadow:var(--shadow-sm)}.admin-table thead{background:var(--color-squid-ink);color:var(--color-white)}.admin-table th{padding:.75rem 1rem;text-align:left;font-weight:700;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em}.admin-table td{padding:.75rem 1rem;border-bottom:1px solid var(--color-border-light)}.admin-table tbody tr:last-child td{border-bottom:none}.admin-table tbody tr:hover{background:var(--color-cloud)}.admin-code-cell{font-family:monospace;font-weight:600;letter-spacing:.05em}.admin-status{display:inline-block;padding:.2rem .6rem;border-radius:12px;font-size:.75rem;font-weight:700;text-transform:uppercase}.admin-status--active{background:#e6f4ea;color:var(--color-success)}.admin-status--inactive{background:#fef2f0;color:var(--color-error)}.admin-empty{color:var(--color-text-muted);font-style:italic}.admin-questions-section{margin-top:1rem}.admin-questions-section h2{font-size:1.25rem;margin:0 0 1rem;padding-bottom:.5rem;border-bottom:1px solid var(--color-border-light)}.admin-question-card{padding:1.25rem;margin-bottom:1rem;background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-sm)}.admin-question-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.admin-question-number{font-weight:700;font-size:.875rem;color:var(--color-smile-orange);text-transform:uppercase;letter-spacing:.04em}.admin-answer-options{margin-top:.75rem}.admin-options-label{display:block;font-size:.8rem;font-weight:600;color:var(--color-text-secondary);margin-bottom:.5rem}.admin-option-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.admin-option-row input[type=radio]{accent-color:var(--color-smile-orange);width:18px;height:18px;cursor:pointer;flex-shrink:0}.admin-option-input{flex:1;padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:var(--border-radius);font-size:.9375rem;transition:border-color var(--transition)}.admin-option-input:focus{outline:none;border-color:var(--color-cosmos-blue);box-shadow:0 0 0 2px #0073bb33}.admin-success{color:var(--color-success);font-size:.875rem;padding:.75rem 1rem;background:#e6f4ea;border:1px solid #b7e1cd;border-radius:var(--border-radius);font-weight:500}@media(max-width:600px){.admin-form-row{flex-direction:column}.admin-table{font-size:.8rem}.admin-table th,.admin-table td{padding:.5rem .625rem}}
