:root{--theme-background:#fff8e2;--theme-text:#5e442e;--theme-accent:#bcd1de;--theme-support:#ffefb9;--color-paper:var(--theme-background);--color-note:var(--theme-support);--color-map:var(--theme-accent);--color-trail:var(--theme-text);--color-trail-weak:color-mix(in srgb,var(--theme-text) 72%,transparent);--color-border:color-mix(in srgb,var(--theme-text) 18%,transparent);--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px}*{box-sizing:border-box}body,html{min-height:100%;background:var(--color-paper)}body{margin:0;color:var(--color-trail);font-family:Comfortaa,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,input,select,textarea{font:inherit}input,select,textarea{color:var(--color-trail);background:#fffdf4}button{cursor:pointer}a{color:inherit}.numeric{font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.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}.app-shell{min-height:100dvh;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);background:color-mix(in srgb,var(--color-paper) 92%,transparent);border-bottom:1px solid var(--color-border);overflow:hidden}.brand{flex:0 0 auto;width:150px}.brand svg{display:block;width:100%;height:auto}.menu{display:flex;align-items:center;gap:var(--space-2);width:100%;max-width:100%;overflow-x:auto;padding:2px;scrollbar-width:none}.menu::-webkit-scrollbar{display:none}.nav-link{text-decoration:none;color:var(--color-trail);font-size:.86rem;padding:var(--space-2) var(--space-3);border-radius:999px;white-space:nowrap;transition:background-color .18s ease,color .18s ease}.nav-link.is-active,.nav-link:hover{color:var(--color-paper);background:var(--color-trail)}.nav-link:focus-visible{outline:3px solid var(--color-map);outline-offset:2px}.main-content{width:100%;padding:var(--space-4)}@media (min-width:860px){.topbar{padding:var(--space-4) var(--space-6)}.main-content{max-width:1160px;margin:0 auto;padding:var(--space-8)}}@media (max-width:640px){.topbar{flex-direction:column;align-items:flex-start}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}.page-stack{display:grid;gap:var(--space-6)}.profile-card{display:flex;flex-wrap:wrap;gap:var(--space-6);align-items:center;padding:var(--space-6);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--color-note) 48%,transparent)}.avatar{width:72px;height:72px;display:grid;place-items:center;border-radius:999px;color:var(--color-paper);background:var(--color-trail);font-weight:700}.profile-card dl{flex:1 1 100%;min-width:0;display:grid;grid-template-columns:1fr;gap:var(--space-4);margin:0}@media (min-width:640px){.profile-card dl{flex-basis:auto;grid-template-columns:repeat(3,minmax(120px,1fr))}}.profile-card dt{color:var(--color-trail-weak)}.profile-card dd{margin:var(--space-1) 0 0;font-size:1.6rem;font-weight:700}.profile-account-card,.profile-security-card{display:grid;gap:var(--space-4);padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--color-note) 30%,transparent)}.profile-account-card h2,.profile-security-card h2{margin:0;font-size:1.1rem}.profile-account-details{display:grid;gap:var(--space-3);margin:0}.profile-account-details div{display:grid;gap:var(--space-1)}.profile-account-details dt{color:var(--color-trail-weak);font-size:.92rem}.profile-account-details dd{margin:0;overflow-wrap:anywhere}.profile-security-form{display:grid;gap:var(--space-3)}.profile-security-form label{display:grid;gap:var(--space-2);font-size:.92rem;font-weight:700}.profile-security-form input{width:100%;min-height:46px;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:0 var(--space-3);color:var(--color-trail);background:#fffdf4}.profile-logout-form .button-secondary:focus-visible,.profile-security-form input:focus-visible{outline:3px solid var(--color-map);outline-offset:2px}.profile-logout-form .button-secondary,.profile-security-form .button-primary{width:100%}.profile-logout-form{padding-top:var(--space-4);border-top:1px solid var(--color-border)}@media (min-width:640px){.profile-account-card,.profile-security-card{padding:var(--space-6)}.profile-account-details,.profile-security-form{grid-template-columns:repeat(2,minmax(0,1fr))}.profile-security-form .button-primary,.profile-security-form label:first-child{grid-column:1/-1}.profile-logout-form .button-secondary,.profile-security-form .button-primary{width:fit-content}}.profile-appearance-link{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--color-note) 30%,transparent);text-decoration:none}.profile-appearance-link span:first-child{display:grid;gap:var(--space-1)}.profile-appearance-link small{color:var(--color-trail-weak)}.profile-appearance-link:focus-visible{outline:3px solid var(--color-map);outline-offset:3px}.admin-user-list,.admin-users-panel{display:grid;gap:var(--space-4)}.admin-user-list{margin:0;padding:0;list-style:none}.admin-user-card{display:grid;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--color-note) 30%,transparent)}.admin-user-card-header{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.admin-user-timestamp{margin:0;color:var(--color-trail-weak);font-size:.92rem}.admin-user-form{display:grid;gap:var(--space-3)}.admin-user-form label{display:grid;gap:var(--space-2);font-size:.92rem;font-weight:700}.admin-user-form input{width:100%;min-height:46px;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:0 var(--space-3);color:var(--color-trail);background:#fffdf4}.badge{display:inline-flex;align-items:center;padding:2px var(--space-2);border-radius:999px;font-size:.8rem;font-weight:700}.badge-ok{color:var(--color-paper);background:var(--color-trail)}.badge-off{color:var(--color-trail);background:var(--color-border)}.badge-warn{color:#5e3b00;background:#ffd98a}.badge-admin{color:var(--color-paper);background:var(--color-map)}@media (min-width:640px){.admin-user-card{padding:var(--space-6)}.admin-user-form{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-user-form .button-primary,.admin-user-form .form-error,.admin-user-form .form-status,.admin-user-form label:first-child{grid-column:1/-1}}.theme-workspace{display:grid;gap:var(--space-4)}.theme-editor,.theme-list{min-width:0;padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--color-note) 24%,transparent)}.theme-list-heading{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3)}.theme-editor h2,.theme-list h2{margin:0}.theme-list ul{display:grid;gap:var(--space-2);margin:var(--space-4) 0 0;padding:0;list-style:none}.theme-list li button{width:100%;display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);min-height:44px;padding:var(--space-2) var(--space-3);color:var(--color-trail);background:#fffdf4;border:1px solid var(--color-border);border-radius:var(--radius-md);text-align:left}.theme-list li button.is-selected{border-color:var(--color-trail);box-shadow:inset 4px 0 0 var(--color-map)}.theme-list small{color:var(--color-trail-weak)}.theme-editor{display:grid;gap:var(--space-4)}.theme-fields{display:grid;gap:var(--space-3)}.theme-fields label{display:grid;gap:var(--space-2);font-weight:700}.theme-fields input{width:100%;min-height:44px;padding:var(--space-2) var(--space-3);color:#33281f;background:#fffdf4;border:1px solid #c9bfae;border-radius:var(--radius-md)}.theme-color-row input[aria-invalid=true],.theme-fields input[aria-invalid=true]{border-color:#9c342f}.theme-color-inputs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3)}.theme-color-row{display:grid;grid-template-columns:32px minmax(0,1fr);gap:var(--space-2);align-items:center;font-weight:700}.theme-color-row input{width:100%;min-width:0;min-height:44px;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md)}.theme-color-swatch,.theme-role-chip{display:inline-block;border:1px solid color-mix(in srgb,var(--theme-text) 28%,transparent);border-radius:var(--radius-sm)}.theme-color-swatch{width:32px;height:32px}.theme-color-row .field-error{grid-column:1/-1}.theme-role-map{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2);margin:0}.theme-role-map div{display:grid;gap:var(--space-1);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:color-mix(in srgb,var(--color-note) 18%,transparent)}.theme-role-map dt{color:var(--color-trail-weak);font-size:.8rem;font-weight:700}.theme-role-map dd{display:flex;align-items:center;gap:var(--space-2);margin:0;font-family:JetBrains Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.85rem}.theme-role-chip{width:18px;height:18px;border-radius:999px}.field-error,.theme-error{color:#812b27}.field-error{font-size:.8rem;font-weight:400}.theme-error,.theme-message,.theme-warning{margin:0;padding:var(--space-3);border-radius:var(--radius-md)}.theme-warning{color:#5f4513;background:#fff0b8}.theme-message{color:#244d35;background:#dff3e6}.theme-error{background:#f8deda}.theme-preview{display:grid;gap:var(--space-4);overflow:hidden;padding:var(--space-4);color:var(--theme-text);background:var(--theme-background);border:1px solid color-mix(in srgb,var(--theme-text) 18%,transparent);border-radius:var(--radius-lg)}.theme-preview>svg{width:min(180px,100%)}.theme-preview-card{display:grid;gap:var(--space-2);padding:var(--space-4);color:var(--theme-text);background:var(--theme-support);border-radius:var(--radius-md)}.theme-preview-card p{margin:0}.theme-preview-card span{justify-self:start;padding:var(--space-2) var(--space-3);color:var(--theme-text);background:var(--theme-accent);border-radius:999px;font-weight:700}.theme-actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.theme-actions button{flex:1 1 140px}.button-danger{min-height:42px;border:1px solid #812b27;border-radius:var(--radius-md);padding:0 var(--space-4);color:#812b27;background:#fffdf4;font-weight:700}.theme-actions button:focus-visible,.theme-color-row input:focus-visible,.theme-fields input:focus-visible,.theme-list button:focus-visible{outline:3px solid var(--color-map);outline-offset:3px}.theme-actions button:disabled{cursor:not-allowed;opacity:.5}@media (min-width:860px){.theme-workspace{grid-template-columns:minmax(220px,.72fr) minmax(0,2fr);align-items:start}.theme-fields{grid-template-columns:minmax(0,1fr)}.theme-color-inputs{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:640px){.theme-color-inputs,.theme-role-map{grid-template-columns:minmax(0,1fr)}}.section-kicker{margin:0 0 var(--space-2);color:var(--color-trail-weak);font-size:.9rem}h1{max-width:16ch;margin:0;font-size:2rem;line-height:1.08;text-wrap:balance}.page-intro{max-width:64ch;color:var(--color-trail-weak);line-height:1.6}.quick-add{display:grid;gap:var(--space-3);max-width:620px;padding:var(--space-4);background:var(--color-note);border-radius:var(--radius-lg)}.quick-add label{font-size:.92rem;font-weight:700}.quick-add input,.quick-add textarea{width:100%;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3);color:var(--color-trail);background:#fffdf4}.quick-add input:focus-visible,.quick-add textarea:focus-visible{outline:3px solid var(--color-map);outline-offset:2px}.button-primary{min-height:46px;border:0;border-radius:var(--radius-md);padding:0 var(--space-4);color:var(--color-paper);background:var(--color-trail);font-weight:700;transition:transform .18s ease,opacity .18s ease}.button-primary:hover{transform:translateY(-1px)}.button-primary:disabled{cursor:wait;opacity:.72;transform:none}.filter-bar{display:flex;flex-wrap:wrap;gap:var(--space-2)}.filter-bar input,.filter-bar select{min-height:42px;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:0 var(--space-3);color:var(--color-trail);background:#fffdf4}.filter-bar input{flex:1 1 240px}.button-secondary{min-height:42px;border:1px solid var(--color-trail);border-radius:var(--radius-md);padding:0 var(--space-4);color:var(--color-trail);background:transparent;font-weight:700}.button-secondary:focus-visible,.filter-bar input:focus-visible,.filter-bar select:focus-visible{outline:3px solid var(--color-map);outline-offset:2px}.destination-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--space-4)}.destination-card{min-height:220px;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:rgba(255,255,255,.42)}.destination-card-link{display:grid;min-height:218px;gap:var(--space-3);padding:var(--space-4);text-decoration:none}.destination-card-link:focus-visible{outline:3px solid var(--color-map);outline-offset:2px}.destination-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3)}.destination-card h2{margin:0;font-size:1.1rem}.destination-card p{margin:0;color:var(--color-trail-weak)}.destination-card-incomplete{color:var(--color-trail);font-size:.88rem;font-weight:700}.destination-card dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3);margin:0}.destination-card dt{color:var(--color-trail-weak);font-size:.78rem}.destination-card dd{margin:0;font-size:.92rem}.status-badge{display:inline-flex;align-items:center;min-height:28px;padding:0 var(--space-2);border-radius:999px;color:var(--color-trail);background:var(--color-note);font-size:.78rem;white-space:nowrap}.empty-state{padding:var(--space-6);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:rgba(255,255,255,.38)}.detail-layout{max-width:860px}.destination-form,.detail-layout{display:grid;gap:var(--space-4)}.destination-form label{display:grid;gap:var(--space-2);font-weight:700}.destination-form input,.destination-form select,.destination-form textarea{width:100%;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3);color:var(--color-trail);background:#fffdf4}.destination-form input:focus-visible,.destination-form select:focus-visible,.destination-form textarea:focus-visible{outline:3px solid var(--color-map);outline-offset:2px}.auth-page{display:grid;min-height:100dvh;place-items:center;padding:var(--space-4)}.auth-card{display:grid;width:min(100%,480px);gap:var(--space-6);padding:clamp(var(--space-6),6vw,var(--space-8));border:1px solid var(--color-border);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--color-note) 38%,var(--color-paper));box-shadow:0 18px 44px color-mix(in srgb,var(--color-trail) 13%,transparent)}.auth-brand{display:block;width:180px}.auth-brand svg{display:block;width:100%;height:auto}.auth-brand:focus-visible,.auth-form-link:focus-visible{outline:3px solid var(--color-map);outline-offset:3px}.auth-form{display:grid;gap:var(--space-3)}.auth-form label{font-size:.92rem;font-weight:700}.auth-form input{width:100%;min-height:46px;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:0 var(--space-3);color:var(--color-trail);background:#fffdf4}.auth-form input:focus-visible{outline:3px solid var(--color-map);outline-offset:2px}.auth-form-link{width:fit-content;color:var(--color-trail);font-size:.92rem}.form-error,.form-status{margin:0;padding:var(--space-3);border-radius:var(--radius-md);line-height:1.45}.form-error{border:1px solid color-mix(in srgb,#9b2424 48%,var(--color-border));color:#7f1717;background:color-mix(in srgb,#fffdf4 78%,#f7cccc)}.form-status{border:1px solid color-mix(in srgb,#2e6b4b 44%,var(--color-border));color:#1f583a;background:color-mix(in srgb,#fffdf4 76%,#cde8d7)}@media (min-width:860px){.destination-form{grid-template-columns:repeat(2,minmax(0,1fr))}.destination-form button,.destination-form label:first-child,.destination-form label:has(textarea){grid-column:1/-1}}