:root{--color-brand-primary:var(--primary);--color-brand-primary-hover:var(--brand-strong);--color-brand-secondary:var(--foreground);--color-brand-accent:var(--accent);--color-surface-base:var(--background);--color-surface-muted:var(--surface-muted);--color-surface-raised:var(--card);--color-surface-inverse:var(--foreground);--color-border-subtle:var(--border);--color-border-strong:var(--line-strong);--color-text-primary:var(--foreground);--color-text-secondary:var(--secondary-foreground);--color-text-muted:var(--muted-foreground);--color-text-inverse:var(--background);--color-status-success:var(--success);--color-status-warning:var(--warning);--color-status-danger:var(--destructive);--color-status-info:var(--info);--radius-xs:calc(var(--radius) * 0.5);--radius-sm:var(--radius);--radius-md:calc(var(--radius) * 2);--radius-lg:calc(var(--radius) * 3);--radius-pill:999px;--motion-fast:140ms;--motion-base:220ms;--motion-slow:320ms;--motion-easing:cubic-bezier(0.2,0.8,0.2,1);--container-width:84rem;--tabbar-h:0px}*,:after,:before{box-sizing:border-box}html{color-scheme:light}html.dark{color-scheme:dark}body{margin:0;color:var(--color-text-primary)}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}@media (max-width:767px){input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),select,textarea{font-size:16px!important}}select:not([multiple]):not([size]){-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%236b6b6b' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;background-size:1rem;padding-right:2.5rem}html.dark select:not([multiple]):not([size]){background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23b8b8b8' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E")}img{display:block;max-width:100%}#root,.page-shell{min-height:100vh}.container{width:min(var(--container-width),calc(100% - 32px));margin:0 auto}.panel{background:var(--color-surface-raised);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-soft)}.panel--muted{background:var(--color-surface-muted)}.hero-panel{background:var(--color-surface-raised);border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft)}.eyebrow{font-size:.68rem;text-transform:uppercase;letter-spacing:.22em;font-weight:700;color:var(--color-text-muted)}.display-title{font-size:clamp(2.65rem,7vw,5rem);line-height:.92;letter-spacing:-.05em}.display-title,.section-title{margin:0;font-family:var(--font-display),sans-serif}.section-title{font-size:clamp(1.9rem,3vw,2.5rem);line-height:.96;letter-spacing:-.04em}.muted-text{color:var(--color-text-secondary);max-width:42rem;line-height:1.6}.content-grid{display:grid;gap:var(--space-8)}.status-banner{padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);border:1px solid var(--color-border-subtle)}.status-banner--danger{background:rgba(180,35,24,.08);color:var(--color-status-danger)}.status-banner--warning{background:rgba(158,103,0,.08);color:var(--color-status-warning)}.status-banner--info{background:rgba(29,78,216,.08);color:var(--color-status-info)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.line-clamp-3{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}.ui-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);border:1px solid transparent;border-radius:var(--radius-sm);font-weight:500;cursor:pointer;transition:background-color var(--motion-fast) var(--motion-easing),border-color var(--motion-fast) var(--motion-easing),color var(--motion-fast) var(--motion-easing)}.ui-button:hover{transform:none}.ui-button--sm{padding:10px 14px;font-size:.8rem}.ui-button--md{padding:12px 18px;font-size:.92rem}.ui-button--lg{padding:14px 22px;font-size:1rem}.ui-button--full{width:100%}.ui-button--primary{background:var(--color-brand-primary);color:var(--color-text-inverse)}.ui-button--primary:hover{background:var(--color-brand-primary-hover)}.ui-button--secondary{background:var(--color-surface-raised);border-color:var(--color-border-subtle);color:var(--color-text-primary)}.ui-button--ghost{background:transparent;color:var(--color-text-secondary)}.ui-button--subtle{background:var(--color-surface-muted);color:var(--color-text-primary)}.ui-button--danger{background:rgba(180,35,24,.1);color:var(--color-status-danger)}.ui-control{width:100%;border:1px solid var(--color-border-subtle);background:var(--color-surface-raised);border-radius:var(--radius-sm);padding:12px 14px;color:var(--color-text-primary);transition:border-color var(--motion-fast) var(--motion-easing),box-shadow var(--motion-fast) var(--motion-easing)}.ui-control:focus{outline:none;border-color:var(--color-brand-primary);box-shadow:var(--shadow-focus)}.ui-control--textarea{min-height:120px;resize:vertical}.choice{display:inline-flex;align-items:center;gap:10px;color:var(--color-text-primary)}.choice__control{accent-color:var(--color-brand-primary)}.ui-card{background:var(--color-surface-raised);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-soft)}.ui-card--muted{background:var(--color-surface-muted)}.ui-card--accent{border-color:var(--color-border-strong)}.ui-badge{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:var(--radius-xs);font-size:.66rem;font-weight:700;border:1px solid var(--color-border-subtle);background:var(--color-surface-raised);letter-spacing:.18em;text-transform:uppercase}.ui-badge--accent{color:var(--color-text-inverse);background:var(--color-surface-inverse);border-color:var(--color-surface-inverse)}.ui-badge--success{color:var(--color-status-success)}.ui-badge--warning{color:var(--color-status-warning)}.ui-avatar{display:inline-flex;align-items:center;justify-content:center;overflow:hidden;border-radius:50%;background:var(--color-surface-muted);color:var(--color-text-primary);font-weight:700}.ui-avatar img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.ui-avatar--sm{width:32px;height:32px}.ui-avatar--md{width:40px;height:40px}.ui-avatar--lg{width:48px;height:48px}.ui-modal{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:var(--space-4)}.ui-modal__backdrop{position:absolute;inset:0;border:0;background:rgba(0,0,0,.36);animation:modal-backdrop-in var(--motion-base) var(--motion-easing) both;cursor:default}.ui-modal__panel{position:relative;z-index:1;width:min(960px,100%);max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);overflow-y:auto;overscroll-behavior:contain;padding:var(--space-6);animation:modal-panel-in var(--motion-slow) var(--motion-easing) both}.ui-modal__panel--sm{width:min(400px,100%);padding:var(--space-6)}.ui-modal__panel--md{width:min(620px,100%)}.ui-modal__panel--xl{width:min(1120px,100%)}.ui-modal__header{position:sticky;top:0;z-index:2;background:inherit;display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-5);padding-bottom:var(--space-4);border-bottom:1px solid var(--color-border-subtle)}.ui-modal__header--no-title{border-bottom:0;margin-bottom:var(--space-1);padding-bottom:0;justify-content:flex-end}.ui-modal__close{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:0;border-radius:var(--radius-md);background:transparent;color:var(--color-text-muted);cursor:pointer;transition:color var(--motion-fast) var(--motion-easing),background var(--motion-fast) var(--motion-easing);flex-shrink:0}.ui-modal__close:hover{color:var(--color-text-primary);background:var(--color-surface-muted)}@keyframes modal-backdrop-in{0%{opacity:0}to{opacity:1}}@keyframes modal-panel-in{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.ui-dropdown{position:relative}.ui-dropdown__menu{position:absolute;top:calc(100% + 8px);right:0;min-width:180px;padding:8px;border-radius:var(--radius-sm);border:1px solid var(--color-border-subtle);background:var(--color-surface-raised);box-shadow:var(--shadow-medium)}.ui-dropdown__item{width:100%;padding:10px 12px;border:0;border-radius:var(--radius-xs);background:transparent;text-align:left;cursor:pointer}.ui-dropdown__item:hover{background:var(--color-surface-muted)}.ui-tooltip{position:relative}.ui-tooltip__content{position:absolute;left:50%;bottom:calc(100% + 10px);transform:translateX(-50%);opacity:0;pointer-events:none;white-space:nowrap;padding:8px 10px;border-radius:var(--radius-xs);background:var(--color-surface-inverse);color:var(--color-text-inverse);font-size:.75rem;transition:opacity var(--motion-fast) var(--motion-easing)}.ui-tooltip:hover .ui-tooltip__content{opacity:1}.ui-tabs{display:inline-flex;gap:8px;padding:0 0 8px;border-bottom:1px solid var(--color-border-subtle)}.ui-tabs__tab{border:0;background:transparent;padding:10px 4px;color:var(--color-text-secondary);font-weight:500;cursor:pointer;border-bottom:1px solid transparent}.ui-tabs__tab--active{color:var(--color-text-primary);border-bottom-color:var(--color-text-primary)}.ui-table{overflow:auto}.ui-table table{width:100%;border-collapse:collapse}.ui-table td,.ui-table th{padding:14px 12px;border-bottom:1px solid var(--color-border-subtle);text-align:left;vertical-align:top}.ui-table th{color:var(--color-text-muted);font-size:.76rem;text-transform:uppercase;letter-spacing:.14em}.section-header{display:flex;align-items:end;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-6)}.page-content{display:flex;flex-direction:column;gap:var(--space-8)}.sidebar-layout{display:grid;gap:var(--space-6)}.dashboard-layout{display:flex;flex-direction:column;gap:var(--space-6)}.dashboard-layout__header{display:flex;align-items:end;justify-content:space-between;gap:var(--space-4)}.empty-state{padding:var(--space-8);text-align:center}.empty-state h3{margin:0 0 var(--space-2);font-family:var(--font-display),sans-serif;font-size:1.85rem;line-height:.96;letter-spacing:-.04em}.field{display:flex;flex-direction:column;gap:10px}.field__header{display:flex;justify-content:space-between;gap:var(--space-2)}.field__label{text-transform:uppercase;letter-spacing:.18em;font-weight:700}.field__hint,.field__label{font-size:.78rem;color:var(--color-text-muted)}.notice-stack{position:fixed;bottom:calc(var(--space-4) + 3.5rem + var(--bottom-bar, var(--tabbar-h, 0px)));left:var(--space-4);right:var(--space-4);align-items:center;z-index:2000;pointer-events:none;display:flex;flex-direction:column-reverse;gap:var(--space-2)}@media (min-width:768px){.notice-stack{bottom:calc(var(--space-4) + var(--tabbar-h, 0px));right:auto;align-items:flex-start}}.notice{pointer-events:auto;border:0;min-width:240px;max-width:360px;text-align:left;padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);color:var(--color-text-inverse);box-shadow:var(--shadow-medium);cursor:pointer}.notice--info{background:var(--color-status-info)}.notice--success{background:var(--color-status-success)}.notice--warning{background:var(--color-status-warning)}.notice--error{background:var(--color-status-danger)}.main-shell__header{position:sticky;top:0;z-index:20;border-bottom:1px solid var(--color-border-subtle);background:var(--color-surface-raised)}.main-shell__footer-inner,.main-shell__header-inner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:1.25rem 0}.main-shell__body{padding:2.5rem 0 var(--space-12)}.main-shell__footer{margin-top:var(--space-12);border-top:1px solid color-mix(in srgb,var(--border) 70%,transparent)}.main-shell__footer-links{display:flex;gap:var(--space-4);flex-wrap:wrap}.brand-lockup{display:inline-flex;align-items:center;gap:var(--space-3);border:0;background:transparent;cursor:pointer;padding:0}.brand-lockup img:first-child{width:42px;height:42px}.brand-lockup__logo{height:28px}.main-shell__nav{display:none;gap:var(--space-2);flex-wrap:wrap;padding:.35rem;border:1px solid var(--color-border-subtle);border-radius:var(--radius-pill);background:var(--color-surface-raised)}.main-shell__nav-item{border:0;background:transparent;padding:.7rem 1rem;border-radius:var(--radius-pill);color:var(--color-text-secondary);font-weight:700;cursor:pointer;transition:color var(--motion-fast) var(--motion-easing),background-color var(--motion-fast) var(--motion-easing),transform var(--motion-fast) var(--motion-easing)}.main-shell__nav-item:hover{transform:none;color:var(--color-text-primary);background:var(--color-surface-muted)}.main-shell__nav-item--active{background:var(--color-text-primary);color:var(--color-text-inverse);box-shadow:none}.main-shell__header-actions{display:flex;align-items:center;gap:var(--space-3)}.main-shell__language{display:inline-flex;gap:.35rem;padding:.3rem;border-radius:var(--radius-pill);border:1px solid var(--color-border-subtle);background:var(--color-surface-raised);box-shadow:none}.main-shell__language button{border:0;background:transparent;padding:.55rem .75rem;border-radius:var(--radius-pill);color:var(--color-text-muted);cursor:pointer}.main-shell__language--active{background:var(--color-text-primary)!important;color:var(--color-text-inverse)!important}.main-shell__user-copy{display:none}.main-shell__user-copy span{display:block;color:var(--color-text-muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.14em}.page-hero{display:grid;gap:var(--space-6);padding:clamp(2rem,5vw,3.5rem);margin-bottom:var(--space-8)}.page-hero p:last-child{max-width:640px}.page-hero__metrics{display:grid;gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(10rem,1fr))}.page-hero__metric{padding:1rem 1.1rem;border-radius:calc(var(--radius) * 1.2);border:1px solid color-mix(in srgb,var(--border) 76%,transparent);background:color-mix(in srgb,var(--card) 94%,transparent);box-shadow:var(--shadow-soft)}.page-hero__metric strong{display:block;margin-top:.35rem;font-family:var(--font-display),serif;font-size:clamp(1.45rem,4vw,2.1rem);letter-spacing:-.03em}.page-hero__metric span{color:var(--color-text-muted);font-size:.7rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase}.loading-state{display:grid;place-items:center;gap:var(--space-3);padding:120px var(--space-6)}.loading-state__spinner{width:48px;height:48px;border-radius:50%;border:4px solid color-mix(in srgb,var(--primary) 18%,transparent);border-top-color:var(--color-brand-primary);animation:spin .8s linear infinite}.surface-toolbar{display:flex;flex-direction:column;gap:var(--space-4);padding:1.1rem;border:1px solid color-mix(in srgb,var(--border) 78%,transparent);border-radius:var(--radius-md);background:color-mix(in srgb,var(--card) 92%,transparent);box-shadow:var(--shadow-soft)}.surface-toolbar__row{width:100%}.surface-toolbar__row>*{flex:1}.surface-toolbar__tabs{display:flex;gap:var(--space-3);flex-wrap:wrap;justify-content:space-between}.artwork-card,.event-card{position:relative;overflow:hidden;padding:var(--space-3);display:flex;flex-direction:column}.artwork-card__surface{height:100%}.event-card__surface{display:flex;flex:1;flex-direction:column;border:0;background:transparent;padding:0;cursor:pointer;color:inherit;text-decoration:none;border-radius:var(--radius-sm)}.event-card__surface:focus-visible{outline:2px solid var(--ring);outline-offset:4px}.artwork-card__image-wrap,.event-card__image-wrap{position:relative;overflow:hidden;border-radius:var(--radius-sm);background:var(--secondary)}.event-card__image-wrap{aspect-ratio:1/1}.event-card__image-wrap:has(>.event-card__image){aspect-ratio:auto}.artwork-card__image-wrap{aspect-ratio:4/5}.artwork-card__image,.event-card__image{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;transition:transform var(--motion-slow) var(--motion-easing)}.event-card__image{display:block;height:auto;max-height:40rem;-o-object-fit:contain;object-fit:contain}.event-card:hover .event-card__image{transform:scale(1.02)}.artwork-card__image{will-change:transform;transition:transform .4s cubic-bezier(.2,.8,.2,1)}.event-card__placeholder{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;gap:var(--space-4);padding:var(--space-6) var(--space-6) var(--space-6);padding-top:calc(var(--space-6) + 2.5rem);background:var(--secondary)}.event-card__placeholder-title{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;overflow:hidden;font-family:var(--font-display),sans-serif;font-size:clamp(1.6rem,2.4vw,2.1rem);line-height:1.05;letter-spacing:-.04em;text-wrap:balance;color:var(--muted-foreground)}.event-card__placeholder-title:before{content:attr(data-title)}.event-card__placeholder-mark{width:1.75rem;height:1.75rem;border-radius:9999px;filter:grayscale(1);opacity:.45}.event-card__overlay{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(0,0,0,.18),transparent 28%,transparent 70%,rgba(0,0,0,.12))}.artwork-card__badge,.event-card__badge{position:absolute;top:var(--space-3);left:var(--space-3);max-width:calc(100% - var(--space-3) * 2 - 44px - var(--space-2));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.event-card__save{position:absolute;top:calc(var(--space-3) * 2);right:calc(var(--space-3) * 2);display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;z-index:2;border:1px solid var(--color-border-subtle);border-radius:9999px;background:color-mix(in srgb,var(--card) 92%,transparent);color:#000;cursor:pointer;transition:background-color var(--motion-fast) var(--motion-easing),color var(--motion-fast) var(--motion-easing),border-color var(--motion-fast) var(--motion-easing)}.dark .event-card__save:not(.event-card__save--active){color:#fff}.event-card__save:hover{border-color:var(--color-text-primary);color:var(--color-text-primary)}.event-card__save:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.event-card__save--active,.event-card__save--active:hover{background:var(--color-brand-primary);color:#fff;border-color:var(--color-brand-primary)}.event-card__body{display:flex;flex:1;flex-direction:column;gap:var(--space-2);padding:var(--space-3) var(--space-1) var(--space-1)}.artwork-card__artist,.artwork-card__label,.event-card__meta,.event-card__organizer{color:var(--color-text-muted)}.artwork-card__label,.event-card__meta{display:flex;justify-content:space-between;gap:var(--space-3);font-size:.7rem;font-weight:500;text-transform:uppercase;letter-spacing:.14em}.event-card__meta>:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.event-card__meta>:last-child{flex-shrink:0;font-variant-numeric:tabular-nums}.artwork-card__body h3,.event-card__body h3{margin:0;font-family:var(--font-display),sans-serif;font-size:1.45rem;line-height:1.15;letter-spacing:-.04em;text-wrap:balance}.event-card__body h3{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.event-card__organizer{margin:0;overflow:hidden;font-size:.875rem;text-overflow:ellipsis;white-space:nowrap}.event-card__desc{margin:0;font-size:.875rem;line-height:1.5;color:var(--color-text-muted)}.event-card__footer{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-top:auto;padding-top:var(--space-2);min-height:2rem}.event-card__flags{display:flex;gap:var(--space-2);flex-wrap:wrap}.event-card__link{flex-shrink:0;color:var(--color-text-muted);transition:color var(--motion-fast) var(--motion-easing),transform var(--motion-fast) var(--motion-easing)}.event-card:hover .event-card__link,.event-card__surface:focus-visible .event-card__link{color:var(--color-text-primary);transform:translateX(2px)}.event-grid{display:grid;grid-template-columns:minmax(0,1fr);align-items:start;gap:var(--space-6)}@media (min-width:640px){.event-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.event-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:1280px){.event-grid--narrow{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1536px){.event-grid--narrow{grid-template-columns:repeat(3,minmax(0,1fr))}}.artwork-card{cursor:pointer}.artwork-card,.artwork-card__body{display:flex;flex-direction:column}.artwork-card__body{flex-grow:1;gap:var(--space-3);padding:var(--space-2) 0 0;outline:none}.artwork-card__footer{margin-top:auto;display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);padding:var(--space-2) 0 0}.artwork-card__badge-group{position:absolute;top:var(--space-3);left:var(--space-3);display:flex;gap:var(--space-2);z-index:1}.artwork-card__header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3)}.artwork-card__header-text{display:flex;flex-direction:column;gap:6px;min-width:0}.artwork-card__header-text h3{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.artwork-card__bid-count{flex-shrink:0;border:1px solid var(--color-border-subtle);border-radius:var(--radius-xs);padding:4px 8px;font-size:.64rem;font-weight:600;text-transform:uppercase;letter-spacing:.18em;color:var(--color-text-muted)}.artwork-card__meta{display:flex;flex-direction:column;gap:4px;margin-top:auto}.artwork-card__artist{margin:0;font-size:1rem;font-weight:500;color:var(--color-text-primary)}.artwork-card__medium{margin:0;font-size:.875rem;color:var(--color-text-muted)}.artwork-card__price{display:flex;flex-direction:column;gap:4px}.artwork-card__price strong{font-family:var(--font-display),sans-serif;font-size:1.35rem;font-weight:600;line-height:1;letter-spacing:-.03em;color:var(--color-text-primary)}.artwork-card__sold{position:absolute;inset:0;display:grid;place-items:center;background:color-mix(in srgb,var(--card) 74%,transparent);font-weight:700;text-transform:uppercase;letter-spacing:.16em}.event-map{padding:var(--space-4);height:100%;display:flex;flex-direction:column}.event-map__header{margin-bottom:var(--space-4);flex-shrink:0}.event-map__canvas{min-height:560px;flex:1;border-radius:var(--radius-md)}.event-map__canvas--full{min-height:0;border-radius:var(--radius-lg)}.route-planner{display:grid;gap:var(--space-4);padding:var(--space-4)}.route-planner__header{display:flex;flex-wrap:wrap;align-items:start;justify-content:space-between;gap:var(--space-4)}.route-planner__title{margin:var(--space-2) 0 0;font-family:var(--font-display),serif;font-size:clamp(1.8rem,4vw,2.5rem);line-height:.98;letter-spacing:-.03em}.route-planner__stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--space-3)}.route-planner__stat{display:grid;gap:var(--space-1);padding:var(--space-3);border:1px solid color-mix(in srgb,var(--border) 84%,transparent);border-radius:var(--radius-md);background:color-mix(in srgb,var(--card) 88%,transparent)}.route-planner__stat span{color:var(--color-text-muted);font-size:.72rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase}.route-planner__stat strong{font-family:var(--font-display),serif;font-size:1.65rem;line-height:1;letter-spacing:-.03em}.route-planner__stops{display:grid;gap:var(--space-2);margin:0;padding:0;list-style:none}.route-stop{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--space-3);width:100%;padding:var(--space-3);border:1px solid color-mix(in srgb,var(--border) 82%,transparent);border-radius:var(--radius-md);background:color-mix(in srgb,var(--card) 92%,transparent);color:inherit;text-align:left;cursor:pointer;transition:transform var(--motion-base) var(--motion-easing),border-color var(--motion-base) var(--motion-easing),box-shadow var(--motion-base) var(--motion-easing)}.route-stop:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--primary) 30%,var(--border));box-shadow:var(--shadow-soft)}.route-stop__index{display:grid;place-items:center;width:calc(var(--space-8) + var(--space-1));height:calc(var(--space-8) + var(--space-1));border-radius:999px;background:color-mix(in srgb,var(--primary) 16%,transparent);color:var(--color-brand-primary);font-weight:800}.route-stop__body{display:grid;gap:var(--space-1);min-width:0}.route-stop__body strong{font-size:1rem}.route-stop__body span,.route-stop__meta{color:var(--color-text-secondary);font-size:.92rem}.route-stop__meta{font-weight:700;white-space:nowrap}@media (max-width:720px){.route-stop{grid-template-columns:auto 1fr}.route-stop__meta{grid-column:2}}.map-popup-wrapper .leaflet-popup-content-wrapper{border-radius:var(--radius-md);box-shadow:0 4px 20px rgba(0,0,0,.12);padding:0;overflow:hidden}.map-popup-wrapper .leaflet-popup-content{margin:0;width:auto!important}.map-popup{min-width:240px;max-width:280px}.map-popup img{width:100%;height:140px;-o-object-fit:cover;object-fit:cover;display:block}.map-popup>div{padding:12px}.map-popup h4{margin:0 0 4px;font-size:.875rem;font-weight:600;line-height:1.3}.map-popup p{margin:0;font-size:.75rem;color:var(--color-text-secondary)}.map-popup__cta{margin-top:8px!important;font-size:.75rem!important;font-weight:500;color:var(--color-brand-primary,var(--foreground))!important}.detail-panel{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4)}.detail-panel__actions{display:flex;flex-direction:column;gap:var(--space-2)}.detail-hero{display:grid;gap:var(--space-4)}.detail-hero__media{width:100%;min-height:260px;max-height:480px;-o-object-fit:cover;object-fit:cover;border-radius:var(--radius-md)}.detail-hero__copy{display:flex;flex-direction:column;gap:var(--space-3)}.detail-artists{font-size:.875rem;font-weight:600;color:var(--color-text-secondary)}.detail-media-strip{display:flex;gap:var(--space-2);overflow:auto;padding-bottom:var(--space-2);margin:var(--space-6) 0}.detail-media-strip__item{border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);overflow:hidden;min-width:100px;height:72px;padding:0;background:var(--color-surface-raised);cursor:pointer}.detail-media-strip__item--active{border-color:var(--color-brand-primary);box-shadow:var(--shadow-focus)}.detail-media-strip__item img,.detail-media-strip__item span{width:100%;height:100%;display:grid;place-items:center;-o-object-fit:cover;object-fit:cover}.detail-grid{display:grid;gap:var(--space-4)}.detail-list{display:grid;gap:var(--space-3)}.detail-list div{display:flex;flex-direction:column;gap:4px}.detail-list span{color:var(--color-text-muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.14em}.detail-chip-row{display:flex;flex-wrap:wrap;gap:8px}.related-artworks,.related-artworks__item{display:grid;gap:var(--space-3)}.related-artworks__item{grid-template-columns:84px 1fr auto;align-items:center;border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);padding:var(--space-3);background:var(--color-surface-raised);cursor:pointer}.related-artworks__item img{width:84px;height:84px;-o-object-fit:cover;object-fit:cover;border-radius:var(--radius-sm)}.artwork-detail{display:grid;gap:var(--space-6)}.artwork-detail__content,.artwork-detail__gallery{display:flex;flex-direction:column;gap:var(--space-4)}.artwork-detail__hero{overflow:hidden;border-radius:var(--radius-md);cursor:zoom-in}.artwork-detail__hero img{width:100%;max-height:520px;-o-object-fit:cover;object-fit:cover;transition:transform .3s cubic-bezier(.2,.8,.2,1);will-change:transform}.artwork-detail__thumb{padding:0;border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);overflow:hidden;cursor:pointer}.artwork-detail__thumb--active{border-color:var(--color-brand-primary)}.artwork-detail__thumb img{width:100%;aspect-ratio:1/1;-o-object-fit:cover;object-fit:cover}.detail-copy{gap:var(--space-4)}.about-page,.detail-copy{display:flex;flex-direction:column}.about-page{gap:var(--space-6)}.about-page__hero{padding:var(--space-8)}.about-page__grid{display:grid;gap:var(--space-4)}.auth-dialog__actions,.auth-dialog__fields{display:flex;flex-direction:column;gap:var(--space-3)}.admin-actions{display:flex;gap:var(--space-2);flex-wrap:wrap}.admin-form{padding:var(--space-4)}.admin-form__grid{display:grid;gap:var(--space-4)}.admin-form__actions{display:flex;justify-content:flex-end;gap:var(--space-2)}.admin-upload-grid{display:grid;gap:var(--space-4)}.admin-upload{display:flex;flex-direction:column;gap:var(--space-3)}.admin-table,.admin-upload{padding:var(--space-4)}.admin-table__header{display:flex;align-items:end;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-3)}@keyframes spin{to{transform:rotate(1turn)}}.events-masonry{position:relative}.events-masonry>*{position:absolute;transition:transform .3s ease}.artwork-card,.event-card{transition:transform var(--motion-base) var(--motion-easing),border-color var(--motion-base) var(--motion-easing),box-shadow var(--motion-base) var(--motion-easing)}.artwork-card:hover,.event-card:hover{transform:translateY(-3px);border-color:var(--color-border-strong);box-shadow:var(--shadow-medium)}@keyframes card-entrance{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.content-grid>*,.event-grid>.event-card,.events-masonry__item,[class*=grid-cols]>.artwork-card,[class*=grid-cols]>.event-card{animation:card-entrance var(--motion-slow) var(--motion-easing) both}.event-grid>:first-child,.events-masonry__item:first-child,[class*=grid-cols]>:first-child{animation-delay:0s}.event-grid>:nth-child(2),.events-masonry__item:nth-child(2),[class*=grid-cols]>:nth-child(2){animation-delay:60ms}.event-grid>:nth-child(3),.events-masonry__item:nth-child(3),[class*=grid-cols]>:nth-child(3){animation-delay:.12s}.event-grid>:nth-child(4),.events-masonry__item:nth-child(4),[class*=grid-cols]>:nth-child(4){animation-delay:.18s}.event-grid>:nth-child(5),.events-masonry__item:nth-child(5),[class*=grid-cols]>:nth-child(5){animation-delay:.24s}.event-grid>:nth-child(6),.events-masonry__item:nth-child(6),[class*=grid-cols]>:nth-child(6){animation-delay:.3s}.event-grid>:nth-child(7),.events-masonry__item:nth-child(7),[class*=grid-cols]>:nth-child(7){animation-delay:.36s}.event-grid>:nth-child(8),.events-masonry__item:nth-child(8),[class*=grid-cols]>:nth-child(8){animation-delay:.42s}@keyframes notice-slide-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes notice-slide-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(16px)}}@keyframes notice-progress{0%{width:100%}to{width:0}}.notice{animation:notice-slide-in var(--motion-base) var(--motion-easing) both;position:relative;overflow:hidden;display:flex;align-items:center;gap:var(--space-2)}.notice--exiting{animation:notice-slide-out var(--motion-fast) var(--motion-easing) both}.notice__icon{flex-shrink:0;width:18px;height:18px}.notice__progress{position:absolute;bottom:0;left:0;height:2px;background:rgba(255,255,255,.4);animation:notice-progress 4.2s linear both}@keyframes skeleton-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton{background:linear-gradient(90deg,var(--color-surface-muted) 25%,color-mix(in srgb,var(--secondary) 60%,var(--color-surface-muted)) 50%,var(--color-surface-muted) 75%);background-size:200% 100%;animation:skeleton-shimmer 1.6s ease-in-out infinite;border-radius:var(--radius-sm)}.skeleton--circle{border-radius:50%}.skeleton--rounded{border-radius:var(--radius-md)}.empty-state-enhanced{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-12) var(--space-6);gap:var(--space-4)}.empty-state-enhanced__icon{display:grid;place-items:center;width:64px;height:64px;border-radius:50%;background:var(--color-surface-muted);color:var(--color-text-muted);border:1px solid var(--color-border-subtle)}.empty-state-enhanced__title{margin:0;font-family:var(--font-display),sans-serif;font-size:clamp(1.4rem,3vw,1.85rem);line-height:.96;letter-spacing:-.04em}.empty-state-enhanced__body{color:var(--color-text-muted);max-width:32rem;line-height:1.6;font-size:.92rem}.empty-state-enhanced__decoration{width:48px;height:1px;background:linear-gradient(90deg,transparent,var(--color-border-subtle),transparent);margin:var(--space-1) 0}.lightbox{position:fixed;inset:0;z-index:150;display:grid;place-items:center;background:rgba(0,0,0,.92);animation:modal-backdrop-in var(--motion-base) var(--motion-easing) both}.lightbox__image{max-width:90vw;max-height:85vh;-o-object-fit:contain;object-fit:contain;animation:modal-panel-in var(--motion-slow) var(--motion-easing) both;-webkit-user-select:none;-moz-user-select:none;user-select:none}.lightbox__close{position:absolute;top:var(--space-4);right:var(--space-4);border:0;background:rgba(255,255,255,.12);color:#fff;width:40px;height:40px;border-radius:50%;cursor:pointer;display:grid;place-items:center;font-size:1.2rem;transition:background var(--motion-fast) var(--motion-easing)}.lightbox__close:hover{background:rgba(255,255,255,.22)}.lightbox__nav{position:absolute;top:50%;transform:translateY(-50%);border:0;background:rgba(255,255,255,.1);color:#fff;width:44px;height:44px;border-radius:50%;cursor:pointer;display:grid;place-items:center;font-size:1.1rem;transition:background var(--motion-fast) var(--motion-easing)}.lightbox__nav:hover{background:rgba(255,255,255,.22)}.lightbox__nav--prev{left:var(--space-4)}.lightbox__nav--next{right:var(--space-4)}.lightbox__counter{position:absolute;bottom:var(--space-4);left:50%;transform:translateX(-50%);color:rgba(255,255,255,.7);font-size:.78rem;font-weight:600;letter-spacing:.14em}.auth-dialog{display:flex;flex-direction:column;gap:var(--space-4)}.auth-dialog__hero{text-align:center;padding:0 0 var(--space-1)}.auth-dialog__title{font-size:1.25rem;font-weight:600;letter-spacing:-.025em;color:var(--color-text-primary);line-height:1.3}.auth-dialog__subtitle{font-size:.84rem;color:var(--color-text-muted);margin-top:4px}.auth-dialog__modes{display:inline-flex;gap:1px;padding:3px;border-radius:var(--radius-md);background:var(--color-surface-muted);align-self:center}.auth-dialog__mode{border:0;background:transparent;padding:6px 16px;cursor:pointer;color:var(--color-text-muted);border-radius:calc(var(--radius-md) - 2px);font-weight:500;font-size:.8rem;transition:color .15s ease,background .15s ease,box-shadow .15s ease}.auth-dialog__mode--active,.auth-dialog__mode:hover{color:var(--color-text-primary)}.auth-dialog__mode--active{background:var(--color-surface-base,var(--background));font-weight:600;box-shadow:0 1px 2px rgba(0,0,0,.06)}.auth-dialog__field{display:flex;flex-direction:column;gap:6px}.auth-dialog__label{font-size:.8rem;font-weight:500;color:var(--color-text-primary)}.auth-dialog__divider{display:flex;align-items:center;gap:var(--space-2);color:var(--color-text-muted);font-size:.75rem;font-weight:400}.auth-dialog__divider:after,.auth-dialog__divider:before{content:"";flex:1;height:1px;background:var(--color-border-subtle)}.auth-dialog__test-admin{border:0;background:transparent;color:var(--color-text-muted);font-size:.8rem;cursor:pointer;padding:4px 0;text-align:center;transition:color .15s ease}.auth-dialog__test-admin:hover{color:var(--color-text-primary)}@keyframes auth-field-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.auth-dialog__fields>*{animation:auth-field-in .2s ease both}.auth-dialog__fields>:first-child{animation-delay:30ms}.auth-dialog__fields>:nth-child(2){animation-delay:70ms}.auth-dialog__fields>:nth-child(3){animation-delay:.11s}.auth-dialog__fields>:nth-child(4){animation-delay:.15s}.auth-dialog__roles{display:flex;flex-direction:column;gap:6px}.auth-dialog__role-card{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);background:transparent;text-align:left;cursor:pointer;transition:border-color .15s ease,background .15s ease}.auth-dialog__role-card:hover{border-color:var(--color-text-muted)}.auth-dialog__role-card--active{border-color:var(--color-text-primary);background:var(--color-surface-muted)}.auth-dialog__role-dot{width:16px;height:16px;border-radius:50%;border:2px solid var(--color-border-subtle);flex-shrink:0;margin-top:2px;transition:border-color .15s ease,background .15s ease}.auth-dialog__role-card--active .auth-dialog__role-dot{border-color:var(--color-text-primary);background:var(--color-text-primary);box-shadow:inset 0 0 0 2.5px var(--color-surface-base,var(--background))}.auth-dialog__role-title{display:block;font-size:.8rem;font-weight:600;color:var(--color-text-primary)}.auth-dialog__role-desc{display:block;font-size:.75rem;color:var(--color-text-muted);line-height:1.4;margin-top:1px}.confirm-dialog__body{display:flex;flex-direction:column;gap:var(--space-4)}.confirm-dialog__message{color:var(--color-text-secondary);line-height:1.6}.confirm-dialog__actions{display:flex;justify-content:flex-end;gap:var(--space-2)}.leaflet-container{width:100%;height:100%;border-radius:var(--radius-md);z-index:1}.judooo-map-pin{width:40px!important;height:40px!important;margin-left:-20px!important;margin-top:-20px!important;background:transparent;border:0}.judooo-map-pin,.judooo-map-pin__disc{display:flex;align-items:center;justify-content:center}.judooo-map-pin__disc{position:relative;width:32px;height:32px;border-radius:50%;background:var(--color-brand-primary);color:var(--primary-foreground,#fff);border:2px solid #fff;box-shadow:0 2px 8px rgba(0,0,0,.3);font-size:.8125rem;font-weight:700;line-height:1;transition:transform .15s,box-shadow .15s}.judooo-map-pin:hover .judooo-map-pin__disc{transform:scale(1.1)}.judooo-map-pin__disc svg{width:16px;height:16px}.judooo-map-pin__count{position:absolute;top:-6px;right:-8px;min-width:18px;height:18px;padding:0 4px;border-radius:9px;background:var(--foreground,#111);color:var(--background,#fff);border:2px solid var(--background,#fff);font-size:.6875rem;font-weight:700;line-height:14px;text-align:center}.map-popup--list{min-width:240px;max-width:300px;max-height:260px;overflow-y:auto}.map-popup__list-head{padding:10px 12px 6px!important;font-weight:600;font-size:.8125rem}.map-popup__row{display:block;width:100%;padding:8px 12px!important;text-align:left;background:transparent;border:0;border-top:1px solid var(--border,rgba(0,0,0,.1));cursor:pointer;color:inherit}.map-popup__row:hover{background:var(--secondary,rgba(0,0,0,.05))}.map-popup__thumb{background:var(--secondary,#eee);min-height:60px}.map-note{z-index:500;right:12px;top:12px;max-width:min(260px,calc(100% - 24px));padding:6px 10px;color:var(--muted-foreground,var(--foreground));box-shadow:0 2px 8px rgba(0,0,0,.12);font-size:.75rem;line-height:1.3;pointer-events:none}.map-hover-card,.map-note{position:absolute;border-radius:var(--radius-md);background:var(--background);border:1px solid var(--border)}.map-hover-card{z-index:1000;transform:translate(-50%,calc(-100% - 14px));width:220px;box-shadow:0 8px 24px rgba(0,0,0,.14);overflow:hidden;pointer-events:auto}.map-hover-card__img{width:100%;height:120px;-o-object-fit:cover;object-fit:cover;display:block}.map-hover-card__body{padding:10px 12px}.map-hover-card__title{font-size:.8125rem;font-weight:600;line-height:1.3;margin:0 0 2px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.map-hover-card__sub{font-size:.72rem;color:var(--color-text-secondary);margin:0 0 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.map-hover-card__footer{display:flex;align-items:center;justify-content:space-between}.map-hover-card__link{font-size:.72rem;font-weight:500;color:var(--foreground)}.map-hover-card__link:hover{text-decoration:underline}.map-hover-card__heart{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-sm);color:var(--color-text-muted);transition:color .15s,background .15s}.map-hover-card__heart:hover{background:var(--secondary);color:var(--foreground)}.map-hover-card__heart--saved{color:#f43f5e}.map-hover-card__heart--saved:hover{color:#e11d48}.judooo-user-location{background:#3b82f6;border:3px solid #fff;border-radius:50%;box-shadow:0 0 0 3px rgba(59,130,246,.25),0 2px 8px rgba(0,0,0,.2)}.judooo-sovereignty-label{background:none!important;border:none!important}.judooo-sovereignty-label span{font-size:11px;font-weight:600;letter-spacing:.08em;color:var(--color-brand-primary);text-shadow:0 0 4px var(--background),0 0 4px var(--background),0 0 4px var(--background);white-space:nowrap;pointer-events:none}.judooo-sovereignty-label--lg span{font-size:14px;font-style:italic;letter-spacing:.2em;color:#4a7fb5;text-shadow:0 0 6px var(--background),0 0 6px var(--background),0 0 6px var(--background),0 0 6px var(--background)}@media (min-width:768px){.container{width:min(var(--container-width),calc(100% - 64px))}.main-shell__nav{display:flex}.main-shell__user-copy{display:block}.about-page__grid,.admin-upload-grid,.detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.artwork-detail,.detail-hero{grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);align-items:start}.admin-form__grid{grid-template-columns:repeat(2,minmax(0,1fr))}.sidebar-layout{grid-template-columns:minmax(0,1fr) 320px;align-items:start}}@media (max-width:767px){:root{--route-sheet-peek:45dvh}}@media (prefers-reduced-motion:reduce){.content-grid>*,.event-grid>.event-card,.events-masonry__item,[class*=grid-cols]>.event-card{animation:none}.event-card,.event-card:hover,.event-card:hover .event-card__image{transform:none}}