.leaflet-pane,.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile-container,.leaflet-pane>svg,.leaflet-pane>canvas,.leaflet-zoom-box,.leaflet-image-layer,.leaflet-layer{position:absolute;left:0;top:0}.leaflet-container{overflow:hidden}.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::selection{background:transparent}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer,.leaflet-container .leaflet-tile{max-width:none!important;max-height:none!important;width:auto;padding:0}.leaflet-container img.leaflet-tile{mix-blend-mode:plus-lighter}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4)}.leaflet-tile{filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;-moz-box-sizing:border-box;box-sizing:border-box;z-index:800}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto}.leaflet-top,.leaflet-bottom{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{float:left;clear:both}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-zoom-anim .leaflet-tile,.leaflet-pan-anim .leaflet-tile{-webkit-transition:none;-moz-transition:none;transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-popup-pane,.leaflet-control{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-image-layer,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-marker-icon.leaflet-interactive,.leaflet-image-layer.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{background:#ddd;outline-offset:1px}.leaflet-container a{color:#0078a8}.leaflet-zoom-box{border:2px dotted #38f;background:#ffffff80}.leaflet-container{font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:12px;font-size:.75rem;line-height:1.5}.leaflet-bar{box-shadow:0 1px 5px #000000a6;border-radius:4px}.leaflet-bar a{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;display:block;text-align:center;text-decoration:none;color:#000}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:hover,.leaflet-bar a:focus{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:700 18px Lucida Console,Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{box-shadow:0 1px 5px #0006;background:#fff;border-radius:5px}.leaflet-control-layers-toggle{background-image:url("./media/layers-55W3Q4RM.png");width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url("./media/layers-2x-TBM42ERR.png");background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden;padding-right:5px}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{display:block;font-size:13px;font-size:1.08333em}.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url("./media/marker-icon-2V3QKKVC.png")}.leaflet-container .leaflet-control-attribution{background:#fff;background:#fffc;margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover,.leaflet-control-attribution a:focus{text-decoration:underline}.leaflet-attribution-flag{display:inline!important;vertical-align:baseline!important;width:1em;height:.6669em}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;white-space:nowrap;-moz-box-sizing:border-box;box-sizing:border-box;background:#fffc;text-shadow:1px 1px #fff}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{box-shadow:none}.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.leaflet-popup-content{margin:13px 24px 13px 20px;line-height:1.3;font-size:13px;font-size:1.08333em;min-height:1px}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-top:-1px;margin-left:-20px;overflow:hidden;pointer-events:none}.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;pointer-events:auto;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;color:#333;box-shadow:0 3px 14px #0006}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;border:none;text-align:center;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;color:#757575;text-decoration:none;background:transparent}.leaflet-container a.leaflet-popup-close-button:hover,.leaflet-container a.leaflet-popup-close-button:focus{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto;-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";filter:progid:DXImageTransform.Microsoft.Matrix(M11=.70710678,M12=.70710678,M21=-.70710678,M22=.70710678)}.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;box-shadow:0 1px 3px #0006}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-top:before,.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{position:absolute;pointer-events:none;border:6px solid transparent;background:transparent;content:""}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{left:50%;margin-left:-6px}.leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%;margin-top:-6px}.leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}@media print{.leaflet-control{-webkit-print-color-adjust:exact;print-color-adjust:exact}}:root{color-scheme:light;--admin-bg: #f9f9ff;--surface: #ffffff;--surface-muted: #f4f6fb;--ink: #181c21;--ink-muted: #414752;--ink-soft: #5c5f61;--line: #e0e2ea;--line-strong: #cfd4df;--primary: #1976d2;--primary-strong: #005dac;--success: #2e7d32;--warning: #f9a825;--danger: #c62828;--info: #0277bd;--sidebar-width: 260px;--topbar-height: 64px;font-family:Inter,Segoe UI,Roboto,Arial,sans-serif}*{box-sizing:border-box}html,body{min-height:100%}body{margin:0;background:var(--admin-bg);color:var(--ink);font-family:Inter,Segoe UI,Roboto,Arial,sans-serif;font-size:14px;letter-spacing:0}button,input,select{font:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid rgba(25,118,210,.28);outline-offset:2px}a{color:var(--primary-strong);text-decoration:none}.btn{align-items:center;border:1px solid transparent;border-radius:8px;cursor:pointer;display:inline-flex;font-weight:700;gap:8px;min-height:40px;padding:0 14px;transition:background .16s ease,border-color .16s ease,color .16s ease,transform .16s ease}.btn:disabled{cursor:not-allowed;opacity:.54}.btn:not(:disabled):active{transform:translateY(1px)}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-strong)}.btn-light{background:#fff;border-color:var(--line);color:var(--ink-muted)}.btn-light:hover{border-color:var(--line-strong);color:var(--ink)}.admin-shell{display:grid;grid-template-columns:var(--sidebar-width) minmax(0,1fr);min-height:100vh}.sidebar{background:#fff;border-right:1px solid var(--line);min-height:100vh;padding:18px 14px;position:sticky;top:0;z-index:30}.sidebar .brand{align-items:center;border-bottom:1px solid var(--line);display:flex;gap:10px;margin-bottom:14px;padding:2px 8px 18px}.sidebar .brand img{border-radius:8px;height:38px;width:38px}.sidebar .brand strong{color:var(--ink);display:block;font-size:20px;line-height:1.15}.sidebar .brand span{color:var(--ink-soft);font-size:12px;font-weight:700;text-transform:uppercase}.sidebar nav{display:grid;gap:4px}.sidebar a{align-items:center;border-radius:8px;color:var(--ink-muted);display:flex;font-weight:700;gap:10px;min-height:42px;padding:0 10px}.sidebar a svg{color:var(--ink-soft);flex:0 0 auto}.sidebar a:hover{background:var(--surface-muted);color:var(--ink)}.sidebar a.active{background:#1976d21a;color:var(--primary-strong)}.sidebar a.active svg{color:var(--primary-strong)}.shell-main{min-width:0}.topbar{align-items:center;background:#fffffff5;border-bottom:1px solid var(--line);display:grid;gap:14px;grid-template-columns:auto minmax(120px,1fr) minmax(220px,360px) auto auto auto auto;height:var(--topbar-height);padding:0 24px;position:sticky;top:0;z-index:20}.topbar h2{font-size:18px;line-height:1.2;margin:0}.topbar select{background:#fff;border:1px solid var(--line);border-radius:8px;color:var(--ink-muted);height:38px;padding:0 10px}.nav-toggle{background:transparent;border:0;color:var(--ink-muted);cursor:pointer;display:none;padding:8px}.global-search,.search-input{align-items:center;background:#fff;border:1px solid var(--line);border-radius:8px;color:var(--ink-soft);display:flex;gap:8px;min-height:40px;padding:0 12px}.global-search input,.search-input input{background:transparent;border:0;color:var(--ink);min-width:0;outline:0;width:100%}.top-icon,.icon-action,.modal-close{align-items:center;background:#fff;border:1px solid var(--line);border-radius:8px;color:var(--ink-muted);cursor:pointer;display:inline-flex;height:38px;justify-content:center;position:relative;width:38px}.top-icon:hover,.icon-action:hover,.modal-close:hover{border-color:var(--line-strong);color:var(--ink)}.top-icon span{background:var(--danger);border-radius:999px;height:8px;position:absolute;right:9px;top:8px;width:8px}.profile{align-items:center;background:var(--primary);border-radius:999px;color:#fff;display:inline-flex;font-size:12px;font-weight:800;height:36px;justify-content:center;width:36px}main{display:grid;gap:22px;margin:0 auto;max-width:1180px;padding:28px 28px 40px}.page-header{align-items:flex-start;display:flex;gap:18px;justify-content:space-between}.page-header h1{font-size:36px;line-height:1.08;margin:0 0 8px}.page-header p{color:var(--ink-soft);font-size:15px;line-height:1.45;margin:0;max-width:720px}.page-header .eyebrow{color:var(--primary-strong);font-size:12px;font-weight:800;margin:0 0 8px;text-transform:uppercase}.page-actions{align-items:center;display:flex;flex:0 0 auto;gap:10px}.kpi-grid{display:grid;gap:14px;grid-template-columns:repeat(4,minmax(0,1fr))}.dashboard-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}.kpi-card,.panel,.table-card,.login-panel{background:var(--surface);border:1px solid var(--line);border-radius:8px}.kpi-card{display:grid;gap:12px;min-height:128px;padding:18px}.kpi-card strong{font-size:28px;line-height:1}.kpi-card small,.kpi-card span{color:var(--ink-soft)}.kpi-card small.good{color:var(--success)}.kpi-card small.bad{color:var(--danger)}.kpi-top{align-items:center;display:flex;justify-content:space-between}.kpi-top>span{font-size:12px;font-weight:800;text-transform:uppercase}.kpi-icon{align-items:center;background:#1976d21a;border-radius:8px;color:var(--primary-strong);display:inline-flex;height:34px;justify-content:center;width:34px}.chart-grid{display:grid;gap:16px;grid-template-columns:minmax(0,1.45fr) minmax(320px,.8fr)}.panel{padding:20px}.panel h2{font-size:20px;line-height:1.2;margin:0}.panel-heading{align-items:flex-start;display:flex;gap:12px;justify-content:space-between;margin-bottom:18px}.panel-heading span{color:var(--ink-soft);font-size:13px}.bar-chart{align-items:end;display:grid;gap:10px;grid-template-columns:repeat(14,minmax(22px,1fr));height:230px;padding-top:12px}.bar-chart div{align-items:center;display:grid;gap:8px;grid-template-rows:minmax(30px,1fr) auto;height:100%}.bar-chart span{align-self:end;background:linear-gradient(180deg,var(--primary),var(--primary-strong));border-radius:7px 7px 3px 3px;display:block;min-height:10px;width:100%;height:var(--value)}.bar-chart small{color:var(--ink-soft);font-size:11px;text-align:center}.donut{align-items:center;aspect-ratio:1;background:radial-gradient(circle at center,#ffffff 0 56%,transparent 57%),conic-gradient(var(--warning) 0 var(--pending),var(--success) var(--pending) 100%);border-radius:999px;display:flex;flex-direction:column;justify-content:center;margin:8px auto 18px;max-width:210px}.donut strong{font-size:34px}.donut span{color:var(--ink-soft);font-weight:700}.legend-row{display:flex;flex-wrap:wrap;gap:14px;justify-content:center}.legend-row span{align-items:center;color:var(--ink-muted);display:inline-flex;gap:6px}.legend-row i{border-radius:999px;display:inline-block;height:10px;width:10px}.legend-row .legend-ok{background:var(--success)}.legend-row .legend-alert{background:var(--warning)}.attention-panel{display:grid;gap:12px}.attention-item{border-left:4px solid var(--line-strong);border-radius:8px;padding:14px 16px}.attention-item strong{display:block;margin-bottom:4px}.attention-item p{color:var(--ink-soft);margin:0}.attention-item.danger{background:#c6282814;border-color:var(--danger)}.attention-item.warning{background:#f9a8251f;border-color:var(--warning)}.attention-item.success{background:#2e7d3214;border-color:var(--success)}.filter-bar{align-items:center;display:grid;gap:10px;grid-template-columns:minmax(240px,1fr) auto}.table-card{overflow:hidden}.table-wrap{overflow-x:auto}table{border-collapse:collapse;min-width:920px;width:100%}table th,table td{border-bottom:1px solid var(--line);padding:13px 16px;text-align:left;vertical-align:middle;white-space:nowrap}table th{background:#fbfcff;color:var(--ink-soft);font-size:12px;font-weight:800;text-transform:uppercase}table td{color:var(--ink-muted)}table tbody tr:hover{background:#fbfcff}.legal-page{color:var(--ink);margin:0 auto;max-width:860px;padding:40px 24px 64px}.legal-page header{align-items:center;border-bottom:1px solid var(--line);display:flex;gap:16px;margin-bottom:28px;padding-bottom:24px}.legal-page header img{border-radius:12px;height:64px;width:64px}.legal-page header p{color:var(--ink-soft);font-size:13px;font-weight:800;margin:0 0 4px;text-transform:uppercase}.legal-page header h1{font-size:34px;line-height:1.1;margin:0}.legal-page section{display:grid;gap:14px}.legal-page h2{font-size:18px;margin:18px 0 0}.legal-page p,.legal-page li{color:var(--ink-muted);font-size:16px;line-height:1.65}.legal-page a{color:var(--primary);font-weight:800}.legal-page .legal-updated{color:var(--ink-soft);font-size:13px;margin-top:20px}.status-badge{align-items:center;background:#eef1f6;border-radius:999px;color:var(--ink-muted);display:inline-flex;font-size:12px;font-weight:800;min-height:26px;padding:0 10px}.status-badge.success{background:#2e7d321a;color:var(--success)}.status-badge.info{background:#0277bd1a;color:var(--info)}.status-badge.warning{background:#f9a82529;color:#8a5d00}.status-badge.danger{background:#c628281a;color:var(--danger)}.pagination{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}.pagination span{color:var(--ink-soft);margin-right:auto}.empty-state,.error-state{align-items:center;color:var(--ink-soft);display:grid;justify-items:center;min-height:190px;padding:28px;text-align:center}.empty-state h3,.error-state h3{color:var(--ink);margin:10px 0 4px}.empty-state p,.error-state p{margin:0}.error-state{align-items:center;background:#c6282814;border:1px solid rgba(198,40,40,.18);border-radius:8px;color:var(--danger);display:flex;justify-content:flex-start;min-height:56px;text-align:left}.skeleton-grid{display:grid;gap:14px;grid-template-columns:repeat(4,minmax(0,1fr))}.skeleton-grid span{animation:pulse 1.25s ease-in-out infinite;background:linear-gradient(90deg,#eef1f6,#f7f8fc 46%,#eef1f6);border-radius:8px;height:124px}@keyframes pulse{0%{opacity:.65}50%{opacity:1}to{opacity:.65}}.detail-hero{align-items:center;display:flex;gap:20px;justify-content:space-between}.detail-hero h2{font-size:24px;margin:10px 0 4px}.detail-hero p{color:var(--ink-soft);margin:0}.detail-meta{display:grid;gap:6px;min-width:240px;text-align:right}.detail-meta span{color:var(--ink-soft);font-size:12px;font-weight:800;text-transform:uppercase}.detail-meta code{background:var(--surface-muted);border-radius:8px;color:var(--ink-muted);overflow-wrap:anywhere;padding:10px}.tabs-panel{display:grid;gap:16px}.tabs{border-bottom:1px solid var(--line);display:flex;gap:4px;overflow-x:auto}.tabs button{background:transparent;border:0;border-bottom:3px solid transparent;color:var(--ink-soft);cursor:pointer;font-weight:800;padding:12px 16px;white-space:nowrap}.tabs button.active{border-color:var(--primary);color:var(--primary-strong)}.settings-grid{display:grid;gap:16px;grid-template-columns:repeat(2,minmax(0,1fr))}.admin-form,.admin-actions{display:grid;gap:16px}.admin-form h2,.admin-actions h2{font-size:18px}.form-grid{display:grid;gap:12px;grid-template-columns:repeat(3,minmax(0,1fr))}.form-grid.compact{align-items:end;grid-template-columns:minmax(220px,1fr) auto auto auto}.form-grid label{color:var(--ink-muted);display:grid;font-weight:800;gap:7px}.form-grid input,.form-grid select{background:#fff;border:1px solid var(--line);border-radius:8px;color:var(--ink);min-height:40px;padding:0 10px}.form-grid .check-row{align-items:center;display:flex;gap:8px;min-height:40px}.form-grid .check-row input{min-height:auto;width:auto}.form-actions{display:flex;flex-wrap:wrap;gap:10px}.action-message{background:#1976d214;border:1px solid rgba(25,118,210,.18);border-radius:8px;color:var(--primary-strong);font-weight:800;margin:0;padding:12px 14px}.settings-list,.photo-meta dl{display:grid;gap:12px}.settings-list div,.photo-meta dl div{align-items:start;border-bottom:1px solid var(--line);display:grid;gap:10px;grid-template-columns:minmax(120px,.42fr) minmax(0,1fr);padding-bottom:12px}.settings-list dt,.photo-meta dl dt{color:var(--ink-soft);font-size:12px;font-weight:800;text-transform:uppercase}.settings-list dd,.photo-meta dl dd{color:var(--ink-muted);margin:0;overflow-wrap:anywhere}.modal-backdrop{align-items:center;background:#181c2194;display:flex;inset:0;justify-content:center;padding:24px;position:fixed;z-index:60}.photo-modal{background:#fff;border-radius:8px;display:grid;gap:20px;grid-template-columns:minmax(300px,.95fr) minmax(300px,.75fr);max-height:min(760px,100vh - 48px);max-width:1040px;overflow:auto;padding:20px;position:relative;width:min(100%,1040px)}.modal-close{height:34px;padding:0 12px;position:absolute;right:16px;top:16px;width:auto}.photo-stage{align-items:center;aspect-ratio:4/3;background:linear-gradient(135deg,#1976d22e,#2e7d321f),#eef1f6;border-radius:8px;color:var(--primary-strong);display:flex;font-size:64px;font-weight:900;justify-content:center;min-height:300px;overflow:hidden}.photo-stage img{height:100%;object-fit:contain;width:100%}.photo-stage.has-image span{display:none}.photo-meta{padding-right:20px}.photo-meta h2{font-size:22px;margin:0 0 12px;padding-right:78px;overflow-wrap:anywhere}.photo-meta p{color:var(--ink-muted);line-height:1.55}.login-screen{align-items:center;background:linear-gradient(180deg,#f9f9fff0,#f9f9fffa),url(/icon-512.png) center/220px no-repeat;display:flex;justify-content:center;min-height:100vh;padding:24px}.login-panel{display:grid;gap:16px;max-width:420px;padding:30px;width:100%}.login-panel .brand-mark{align-items:center;background:transparent;border-radius:8px;display:inline-flex;height:56px;justify-content:center;overflow:hidden;width:56px}.login-panel .brand-mark img{display:block;height:56px;width:56px}.login-panel h1{font-size:28px;line-height:1.15;margin:0}.login-panel p{color:var(--ink-soft);margin:0}.login-panel label{color:var(--ink-muted);display:grid;font-weight:800;gap:8px}.login-panel .google-login-slot{display:flex;min-height:44px}.login-panel .login-divider{align-items:center;color:var(--ink-soft);display:grid;font-size:12px;font-weight:800;gap:10px;grid-template-columns:1fr auto 1fr;text-transform:uppercase}.login-panel .login-divider:before,.login-panel .login-divider:after{background:var(--line);content:"";height:1px}.login-panel input{border:1px solid var(--line);border-radius:8px;color:var(--ink);min-height:42px;padding:0 12px}.login-panel .error-copy{color:var(--danger);font-weight:700}.portal-shell,.portal-login-screen,.portal-page,.portal-map-page{--portal-green-900: #00342b;--portal-green-800: #004d40;--portal-green-300: #7ebdac;--portal-mint: #afefdd;--portal-bg: #fdf9f2;--portal-sidebar-bg: #f2ede7;--portal-surface: #ffffff;--portal-surface-alt: #f7f3ec;--portal-border: #bfc9c4;--portal-text: #1c1c18;--portal-muted: #3f4945;--portal-gold: #d8a84f;--portal-danger: #b23b32;--portal-shadow: 0 18px 48px rgba(0, 52, 43, .12);color:var(--portal-text);font-family:Inter,Segoe UI,Roboto,Arial,sans-serif}.portal-primary,.portal-secondary,.portal-danger{align-items:center;border-radius:10px;cursor:pointer;display:inline-flex;font-weight:800;gap:8px;justify-content:center;min-height:42px;padding:0 16px;text-decoration:none;transition:background .16s ease,border-color .16s ease,color .16s ease,transform .16s ease}.portal-primary:disabled,.portal-secondary:disabled,.portal-danger:disabled{cursor:not-allowed;opacity:.58}.portal-primary:not(:disabled):active,.portal-secondary:not(:disabled):active,.portal-danger:not(:disabled):active{transform:translateY(1px)}.portal-primary{background:var(--portal-green-800);border:1px solid var(--portal-green-800);color:#fff}.portal-primary:hover{background:var(--portal-green-900);border-color:var(--portal-green-900)}.portal-secondary{background:#ffffffb3;border:1px solid var(--portal-border);color:var(--portal-green-900)}.portal-secondary:hover{background:#fff;border-color:var(--portal-green-300)}.portal-danger{background:#b23b321a;border:1px solid rgba(178,59,50,.28);color:var(--portal-danger)}.portal-danger:hover{background:#b23b3229}.portal-login-screen{align-items:center;background:linear-gradient(90deg,#00342bdb,#004d4094),radial-gradient(circle at 82% 18%,rgba(126,189,172,.34),transparent 28%),var(--portal-bg);display:grid;grid-template-rows:auto 1fr auto;min-height:100vh;padding:24px}.portal-login-screen.compact{grid-template-rows:1fr}.portal-login-screen footer{color:#ffffffd6;font-weight:700;text-align:center}.portal-login-topbar{align-self:start}.portal-login-topbar a{color:#fff;font-size:22px;font-weight:900}.portal-login-panel{align-self:center;background:#fdf9f2fa;border:1px solid rgba(255,255,255,.42);border-radius:16px;box-shadow:var(--portal-shadow);display:grid;gap:22px;justify-self:end;margin-right:min(8vw,120px);max-width:460px;padding:34px;width:min(100%,460px)}.portal-login-panel form,.portal-login-panel label{display:grid;gap:9px}.portal-login-panel label{color:var(--portal-muted);font-weight:800}.login-title-block{display:grid;gap:8px}.login-title-block h1{color:var(--portal-green-900);font-size:34px;line-height:1.08;margin:0}.login-title-block p{color:var(--portal-muted);font-size:15px;line-height:1.5;margin:0}.portal-field{align-items:center;background:#fff;border:1px solid var(--portal-border);border-radius:12px;display:grid;gap:8px;grid-template-columns:auto minmax(0,1fr) auto;min-height:48px;padding:0 12px}.portal-field svg{color:var(--portal-muted)}.portal-field input{background:transparent;border:0;color:var(--portal-text);min-width:0;outline:0}.password-toggle{align-items:center;background:transparent;border:0;color:var(--portal-muted);cursor:pointer;display:inline-flex;justify-content:center;padding:6px}.forgot-link{color:var(--portal-green-800);font-weight:800;justify-self:end}.portal-login-submit{align-items:center;background:var(--portal-green-900);border:0;border-radius:12px;color:#fff;cursor:pointer;display:inline-flex;font-weight:900;justify-content:center;min-height:50px;padding:0 18px}.portal-login-submit.as-link{text-decoration:none}.portal-login-submit:disabled{cursor:not-allowed;opacity:.56}.portal-form-error{background:#b23b321a;border:1px solid rgba(178,59,50,.22);border-radius:10px;color:var(--portal-danger);font-weight:800;margin:0;padding:12px 14px}.portal-divider{align-items:center;color:var(--portal-muted);display:grid;font-size:12px;font-weight:900;gap:10px;grid-template-columns:1fr auto 1fr}.portal-divider:before,.portal-divider:after{background:var(--portal-border);content:"";height:1px}.portal-google-slot{min-height:44px}.portal-google-slot.empty{display:none}.portal-google-fallback{align-items:center;background:#fff;border:1px solid var(--portal-border);border-radius:12px;color:var(--portal-text);cursor:pointer;display:inline-flex;font-weight:900;gap:10px;justify-content:center;min-height:46px;width:100%}.portal-google-fallback span{align-items:center;border:1px solid var(--portal-border);border-radius:999px;color:#4285f4;display:inline-flex;font-weight:900;height:24px;justify-content:center;width:24px}.portal-config-hint{color:var(--portal-muted);font-size:12px;font-weight:800;margin:-8px 0 0;text-align:center}.portal-shell{background:var(--portal-bg);display:grid;grid-template-columns:256px minmax(0,1fr);min-height:100vh}.portal-sidebar{background:var(--portal-sidebar-bg);border-right:1px solid rgba(191,201,196,.86);display:grid;grid-template-rows:auto auto 1fr auto;min-height:100vh;padding:20px 16px;position:sticky;top:0;z-index:35}.portal-brand{align-items:center;color:var(--portal-green-900);display:flex;gap:12px;margin-bottom:18px}.portal-brand img{border-radius:13px;height:44px;width:44px}.portal-brand strong{display:block;font-size:22px;line-height:1.1}.portal-brand small{color:var(--portal-muted);font-size:12px;font-weight:800}.portal-upload-button{align-items:center;background:var(--portal-green-900);border:0;border-radius:12px;color:#fff;cursor:pointer;display:inline-flex;font-weight:900;gap:8px;justify-content:center;margin-bottom:16px;min-height:44px}.portal-nav,.portal-sidebar-footer{display:grid;gap:6px}.portal-nav a,.portal-nav button,.portal-sidebar-footer a,.portal-sidebar-footer button{align-items:center;background:transparent;border:0;border-radius:10px;color:var(--portal-muted);cursor:pointer;display:flex;font:inherit;font-weight:800;gap:10px;min-height:42px;padding:0 12px;text-align:left}.portal-nav a:hover,.portal-nav button:hover,.portal-sidebar-footer a:hover,.portal-sidebar-footer button:hover{background:#ffffffb8;color:var(--portal-green-900)}.portal-nav a.active,.portal-nav button.active,.portal-sidebar-footer a.active,.portal-sidebar-footer button.active{background:#fff;box-shadow:0 10px 26px #00342b14;color:var(--portal-green-900)}.portal-sidebar-footer{border-top:1px solid rgba(191,201,196,.8);padding-top:14px}.portal-body{min-width:0}.portal-topbar{align-items:center;background:#fdf9f2eb;border-bottom:1px solid rgba(191,201,196,.72);display:grid;gap:14px;grid-template-columns:auto minmax(220px,1fr) auto auto auto auto auto;min-height:64px;padding:0 24px;position:sticky;top:0;z-index:30}.portal-menu{background:transparent;border:0;cursor:pointer;display:none;gap:4px;padding:8px}.portal-menu span{background:var(--portal-green-900);border-radius:999px;display:block;height:2px;width:20px}.portal-search{align-items:center;background:#fff;border:1px solid var(--portal-border);border-radius:12px;display:grid;gap:8px;grid-template-columns:auto minmax(0,1fr);min-height:42px;padding:0 12px}.portal-search input{background:transparent;border:0;color:var(--portal-text);min-width:0;outline:0}.portal-topnav{align-items:center;display:flex;gap:4px}.portal-topnav a{border-radius:999px;color:var(--portal-muted);font-weight:800;padding:9px 12px;white-space:nowrap}.portal-topnav a:hover,.portal-topnav a.active{background:#7ebdac38;color:var(--portal-green-900)}.portal-new-button,.portal-icon-button,.portal-avatar{align-items:center;border:1px solid var(--portal-border);border-radius:999px;cursor:pointer;display:inline-flex;justify-content:center}.portal-new-button{background:var(--portal-green-800);color:#fff;font-weight:900;gap:7px;min-height:40px;padding:0 14px}.portal-icon-button{background:#fff;color:var(--portal-muted);height:40px;width:40px}.portal-avatar{background:var(--portal-green-900);color:#fff;font-weight:900;height:40px;overflow:hidden;width:40px}.portal-avatar img{height:100%;object-fit:cover;width:100%}.portal-search-popover{background:#fff;border:1px solid var(--portal-border);border-radius:14px;box-shadow:var(--portal-shadow);display:grid;gap:12px;max-height:min(540px,100vh - 82px);overflow:auto;padding:16px;position:absolute;right:128px;top:58px;width:min(560px,100vw - 32px)}.portal-search-popover h3{color:var(--portal-green-900);font-size:13px;margin:0 0 8px;text-transform:uppercase}.portal-search-popover button:not(.popover-close){background:var(--portal-surface-alt);border:1px solid transparent;border-radius:10px;cursor:pointer;display:grid;gap:4px;margin-bottom:6px;padding:10px 12px;text-align:left;width:100%}.portal-search-popover button:not(.popover-close):hover{border-color:var(--portal-green-300)}.portal-search-popover strong,.portal-search-popover span{overflow-wrap:anywhere}.popover-close{background:transparent;border:0;color:var(--portal-green-800);cursor:pointer;font-weight:900;justify-self:end}.portal-page{background:var(--portal-bg);display:grid;gap:22px;margin:0;max-width:none;min-height:calc(100vh - 64px);padding:30px;width:100%}.portal-page-header,.project-detail-hero,.collection-header{align-items:flex-start;display:flex;gap:18px;justify-content:space-between}.portal-page-header h1,.project-detail-hero h1,.collection-header h1{color:var(--portal-green-900);font-size:34px;line-height:1.08;margin:0 0 8px}.portal-page-header p,.project-detail-hero p,.collection-header p{color:var(--portal-muted);font-size:15px;line-height:1.5;margin:0;max-width:760px}.portal-page-header>span,.project-detail-hero>span,.collection-header>span{color:var(--portal-muted);font-size:12px;font-weight:900;text-transform:uppercase}.project-detail-hero>div:last-child,.collection-header>div:last-child{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}.collection-header nav{color:var(--portal-muted);font-weight:800;margin-bottom:8px}.collection-header nav a{color:var(--portal-green-800)}.collection-header div div{display:flex;flex-wrap:wrap;gap:10px}.collection-header div div span{background:#7ebdac2e;border:1px solid rgba(126,189,172,.32);border-radius:999px;color:var(--portal-green-900);font-size:12px;font-weight:900;padding:6px 10px}.portal-summary-grid,.project-card-grid,.collection-card-grid,.portal-skeleton-grid{display:grid;gap:16px}.portal-summary-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.portal-summary-grid article{background:#fff;border:1px solid rgba(191,201,196,.76);border-radius:16px;box-shadow:0 10px 28px #00342b0f;display:grid;gap:12px;min-height:154px;padding:20px}.portal-summary-grid div{align-items:center;display:flex;justify-content:space-between}.portal-summary-grid svg{color:var(--portal-green-800)}.portal-summary-grid small{color:var(--portal-muted);font-weight:800}.portal-summary-grid span{color:var(--portal-muted);font-size:12px;font-weight:900;text-transform:uppercase}.portal-summary-grid strong{color:var(--portal-green-900);font-size:30px;line-height:1.1}.portal-summary-grid em{color:var(--portal-muted);display:block;font-size:13px;font-style:normal;margin-top:4px}.portal-summary-grid p{color:var(--portal-muted);margin:0}.storage-meter{background:var(--portal-surface-alt);border-radius:999px;height:10px;overflow:hidden}.storage-meter i{background:linear-gradient(90deg,var(--portal-green-300),var(--portal-green-800));border-radius:inherit;display:block;height:100%}.portal-upload-banner{align-items:center;background:linear-gradient(90deg,#00342bf0,#004d40d6),var(--portal-green-900);border-radius:16px;color:#fff;display:flex;gap:18px;justify-content:space-between;padding:22px}.portal-upload-banner h2{font-size:24px;margin:0 0 6px}.portal-upload-banner p{color:#ffffffd1;margin:0}.portal-upload-banner .portal-primary{background:#fff;border-color:#fff;color:var(--portal-green-900)}.portal-section-heading{align-items:center;display:flex;gap:12px;justify-content:space-between}.portal-section-heading h2{color:var(--portal-green-900);font-size:22px;margin:0}.portal-section-heading a{color:var(--portal-green-800);font-weight:900}.portal-section-heading select{background:#fff;border:1px solid var(--portal-border);border-radius:10px;color:var(--portal-text);min-height:40px;padding:0 12px}.project-card-grid,.collection-card-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.project-card,.collection-card,.collection-list article{background:#fff;border:1px solid rgba(191,201,196,.76);border-radius:16px;box-shadow:0 10px 28px #00342b0f;color:var(--portal-text);overflow:hidden;position:relative}.project-card,.collection-card{display:grid}.project-card>a,.collection-card>a{color:inherit}.project-card>div:not(.photo-mosaic),.collection-card>div:not(.photo-mosaic){display:grid;gap:10px;padding:16px}.project-card header,.project-card footer,.collection-card header,.collection-card footer{align-items:center;display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between}.project-card h3,.collection-card h3{color:var(--portal-green-900);font-size:18px;line-height:1.22;margin:0;overflow-wrap:anywhere}.project-card p,.collection-card p{color:var(--portal-muted);line-height:1.5;margin:0;min-height:44px}.project-card footer span,.collection-card footer span{color:var(--portal-muted);font-size:12px;font-weight:800}.project-card footer button,.collection-card footer button{background:transparent;border:1px solid var(--portal-border);border-radius:999px;color:var(--portal-muted);cursor:pointer;height:34px;width:34px}.photo-mosaic{aspect-ratio:16/10;background:var(--portal-surface-alt);display:grid;gap:3px;grid-template-columns:1.5fr 1fr;min-height:150px;overflow:hidden}.photo-mosaic.compact{aspect-ratio:4/3;min-height:112px}.photo-mosaic div:first-child{grid-row:span 2}.photo-mosaic div{align-items:center;background:linear-gradient(135deg,#7ebdac3d,#d8a84f33);display:flex;justify-content:center;min-width:0;overflow:hidden}.photo-mosaic img{height:100%;object-fit:cover;width:100%}.photo-mosaic span{color:var(--portal-green-900);font-weight:900}.portal-skeleton-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.portal-skeleton-grid span{animation:pulse 1.25s ease-in-out infinite;background:linear-gradient(90deg,#ede7dd,#f8f3ea 48%,#ede7dd);border-radius:16px;height:170px}.portal-filter-row{align-items:center;background:#fff;border:1px solid rgba(191,201,196,.76);border-radius:14px;display:flex;flex-wrap:wrap;gap:10px;padding:12px}.portal-filter-row span{color:var(--portal-muted);font-weight:900}.portal-filter-row button{background:var(--portal-surface-alt);border:1px solid transparent;border-radius:999px;color:var(--portal-muted);cursor:pointer;font-weight:900;min-height:36px;padding:0 13px}.portal-filter-row button.active,.portal-filter-row button:hover{background:#7ebdac3d;border-color:#7ebdac70;color:var(--portal-green-900)}.portal-filter-row label{flex:1 1 260px}.portal-filter-row input,.portal-filter-row select{background:#fff;border:1px solid var(--portal-border);border-radius:10px;color:var(--portal-text);min-height:40px;padding:0 12px;width:100%}.context-menu{background:#fff;border:1px solid var(--portal-border);border-radius:12px;box-shadow:var(--portal-shadow);display:grid;min-width:190px;padding:8px;position:absolute;right:12px;top:214px;z-index:4}.context-menu button{background:transparent;border:0;border-radius:8px;color:var(--portal-text);cursor:pointer;font:inherit;font-weight:800;padding:10px;text-align:left}.context-menu button:hover{background:var(--portal-surface-alt)}.context-menu button.danger{color:var(--portal-danger)}.portal-form{background:#fff;border:1px solid rgba(191,201,196,.76);border-radius:16px;display:grid;gap:16px;max-width:860px;padding:22px}.portal-form label{color:var(--portal-muted);display:grid;font-weight:900;gap:8px}.portal-form input,.portal-form textarea,.portal-form select{background:var(--portal-bg);border:1px solid var(--portal-border);border-radius:10px;color:var(--portal-text);min-height:42px;padding:10px 12px;resize:vertical;width:100%}.portal-form h2{color:var(--portal-green-900);font-size:22px;margin:0}.portal-form p{color:var(--portal-muted);line-height:1.55;margin:0}.portal-form .action-message{background:#afefdd5c;border-color:#004d402e;color:var(--portal-green-900)}.form-two{display:grid;gap:14px;grid-template-columns:repeat(2,minmax(0,1fr))}.portal-check-grid{display:grid;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr))}.portal-check-grid label{align-items:center;background:var(--portal-surface-alt);border:1px solid transparent;border-radius:10px;display:flex;min-height:44px;padding:0 12px}.portal-check-grid input{width:auto}.form-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}.collection-list{display:grid;gap:14px}.collection-list article{align-items:center;cursor:pointer;display:grid;gap:16px;grid-template-columns:180px minmax(0,1fr);padding:12px}.collection-list h3{color:var(--portal-green-900);font-size:19px;margin:0 0 6px}.collection-list p{color:var(--portal-muted);line-height:1.5;margin:0 0 12px}.collection-list footer{display:flex;flex-wrap:wrap;gap:10px}.collection-list footer span{color:var(--portal-muted);font-size:12px;font-weight:800}.collection-workspace{gap:18px}.collection-tools{align-items:center;background:#fff;border:1px solid rgba(191,201,196,.76);border-radius:14px;display:grid;gap:10px;grid-template-columns:auto minmax(220px,1fr) auto auto;padding:12px}.collection-tools h2{color:var(--portal-green-900);font-size:18px;margin:0}.collection-tools input{background:var(--portal-bg);border:1px solid var(--portal-border);border-radius:10px;min-height:40px;padding:0 12px;width:100%}.collection-tools button{background:var(--portal-surface-alt);border:1px solid var(--portal-border);border-radius:10px;color:var(--portal-muted);cursor:pointer;height:40px;width:40px}.collection-tools button.active{background:var(--portal-green-900);color:#fff}.collection-main{display:grid;gap:18px;grid-template-columns:minmax(360px,1.02fr) minmax(360px,.98fr);min-height:580px}.photo-list-panel{background:#fff;border:1px solid rgba(191,201,196,.76);border-radius:16px;display:grid;gap:8px;max-height:calc(100vh - 292px);min-height:420px;overflow:auto;padding:12px}.photo-list-panel.grid-mode{align-content:start;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.photo-list-panel.grid-mode .photo-row{align-content:start;grid-template-columns:1fr;min-height:220px;text-align:left}.photo-list-panel.grid-mode .photo-row img,.photo-list-panel.grid-mode .photo-row .photo-placeholder{height:132px;width:100%}.photo-row{align-items:center;background:var(--portal-surface-alt);border:1px solid transparent;border-radius:12px;color:var(--portal-text);cursor:pointer;display:grid;gap:10px;grid-template-columns:72px minmax(0,1fr) auto auto auto;min-height:86px;padding:8px;text-align:left}.photo-row:hover,.photo-row.selected{border-color:var(--portal-green-300);box-shadow:0 8px 22px #00342b14}.photo-row img,.photo-row .photo-placeholder{background:#7ebdac38;border-radius:10px;height:68px;object-fit:cover;width:72px}.photo-row .photo-placeholder{align-items:center;color:var(--portal-green-900);display:flex;font-weight:900;justify-content:center}.photo-row strong{overflow-wrap:anywhere}.photo-row small{color:var(--portal-muted);font-weight:700}.photo-row i{background:#afefddb8;border-radius:999px;color:var(--portal-green-900);font-size:11px;font-style:normal;font-weight:900;padding:5px 8px}.collection-map-panel{background:#fff;border:1px solid rgba(191,201,196,.76);border-radius:16px;display:grid;grid-template-rows:auto minmax(360px,1fr) auto;overflow:hidden}.collection-map-panel header{align-items:center;display:flex;justify-content:space-between;padding:14px}.collection-map-panel header h2{color:var(--portal-green-900);font-size:18px;margin:0}.collection-map-panel header button{background:var(--portal-surface-alt);border:1px solid var(--portal-border);border-radius:999px;color:var(--portal-green-900);cursor:pointer;font-weight:900;min-height:34px;padding:0 12px}.collection-map-panel p{color:var(--portal-muted);margin:0;padding:12px 14px}.portal-map-canvas{background:var(--portal-surface-alt);height:100%;min-height:360px;width:100%}.photo-pin{background:transparent;border:0}.photo-pin .pin-card{align-items:center;background:#fff;border:3px solid var(--portal-green-900);border-radius:14px;box-shadow:0 12px 28px #00342b3d;display:flex;height:58px;justify-content:center;overflow:hidden;width:58px}.photo-pin .pin-card.is-selected{border-color:var(--portal-gold)}.photo-pin img{height:100%;object-fit:cover;width:100%}.photo-pin .pin-placeholder{color:var(--portal-green-900);font-weight:900}.photo-pin .pin-pointer{border-left:8px solid transparent;border-right:8px solid transparent;border-top:12px solid var(--portal-green-900);display:block;height:0;margin:-1px auto 0;width:0}.photo-pin .pin-cluster{align-items:center;background:var(--portal-green-900);border:3px solid #ffffff;border-radius:999px;box-shadow:0 10px 26px #00342b38;color:#fff;display:flex;font-weight:900;height:46px;justify-content:center;width:46px}.portal-map-page{background:var(--portal-bg);display:grid;grid-template-columns:minmax(320px,380px) minmax(0,1fr);height:calc(100vh - 64px);margin:0;max-width:none;padding:0;width:100%}.portal-map-page>.portal-map-canvas{min-height:calc(100vh - 64px)}.map-side-panel{background:#fdf9f2fa;border-right:1px solid var(--portal-border);display:grid;grid-template-rows:auto auto minmax(0,1fr);min-width:0;overflow:hidden;padding:18px;z-index:5}.map-side-panel.collapsed{grid-template-rows:auto}.map-side-panel.collapsed .portal-filter-column,.map-side-panel.collapsed .visible-photo-list{display:none}.map-side-panel header{align-items:flex-start;display:flex;gap:12px;justify-content:space-between}.map-side-panel header h1{color:var(--portal-green-900);font-size:28px;line-height:1.1;margin:0 0 6px}.map-side-panel header p{color:var(--portal-muted);margin:0}.map-side-panel header button{background:#fff;border:1px solid var(--portal-border);border-radius:999px;color:var(--portal-green-900);cursor:pointer;font-weight:900;min-height:34px;padding:0 12px}.portal-filter-column{display:grid;gap:10px;padding:16px 0}.portal-filter-column input,.portal-filter-column select,.portal-filter-column button{border:1px solid var(--portal-border);border-radius:10px;color:var(--portal-text);min-height:40px;padding:0 12px;width:100%}.portal-filter-column button{background:var(--portal-green-800);color:#fff;cursor:pointer;font-weight:900}.visible-photo-list{display:grid;gap:8px;overflow:auto}.visible-photo-list button{align-items:center;background:#fff;border:1px solid rgba(191,201,196,.76);border-radius:12px;cursor:pointer;display:grid;gap:10px;grid-template-columns:54px minmax(0,1fr);min-height:66px;padding:6px;text-align:left}.visible-photo-list button:hover{border-color:var(--portal-green-300)}.visible-photo-list img{border-radius:9px;height:54px;object-fit:cover;width:54px}.visible-photo-list strong,.visible-photo-list small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.visible-photo-list small{color:var(--portal-muted)}.drawer-backdrop{background:#1c1c186b;inset:0;position:fixed;z-index:70}.photo-drawer{background:#fff;box-shadow:-18px 0 48px #00342b38;display:grid;gap:16px;height:100vh;max-width:min(560px,100vw);overflow:auto;padding:20px;position:fixed;right:0;top:0;width:560px;z-index:71}.photo-drawer h2{color:var(--portal-green-900);font-size:22px;margin:0;overflow-wrap:anywhere}.drawer-close{align-items:center;background:#fff;border:1px solid var(--portal-border);border-radius:999px;color:var(--portal-muted);cursor:pointer;display:inline-flex;height:38px;justify-content:center;justify-self:end;width:38px;z-index:2}.photo-viewer{align-items:center;background:var(--portal-surface-alt);border-radius:16px;display:flex;justify-content:center;min-height:320px;overflow:auto}.photo-viewer img{max-height:68vh;max-width:100%;object-fit:contain}.photo-viewer.zoomed img{max-height:none;max-width:none;width:140%}.photo-actions{display:flex;flex-wrap:wrap;gap:8px}.photo-actions button{align-items:center;background:var(--portal-surface-alt);border:1px solid var(--portal-border);border-radius:999px;color:var(--portal-green-900);cursor:pointer;display:inline-flex;font-weight:900;gap:6px;min-height:36px;padding:0 12px}.photo-edit-form{display:grid;gap:12px}.photo-edit-form label{color:var(--portal-muted);display:grid;font-weight:900;gap:7px}.photo-edit-form input,.photo-edit-form textarea{background:var(--portal-bg);border:1px solid var(--portal-border);border-radius:10px;color:var(--portal-text);min-height:40px;padding:10px 12px;resize:vertical;width:100%}.photo-meta-grid{display:grid;gap:10px}.photo-meta-grid div{border-bottom:1px solid rgba(191,201,196,.72);display:grid;gap:8px;grid-template-columns:130px minmax(0,1fr);padding-bottom:10px}.photo-meta-grid dt{color:var(--portal-muted);font-size:12px;font-weight:900;text-transform:uppercase}.photo-meta-grid dd{color:var(--portal-text);margin:0;overflow-wrap:anywhere}.upload-backdrop{z-index:80}.upload-dialog{background:#fff;border-radius:16px;box-shadow:var(--portal-shadow);display:grid;gap:16px;max-height:min(860px,100vh - 36px);max-width:1040px;overflow:auto;padding:22px;position:relative;width:min(100%,1040px)}.upload-dialog header{padding-right:44px}.upload-dialog h2{color:var(--portal-green-900);font-size:26px;margin:0 0 6px}.upload-dialog p{color:var(--portal-muted);margin:0}.upload-targets{display:grid;gap:12px;grid-template-columns:repeat(3,minmax(0,1fr))}.upload-targets label{color:var(--portal-muted);display:grid;font-weight:900;gap:7px}.upload-targets select,.upload-targets input{background:var(--portal-bg);border:1px solid var(--portal-border);border-radius:10px;min-height:40px;padding:0 12px;width:100%}.drop-zone{align-items:center;background:var(--portal-surface-alt);border:2px dashed var(--portal-border);border-radius:16px;color:var(--portal-muted);cursor:pointer;display:grid;gap:8px;justify-items:center;min-height:170px;padding:22px;text-align:center}.drop-zone.dragging{background:#afefdd5c;border-color:var(--portal-green-800)}.drop-zone strong{color:var(--portal-green-900);font-size:18px}.drop-zone input{height:1px;opacity:0;position:absolute;width:1px}.upload-bulk{display:grid;gap:10px;grid-template-columns:minmax(0,1fr) auto}.upload-bulk input{border:1px solid var(--portal-border);border-radius:10px;min-height:40px;padding:0 12px}.upload-bulk button{background:var(--portal-green-800);border:0;border-radius:10px;color:#fff;cursor:pointer;font-weight:900;padding:0 14px}.upload-queue{display:grid;gap:10px}.upload-queue article{align-items:center;background:var(--portal-bg);border:1px solid rgba(191,201,196,.76);border-radius:14px;display:grid;gap:10px;grid-template-columns:78px minmax(0,1fr) auto auto auto;padding:10px}.upload-queue img{border-radius:10px;height:70px;object-fit:cover;width:78px}.upload-queue strong{color:var(--portal-text);display:block;overflow-wrap:anywhere}.upload-queue input{border:1px solid var(--portal-border);border-radius:8px;margin:6px 0;min-height:34px;padding:0 10px;width:100%}.upload-queue progress{accent-color:var(--portal-green-800);display:block;width:100%}.upload-queue small{color:var(--portal-danger);display:block;font-weight:800}.upload-queue button{background:#fff;border:1px solid var(--portal-border);border-radius:9px;color:var(--portal-muted);cursor:pointer;min-height:34px;padding:0 10px}.upload-dialog footer{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}@media(max-width:1100px){.kpi-grid,.dashboard-kpis,.skeleton-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.chart-grid,.settings-grid{grid-template-columns:1fr}.topbar{grid-template-columns:auto minmax(100px,1fr) minmax(160px,260px) auto auto auto}.topbar select{display:none}}@media(max-width:860px){.admin-shell{grid-template-columns:1fr}.sidebar{box-shadow:0 22px 60px #181c2129;height:100vh;left:0;position:fixed;transform:translate(-105%);transition:transform .18s ease;width:var(--sidebar-width)}.admin-shell.nav-open .sidebar{transform:translate(0)}.nav-toggle{display:inline-flex}.topbar{grid-template-columns:auto minmax(80px,1fr) auto auto auto;padding:0 14px}.topbar .global-search{display:none}main{padding:22px 16px 34px}.page-header{display:grid}.page-header h1{font-size:30px}.page-actions{flex-wrap:wrap}.photo-modal{grid-template-columns:1fr}}@media(max-width:620px){.kpi-grid,.dashboard-kpis,.skeleton-grid,.filter-bar{grid-template-columns:1fr}.detail-hero{align-items:flex-start;display:grid}.detail-meta{min-width:0;text-align:left}.settings-list div,.form-grid,.form-grid.compact,.photo-meta dl div{grid-template-columns:1fr}.bar-chart{gap:6px;grid-template-columns:repeat(7,minmax(22px,1fr));overflow-x:auto}}@media(max-width:1180px){.portal-topbar{grid-template-columns:auto minmax(180px,1fr) auto auto auto}.portal-topnav{display:none}.portal-summary-grid,.portal-skeleton-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.collection-main{grid-template-columns:1fr}.photo-list-panel{max-height:none}}@media(max-width:920px){.portal-shell{grid-template-columns:1fr}.portal-sidebar{box-shadow:0 22px 60px #00342b33;height:100vh;left:0;position:fixed;transform:translate(-105%);transition:transform .18s ease;width:256px}.portal-shell.nav-open .portal-sidebar{transform:translate(0)}.portal-menu{display:grid}.portal-topbar{grid-template-columns:auto minmax(0,1fr) auto auto;padding:0 14px}.portal-new-button{display:none}.portal-page{padding:22px 16px 34px}.portal-page-header,.project-detail-hero,.collection-header{display:grid}.portal-page-header h1,.project-detail-hero h1,.collection-header h1{font-size:30px}.portal-login-panel{justify-self:center;margin-right:0}.upload-targets{grid-template-columns:1fr}.portal-map-page{grid-template-columns:1fr;grid-template-rows:auto minmax(520px,1fr);height:auto}.map-side-panel{border-bottom:1px solid var(--portal-border);border-right:0;max-height:420px}.portal-map-page>.portal-map-canvas{min-height:560px}}@media(max-width:700px){.portal-topbar{grid-template-columns:auto minmax(0,1fr) auto}.portal-topbar .portal-icon-button:first-of-type{display:none}.portal-search{min-width:0}.portal-icon-button{display:none}.portal-summary-grid,.portal-skeleton-grid,.project-card-grid,.collection-card-grid,.form-two,.portal-check-grid,.collection-tools,.collection-list article,.photo-meta-grid div,.upload-bulk,.upload-queue article{grid-template-columns:1fr}.portal-upload-banner,.portal-section-heading{align-items:flex-start;display:grid}.photo-row{grid-template-columns:68px minmax(0,1fr)}.photo-row small,.photo-row i{grid-column:2}.photo-list-panel.grid-mode{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-drawer{width:100vw}.upload-dialog{border-radius:12px;max-height:calc(100vh - 20px);padding:18px}.portal-search-popover{left:12px;right:12px;top:58px;width:auto}}@media(max-width:460px){.portal-login-screen{padding:16px}.portal-login-panel{border-radius:14px;padding:24px}.photo-list-panel.grid-mode{grid-template-columns:1fr}}.portal-shell,.portal-login-screen,.portal-page,.portal-map-page{--portal-green-900: #00342b;--portal-green-800: #005c4b;--portal-green-700: #006451;--portal-green-300: #7ebdac;--portal-mint: #afefdd;--portal-bg: #fdf9f2;--portal-sidebar-bg: #f2ede7;--portal-surface: #ffffff;--portal-surface-alt: #f7f3ec;--portal-card-warm: #f4f1ea;--portal-kpi: #f5f6dc;--portal-border: #bfc9c4;--portal-text: #1c1c18;--portal-muted: #3f4945;--portal-soft-muted: #77827d;--portal-gold: #735000;--portal-gold-soft: #ffdda0;--portal-shadow: 0 18px 40px rgba(28, 28, 24, .12);color:var(--portal-text);font-family:Inter,Segoe UI,Roboto,Arial,sans-serif;letter-spacing:0}.portal-login-screen{align-items:stretch;background:var(--portal-bg);display:grid;grid-template-rows:66px minmax(0,1fr) 68px;margin:0;max-width:none;min-height:100vh;padding:0;width:100%}.portal-login-screen.compact{grid-template-rows:minmax(0,1fr);padding:24px}.portal-login-screen footer{align-items:center;border-top:1px solid rgba(191,201,196,.82);color:var(--portal-muted);display:flex;font-size:14px;font-weight:600;justify-content:flex-start;padding:0 18px;text-align:left}.portal-login-topbar{align-items:center;align-self:stretch;border-bottom:1px solid rgba(191,201,196,.6);display:flex;padding:0 18px}.portal-login-topbar a{color:var(--portal-green-900);font-family:Georgia,Times New Roman,serif;font-size:30px;font-weight:900;line-height:1}.portal-login-panel{align-self:center;background:#fff;border:1px solid rgba(164,177,170,.86);border-radius:10px;box-shadow:none;gap:18px;justify-self:center;margin:0;max-width:448px;padding:28px 24px;width:min(100vw - 32px,448px)}.portal-login-panel form{gap:14px}.portal-login-panel label{color:var(--portal-text);font-size:14px;font-weight:500;gap:7px}.login-title-block{justify-items:center;text-align:center}.login-title-block h1{color:var(--portal-text);font-family:Georgia,Times New Roman,serif;font-size:31px;font-weight:800}.login-title-block p{color:#525a55;font-family:Georgia,Times New Roman,serif;font-size:14px}.portal-field{background:#efebe5;border:1px solid #bfc9c4;border-radius:0;min-height:42px}.portal-field svg{color:var(--portal-green-800);stroke-width:2.4}.portal-field input{color:var(--portal-text);font-family:Georgia,Times New Roman,serif;font-size:16px}.portal-field input::placeholder{color:#7e8184}.forgot-link{color:var(--portal-green-800);font-family:Georgia,Times New Roman,serif;font-size:12px;font-weight:600;margin-top:-2px}.portal-login-submit{background:var(--portal-green-800);border-radius:7px;font-family:Georgia,Times New Roman,serif;font-weight:500;min-height:44px}.portal-divider{color:#6f7873;font-family:Georgia,Times New Roman,serif;font-weight:500;margin:4px 0}.portal-google-slot,.portal-google-fallback{min-height:46px}.portal-google-fallback{border-radius:8px;font-family:Georgia,Times New Roman,serif;font-weight:500}.portal-auth-switch{color:#59635d;font-family:Georgia,Times New Roman,serif;margin:18px 0 0;text-align:center}.portal-auth-switch a{color:var(--portal-green-800);font-weight:600;margin-left:7px}.portal-form-error{border-radius:8px;font-size:13px}.portal-shell{background:var(--portal-bg);grid-template-columns:256px minmax(0,1fr);min-height:100vh}.portal-sidebar{background:var(--portal-sidebar-bg);border-right:1px solid rgba(191,201,196,.72);grid-template-rows:auto auto 1fr auto;min-height:100vh;padding:32px 16px 18px}.portal-brand{gap:14px;margin-bottom:30px}.portal-brand img{border-radius:4px;height:38px;object-fit:contain;width:46px}.portal-brand strong{color:var(--portal-green-900);font-size:23px;letter-spacing:0}.portal-brand small{color:var(--portal-text);font-size:13px;font-weight:500;line-height:1.25;max-width:150px}.portal-upload-button{background:var(--portal-green-800);border-radius:8px;font-size:15px;font-weight:700;margin-bottom:32px;min-height:44px;width:100%}.portal-nav{align-content:start;gap:10px}.portal-nav a,.portal-nav button,.portal-sidebar-footer a,.portal-sidebar-footer button{border-radius:6px;color:var(--portal-muted);font-size:16px;font-weight:500;min-height:42px;padding:0 16px}.portal-nav a svg,.portal-nav button svg,.portal-sidebar-footer a svg,.portal-sidebar-footer button svg{color:currentColor;stroke-width:2.1}.portal-nav a:hover,.portal-nav button:hover,.portal-sidebar-footer a:hover,.portal-sidebar-footer button:hover{background:#ffffffad;color:var(--portal-green-900)}.portal-nav a.active,.portal-nav button.active,.portal-sidebar-footer a.active,.portal-sidebar-footer button.active{background:var(--portal-green-800);box-shadow:none;color:#8fcdbd;font-weight:700}.portal-sidebar-footer{gap:10px;padding-top:18px}.portal-topbar{background:#fdf9f2fa;border-bottom:1px solid rgba(191,201,196,.76);gap:22px;grid-template-columns:minmax(230px,316px) auto minmax(130px,auto) auto auto auto;min-height:64px;padding:0 26px}.portal-search{background:#f2ede7;border:0;border-radius:18px;min-height:36px;padding:0 12px}.portal-search svg{color:var(--portal-text);stroke-width:2.3}.portal-topnav{gap:24px}.portal-topnav a{border-radius:0;color:var(--portal-text);font-size:15px;font-weight:600;padding:22px 0 18px;position:relative}.portal-topnav a:hover,.portal-topnav a.active{background:transparent;color:var(--portal-green-900)}.portal-topnav a.active:after{background:var(--portal-green-800);bottom:17px;content:"";height:2px;left:0;position:absolute;right:0}.portal-new-button{background:var(--portal-green-800);border-color:var(--portal-green-800);border-radius:8px;font-weight:700;min-height:36px;padding:0 16px}.portal-icon-button,.portal-avatar{background:transparent;border:0;color:var(--portal-text)}.portal-icon-button{height:34px;width:34px}.portal-avatar{height:36px;width:36px}.portal-avatar span{align-items:center;background:var(--portal-green-900);border-radius:999px;display:flex;height:100%;justify-content:center;width:100%}.portal-avatar img{border:1px solid rgba(0,52,43,.24);border-radius:999px}.portal-page{gap:28px;min-height:calc(100vh - 64px);padding:34px 32px 48px}.portal-page-header,.project-detail-hero,.collection-header{align-items:flex-start}.portal-page-header h1,.project-detail-hero h1,.collection-header h1{color:var(--portal-text);font-size:36px;font-weight:780;letter-spacing:0}.portal-page-header p,.project-detail-hero p,.collection-header p{color:var(--portal-muted);font-size:16px;line-height:1.5}.portal-page-header>span,.project-detail-hero>span,.collection-header>span{align-self:center;color:var(--portal-muted);font-size:12px;font-weight:700}.portal-page-header.hero-size{align-items:center;margin-bottom:2px}.portal-page-header.hero-size h1{font-size:clamp(44px,4.7vw,60px);font-weight:420}.portal-summary-grid{gap:24px;grid-template-columns:repeat(3,minmax(230px,1fr))}.portal-summary-grid article{background:var(--portal-kpi);border:1px solid rgba(191,201,196,.78);border-radius:8px;box-shadow:none;min-height:160px;padding:24px}.portal-summary-grid div:first-child{align-items:center}.portal-summary-grid div:first-child>svg,.portal-summary-grid div:first-child>*:first-child{align-items:center;background:#fffdf8;border-radius:8px;color:var(--portal-green-900);display:inline-flex;height:36px;justify-content:center;width:36px}.portal-summary-grid small{background:#7ebdac42;border-radius:999px;color:var(--portal-green-900);font-size:12px;padding:6px 10px}.portal-summary-grid span{color:var(--portal-muted);font-size:15px;font-weight:500;text-transform:none}.portal-summary-grid strong{color:var(--portal-text);font-size:34px;font-weight:760}.portal-summary-grid em{display:inline;font-size:15px;margin-left:5px}.storage-meter{background:#e5e2d9;height:5px}.storage-meter i{background:var(--portal-green-900)}.portal-upload-banner{background:linear-gradient(90deg,#dfe4df,#ecebe5);border:1px solid rgba(191,201,196,.82);border-radius:12px;box-shadow:none;color:var(--portal-text);padding:30px 32px}.portal-upload-banner h2{color:var(--portal-text);font-size:25px;font-weight:560}.portal-upload-banner p{color:var(--portal-muted);font-size:16px;line-height:1.45;max-width:650px}.portal-upload-banner .portal-primary{background:var(--portal-green-800);border-color:var(--portal-green-800);color:#fff;min-width:178px}.portal-section-heading h2{color:var(--portal-text);font-size:25px;font-weight:560}.portal-section-heading a{color:var(--portal-green-900);font-weight:700}.project-card-grid,.collection-card-grid{gap:32px;grid-template-columns:repeat(auto-fit,minmax(302px,1fr))}.portal-summary-grid~.project-card-grid{grid-template-columns:repeat(auto-fit,minmax(420px,1fr))}.project-card,.collection-card,.collection-list article{background:var(--portal-card-warm);border:1px solid rgba(191,201,196,.88);border-radius:10px;box-shadow:none}.project-card>div:not(.photo-mosaic),.collection-card>div:not(.photo-mosaic){gap:13px;padding:20px}.project-card h3,.collection-card h3{color:var(--portal-text);font-size:24px;font-weight:560}.project-card p,.collection-card p{color:var(--portal-muted);font-size:15px;min-height:48px}.project-card footer,.collection-card footer{border-top:1px solid rgba(191,201,196,.56);padding-top:12px}.photo-mosaic{aspect-ratio:16/9;background:#e9e4dc;gap:3px;min-height:188px}.photo-mosaic.compact{aspect-ratio:16/10;min-height:144px}.photo-mosaic div{background:linear-gradient(135deg,#d9e8df,#e7d2a9)}.portal-filter-row{background:transparent;border:0;border-radius:0;gap:12px;padding:0}.portal-filter-row span{color:var(--portal-muted);font-size:15px;font-weight:600}.portal-filter-row button{background:#fffdf8;border:1px solid var(--portal-border);border-radius:999px;color:var(--portal-muted);font-weight:500;min-height:34px;padding:0 18px}.portal-filter-row button.active,.portal-filter-row button:hover{background:var(--portal-gold);border-color:var(--portal-gold);color:#fff}.portal-filter-row label{flex:0 1 310px;margin-left:auto}.portal-filter-row input,.portal-filter-row select{background:#fffdf8;border-radius:999px;min-height:36px}.project-detail-hero{border-bottom:1px solid rgba(191,201,196,.88);padding-bottom:26px}.project-detail-hero h1{font-size:clamp(48px,5vw,64px);font-weight:800;max-width:780px}.project-detail-hero p{font-size:17px;max-width:730px}.project-detail-hero>div:last-child{align-self:end}.portal-secondary,.portal-primary{border-radius:8px;min-height:46px}.collection-list{gap:16px}.collection-list article{align-items:stretch;grid-template-columns:minmax(220px,256px) minmax(0,1fr);min-height:162px;overflow:hidden;padding:0}.collection-list .photo-mosaic{border-radius:0;height:100%;min-height:160px}.collection-list article>div:not(.photo-mosaic){align-content:center;display:grid;padding:22px 24px}.collection-list h3{color:var(--portal-text);font-size:24px;font-weight:650}.collection-workspace{gap:24px;padding-top:24px}.collection-header{border-bottom:1px solid rgba(191,201,196,.82);margin:-24px -32px 0;padding:24px 32px 22px}.collection-header nav{color:var(--portal-muted);font-weight:500}.collection-header h1{font-size:clamp(34px,3.6vw,42px);font-weight:760}.collection-header>div:first-child>div{gap:8px;margin-top:16px}.collection-header>div:first-child>div span{background:#e8e5d3;border:0;color:var(--portal-text);font-weight:600;padding:5px 10px}.collection-tools{background:transparent;border:0;grid-template-columns:auto minmax(180px,1fr) auto auto;padding:0}.collection-tools h2{color:var(--portal-text);font-size:25px;font-weight:700}.collection-tools input{background:#fffdf8;border-radius:999px}.collection-tools button{background:transparent;border:0;border-radius:0;color:var(--portal-green-900)}.collection-tools button.active{background:transparent;color:var(--portal-green-800)}.collection-main{gap:16px;grid-template-columns:minmax(420px,1fr) minmax(420px,1fr);min-height:min(650px,100vh - 300px)}.photo-list-panel{background:#fffdf8;border:1px solid rgba(191,201,196,.94);border-radius:8px;gap:0;max-height:min(680px,100vh - 300px);min-height:520px;padding:0}.photo-list-header,.photo-row{display:grid;grid-template-columns:58px minmax(0,1fr) 92px 70px}.photo-list-header{align-items:center;border-bottom:1px solid rgba(191,201,196,.9);color:var(--portal-muted);font-size:11px;font-weight:700;letter-spacing:.08em;min-height:38px;padding:0 20px;text-transform:uppercase}.photo-row{background:#fffdf8;border:0;border-bottom:1px solid rgba(191,201,196,.76);border-left:3px solid transparent;border-radius:0;box-shadow:none;min-height:82px;padding:10px 20px 10px 17px}.photo-row:hover,.photo-row.selected{background:#f0ece4;border-color:#bfc9c4c2;border-left-color:var(--portal-green-800);box-shadow:none}.photo-row img,.photo-row .photo-placeholder{border-radius:3px;height:48px;width:48px}.photo-row strong{color:var(--portal-text);font-size:15px;font-weight:500}.photo-row small{color:var(--portal-muted);font-size:14px;font-weight:500}.photo-row i{justify-self:end}.photo-list-panel.grid-mode{gap:12px;grid-template-columns:repeat(auto-fill,minmax(176px,1fr));padding:12px}.photo-list-panel.grid-mode .photo-row{border:1px solid rgba(191,201,196,.76);border-radius:8px;padding:10px}.collection-map-panel{background:#fffdf8;border:1px solid rgba(191,201,196,.94);border-radius:8px}.collection-map-panel header{padding:0 0 18px}.collection-map-panel header h2{color:var(--portal-text);font-size:25px;font-weight:700}.collection-map-panel header button{background:transparent;border:0;border-radius:0;color:var(--portal-green-900);font-size:12px;letter-spacing:.04em;padding:0;text-transform:uppercase}.collection-map-panel .portal-map-canvas{border-radius:6px;min-height:520px}.portal-map-canvas{background:#edece6}.photo-pin .pin-card{border-color:var(--portal-green-800);border-radius:7px;box-shadow:0 10px 28px #00342b38;height:58px;width:58px}.photo-pin .pin-pointer{border-top-color:var(--portal-green-800)}.photo-pin .pin-cluster{background:var(--portal-green-800);font-size:24px}.portal-shell.map-mode .portal-body{height:100vh;overflow:hidden}.portal-shell.map-mode .portal-sidebar{position:sticky}.portal-map-page{background:#efeee8;display:block;height:100vh;min-height:100vh;overflow:hidden;position:relative}.portal-map-page>.portal-map-canvas{height:100%;min-height:100vh}.portal-map-page .leaflet-tile{filter:saturate(.2) sepia(.08) brightness(1.08)}.map-floating-toolbar{display:grid;gap:28px;left:24px;max-width:min(760px,100vw - 620px);position:absolute;top:10px;z-index:410}.map-search{align-items:center;background:#fffdf8f0;border:1px solid rgba(191,201,196,.92);border-radius:18px;display:grid;gap:10px;grid-template-columns:auto minmax(0,1fr);height:42px;padding:0 14px;width:256px}.map-search svg{color:var(--portal-text);stroke-width:2.2}.map-search input{background:transparent;border:0;color:var(--portal-text);min-width:0;outline:0}.map-filter-pills{display:flex;flex-wrap:wrap;gap:8px}.map-filter-pills select,.map-filter-pills button{background:#fffdf8f0;border:1px solid rgba(191,201,196,.92);border-radius:999px;color:var(--portal-text);cursor:pointer;min-height:42px;padding:0 16px}.map-filter-pills button.active{background:var(--portal-gold-soft);border-color:#9d6d04;color:#5e3f00}.map-side-panel{background:#fffdf8f5;border:1px solid rgba(191,201,196,.88);border-radius:10px;box-shadow:0 20px 42px #1c1c1829;bottom:40px;display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden;padding:0;position:absolute;right:28px;top:80px;width:320px;z-index:420}.map-side-panel.collapsed{bottom:auto;width:auto}.map-side-panel header{align-items:center;border-bottom:1px solid rgba(191,201,196,.72);display:flex;justify-content:space-between;padding:16px 16px 14px}.map-side-panel header h1{color:var(--portal-text);font-family:Georgia,Times New Roman,serif;font-size:23px;font-weight:800;line-height:1;margin:0}.map-side-panel header button{background:transparent;border:0;color:var(--portal-muted);cursor:pointer;font-size:20px;min-height:28px;padding:0}.visible-photo-list{display:grid;gap:18px;overflow:auto;padding:18px 16px}.visible-photo-list button{align-items:center;background:transparent;border:0;color:var(--portal-text);cursor:pointer;display:grid;gap:12px;grid-template-columns:64px minmax(0,1fr);padding:0;text-align:left}.visible-photo-list img{border-radius:4px;height:64px;object-fit:cover;width:64px}.visible-photo-list span{display:grid;gap:4px}.visible-photo-list strong{color:var(--portal-text);font-family:Georgia,Times New Roman,serif;font-size:15px;font-weight:600;overflow-wrap:anywhere}.visible-photo-list small,.visible-photo-list em{color:var(--portal-muted);font-family:Georgia,Times New Roman,serif;font-size:13px;font-style:normal}@media(min-width:1500px){.portal-page{padding-left:clamp(32px,3.2vw,64px);padding-right:clamp(32px,3.2vw,64px)}.project-card-grid,.collection-card-grid{grid-template-columns:repeat(auto-fit,minmax(360px,1fr))}.portal-summary-grid~.project-card-grid{grid-template-columns:repeat(auto-fit,minmax(500px,1fr))}.collection-main{grid-template-columns:minmax(520px,1fr) minmax(520px,1fr)}}@media(max-width:1180px){.portal-topbar{grid-template-columns:auto minmax(190px,1fr) auto auto auto}.portal-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.map-floating-toolbar{max-width:calc(100vw - 360px)}}@media(max-width:980px){.portal-shell{grid-template-columns:1fr}.portal-sidebar{width:256px}.portal-topbar{grid-template-columns:auto minmax(0,1fr) auto auto}.collection-main{grid-template-columns:1fr}.photo-list-panel,.collection-map-panel .portal-map-canvas{max-height:none;min-height:420px}.portal-shell.map-mode .portal-sidebar{transform:translate(-105%)}.portal-shell.map-mode.nav-open .portal-sidebar{transform:translate(0)}.map-floating-toolbar{left:16px;max-width:calc(100vw - 32px)}.map-side-panel{bottom:16px;right:16px;top:auto;width:min(360px,100vw - 32px)}}@media(max-width:700px){.portal-login-screen{grid-template-rows:62px minmax(0,1fr) 64px}.portal-login-panel{padding:24px 20px}.portal-page{padding:24px 16px 36px}.portal-page-header,.project-detail-hero,.collection-header{gap:16px}.portal-page-header h1,.project-detail-hero h1,.collection-header h1{font-size:32px}.portal-page-header.hero-size h1,.project-detail-hero h1{font-size:40px}.portal-summary-grid,.portal-summary-grid~.project-card-grid,.project-card-grid,.collection-card-grid{grid-template-columns:1fr}.portal-filter-row label{flex-basis:100%;margin-left:0}.collection-header{margin-left:-16px;margin-right:-16px;padding-left:16px;padding-right:16px}.collection-list article{grid-template-columns:1fr}.photo-list-header{display:none}.photo-row{grid-template-columns:58px minmax(0,1fr)}.photo-row small,.photo-row i{grid-column:2}.map-floating-toolbar{gap:10px;top:12px}.map-search{width:min(300px,100vw - 32px)}.map-filter-pills{max-width:calc(100vw - 32px);overflow-x:auto;padding-bottom:2px}.map-filter-pills select,.map-filter-pills button{flex:0 0 auto}.map-side-panel{max-height:42vh}}
