@font-face{font-family:ForetMapColorEmoji;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/noto-color-emoji.woff2) format("woff2")}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--forest: #1a4731;--leaf: #2d6a4f;--sage: #52b788;--mint: #b7e4c7;--font-sans: "DM Sans", "Segoe UI Emoji", "Apple Color Emoji", "Noto Color Emoji", sans-serif;--font-emoji-stack: "ForetMapColorEmoji", "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif;--font-sans-with-emoji: "DM Sans", "ForetMapColorEmoji", "Segoe UI Emoji", "Apple Color Emoji", "Noto Color Emoji", sans-serif;--cream: #fefae0;--parchment:#f4e9d0;--soil: #6b4226;--sun: #e9c46a;--alert: #e76f51;--shadow: 0 4px 24px rgba(26,71,49,.13);--radius: 14px;--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-top: env(safe-area-inset-top, 0px);--spring: cubic-bezier(.34,1.56,.64,1);--ease-out: cubic-bezier(.22,1,.36,1);--bottom-nav-height: 72px;--bottom-nav-height-desktop: 62px;--top-tabs-pad-y: clamp(3px, .55vw, 5px);--top-tabs-row-inner-h: clamp(40px, 2.4vw + 34px, 46px);--top-tabs-font: clamp(.74rem, .68rem + .22vw, .82rem);--top-tabs-pad-x: clamp(9px, 1.6vw, 14px);--surface-1: rgba(255, 255, 255, .92);--surface-2: rgba(255, 255, 255, .82);--surface-soft: #f8fbf9;--outline-soft: rgba(45, 106, 79, .15);--shadow-soft: 0 10px 26px rgba(26, 71, 49, .08);--shadow-strong: 0 18px 42px rgba(20, 54, 37, .16);--motion-fast: .16s;--motion-base: .24s;--motion-slow: .34s}.foretmap-emoji-text-mixed{font-family:var(--font-sans-with-emoji)}html{-webkit-text-size-adjust:100%;width:100%;overflow-x:hidden}body{background:radial-gradient(circle at 0% 0%,rgba(82,183,136,.16),transparent 35%),radial-gradient(circle at 100% 0%,rgba(26,71,49,.1),transparent 28%),var(--cream);font-family:var(--font-sans);color:var(--forest);min-height:100vh;overscroll-behavior-y:auto;-webkit-font-smoothing:antialiased;width:100%;max-width:100%;overflow-x:hidden;overflow-y:auto}h1,h2,h3{font-family:Playfair Display,serif}#root,#app{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh;width:100%;max-width:100%;min-width:0;overflow-x:hidden}#app:has(.main--maptasks-split){height:100vh;height:100dvh;max-height:100vh;max-height:100dvh;overflow:hidden}input,select,textarea{font-size:.95rem;font-family:var(--font-sans)}@media (max-width:1023px),(hover:none),(pointer:coarse){input,select,textarea{font-size:16px!important}}.loader{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;gap:16px;background:var(--cream)}.loader-leaf{font-size:3rem;animation:sway 1.5s ease-in-out infinite}@keyframes sway{0%,to{transform:rotate(-8deg)}50%{transform:rotate(8deg)}}.loader p{color:var(--leaf);font-size:1rem;letter-spacing:.05em}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field label{font-size:.78rem;font-weight:700;color:var(--leaf);letter-spacing:.07em;text-transform:uppercase}.field input,.field select,.field textarea{padding:13px 14px;border:1.5px solid var(--mint);border-radius:10px;color:var(--forest);background:var(--cream);outline:none;width:100%;transition:border-color .18s var(--ease-out),background .18s,box-shadow .18s}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--sage);background:#fff;box-shadow:0 0 0 3px #52b78826}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:13px 20px;min-height:44px;border:none;border-radius:10px;font-family:var(--font-sans);font-size:1rem;font-weight:600;cursor:pointer;transition:transform var(--motion-fast) var(--spring),box-shadow var(--motion-base),background var(--motion-base),color var(--motion-base),border-color var(--motion-base);-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}.btn:active{transform:scale(.95)!important}.btn-primary{background:linear-gradient(160deg,var(--forest),var(--leaf));color:#fff;box-shadow:0 6px 16px #1a473138}.btn-primary:active{background:var(--leaf)}.btn-secondary{background:linear-gradient(160deg,#b7e4c7eb,#9edab7f5);color:var(--forest);border:1px solid rgba(82,183,136,.26)}.btn-secondary:active{background:var(--sage);color:#fff}.btn-danger{background:#fee2e2;color:#991b1b}.btn-danger:active{background:#fca5a5}.btn-ghost{background:#ffffffa8;color:var(--forest);border:1.5px solid var(--mint)}.btn-ghost:active{background:var(--mint)}.btn-sm{padding:9px 13px;font-size:.85rem;min-height:38px;border-radius:8px}.btn-full{width:100%}@media (hover:hover){.btn-primary:hover{background:var(--leaf);transform:translateY(-1px);box-shadow:0 10px 20px #1a473142}.btn-secondary:hover{background:var(--sage);color:#fff}.btn-ghost:hover{background:var(--parchment)}.btn-danger:hover{background:#fca5a5}}header{flex-shrink:0;background:linear-gradient(160deg,#1a4731f5,#123424ed);color:#fff;padding:0 16px;padding-top:var(--safe-top);height:calc(56px + var(--safe-top));max-height:calc(56px + var(--safe-top));display:flex;align-items:center;justify-content:space-between;flex-wrap:nowrap;position:sticky;top:0;z-index:100;gap:8px;overflow:hidden;min-width:0;max-width:100%;box-sizing:border-box;border-bottom:1px solid rgba(255,255,255,.14);box-shadow:0 10px 26px #00000024}header .logo{display:flex;align-items:center;gap:8px;font-family:Playfair Display,serif;font-size:1.1rem;min-width:0;flex-shrink:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-wrap:nowrap}.app-header-logo{flex-shrink:0;width:28px;height:28px;object-fit:contain;filter:brightness(0) invert(1);opacity:.95}.logo-title{min-width:0;overflow:hidden;text-overflow:ellipsis}.header-right{display:flex;align-items:center;gap:6px;flex-wrap:nowrap;min-width:0;max-width:70%;max-height:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none}.header-right::-webkit-scrollbar{display:none}.app-version-badge{display:inline-flex;align-items:center;gap:6px;min-height:30px;padding:4px 8px;border-radius:999px;background:#ffffff24;border:1px solid rgba(255,255,255,.24);color:#f8fff9;font-size:.68rem;line-height:1;white-space:nowrap;cursor:default}.app-version-badge__version{font-weight:700;letter-spacing:.02em}.app-version-badge__status{opacity:.9}.realtime-prof-wrap{display:inline-flex;align-items:center;justify-content:center;padding:0 4px;min-width:28px;min-height:32px;cursor:default;opacity:.92}.realtime-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;box-shadow:0 0 0 2px #ffffff47}.realtime-dot--live{background:#4ade80;animation:rtPulse 2.4s ease-in-out infinite}.realtime-dot--polling{background:#60a5fa;opacity:.9}.realtime-dot--connecting{background:#fbbf24;animation:rtBlink 1.1s ease-in-out infinite}.realtime-dot--offline{background:#f97316;opacity:.9}.realtime-dot--no-client{background:#94a3b8;opacity:.85}@keyframes rtPulse{0%,to{opacity:1;transform:scaleZ(1)}50%{opacity:.72;transform:scale3d(.92,.92,1)}}@keyframes rtBlink{0%,to{opacity:1}50%{opacity:.35}}.user-badge{background:#ffffff26;border-radius:8px;padding:4px 10px;font-size:.8rem;max-width:155px;overflow:hidden;border:none;cursor:pointer;color:#fff;display:flex;align-items:center;gap:5px;transition:background .15s;-webkit-tap-highlight-color:transparent}.user-badge-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.user-badge:active{background:#ffffff47;transform:scale(.96)}.lock-btn{background:#ffffff1f;border:none;color:#fff;border-radius:8px;padding:8px 10px;cursor:pointer;font-size:.82rem;font-family:var(--font-sans);display:flex;align-items:center;gap:5px;min-height:40px;min-width:40px;transition:background .15s,transform .1s var(--spring);-webkit-tap-highlight-color:transparent}.lock-btn:active{background:#ffffff47;transform:scale(.93)}.lock-btn.active{background:var(--sun);color:var(--forest)}.notif-center{position:relative;display:inline-flex}.notif-bell{position:relative}.notif-bell.has-unread{background:#fff3}.notif-badge{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 4px;border-radius:999px;background:#ef4444;color:#fff;font-size:.64rem;font-weight:700;display:flex;align-items:center;justify-content:center;line-height:1;border:1px solid rgba(255,255,255,.5)}.notif-panel{position:fixed;top:calc(56px + var(--safe-top) + 8px);right:10px;width:min(92vw,420px);max-height:min(78vh,680px);overflow:auto;background:#fff;color:var(--forest);border:1px solid var(--mint);border-radius:12px;box-shadow:0 12px 28px #00000038;padding:10px;z-index:520}.notif-panel-head{display:flex;flex-direction:column;align-items:stretch;gap:6px;margin-bottom:8px;position:sticky;top:0;background:#fff;padding-bottom:6px}.notif-panel-head-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.notif-panel-close{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;margin:-8px -6px -8px 0;padding:0 10px;border:none;border-radius:10px;background:transparent;color:#4f5f56;font-size:1.35rem;line-height:1;font-weight:600;cursor:pointer;-webkit-tap-highlight-color:transparent}.notif-panel-close:hover{background:#0000000f;color:var(--forest)}.notif-panel-close:active{background:#0000001a}.notif-panel-actions{display:flex;gap:6px;flex-wrap:wrap}.notif-prefs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px;border:1px solid #eef4ef;border-radius:10px;padding:8px;background:#fafdfb}.notif-pref-item{display:inline-flex;align-items:center;gap:6px;font-size:.78rem;color:#4f5f56;min-height:28px}.notif-list{display:grid;gap:8px}.notif-empty{color:#7a8b81;font-size:.84rem;padding:6px 2px}.notif-item{border-radius:10px;border:1px solid #e5eee7;background:#fff;padding:8px;display:grid;gap:6px}.notif-item.unread{border-color:#badac4;background:#f9fefb}.notif-item.read{opacity:.88}.notif-item-top{display:flex;justify-content:space-between;align-items:center;gap:8px}.notif-level{font-size:.68rem;border-radius:999px;padding:2px 8px;font-weight:700}.notif-level-critical{background:#fee2e2;color:#991b1b}.notif-level-important{background:#fef3c7;color:#92400e}.notif-level-info{background:#e0f2fe;color:#0c4a6e}.notif-time{font-size:.7rem;color:#7a8b81}.notif-title{font-size:.86rem;font-weight:700;color:var(--forest)}.notif-message{font-size:.8rem;color:#53645a;line-height:1.35}.notif-item-actions{display:flex;gap:6px;flex-wrap:wrap}.notif-metrics{margin-top:8px;border-top:1px solid #edf3ee;padding-top:8px}.notif-metrics summary{cursor:pointer;font-size:.78rem;color:#61756a;font-weight:700;margin-bottom:6px}.notif-metrics-grid{display:grid;gap:4px;font-size:.76rem;color:#607569;margin-bottom:6px}.notif-critical-banner{margin:8px 12px 0;padding:10px 14px;border-radius:12px;background:#fff1f2;border:1px solid #fda4af;color:#881337;font-size:.9rem}.install-ios-banner{margin:8px 12px 0;padding:10px 14px;border-radius:12px;background:#ecfdf5;border:1px solid #86efac;color:#14532d;font-size:.86rem;display:flex;align-items:center;justify-content:space-between;gap:10px}.install-btn{background:#86efac3d;border:1px solid rgba(255,255,255,.28)}.install-btn:hover{background:#86efac5c}@media (max-width:380px){.lock-btn .lock-label{display:none}.user-badge{max-width:108px;font-size:.72rem}.app-version-badge{padding:4px 7px;font-size:.64rem}.app-version-badge__status{display:none}}@media (max-width:560px){.header-right{max-width:62%}.app-version-badge__status{display:none}.user-badge{max-width:132px}.install-ios-banner{flex-direction:column;align-items:flex-start}}.bottom-nav{position:fixed;bottom:0;left:0;right:0;background:#ffffffd1;border-top:1px solid rgba(183,228,199,.6);display:flex;z-index:99;box-shadow:0 -2px 20px #1a47310f;padding-bottom:var(--safe-bottom);min-height:calc(var(--bottom-nav-height) + var(--safe-bottom));-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.nav-btn{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:10px 4px;border:none;background:transparent;cursor:pointer;font-family:var(--font-sans);font-size:.68rem;color:#6d756f;min-height:56px;-webkit-tap-highlight-color:transparent;position:relative;min-width:0;overflow-wrap:anywhere;white-space:normal;text-align:center;line-height:1.05;transition:color .2s var(--ease-out),transform var(--motion-fast) var(--spring),background var(--motion-fast) var(--ease-out)}@media (max-width:1023px),(pointer:coarse){.bottom-nav{flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;align-items:stretch;scrollbar-width:none;min-height:calc(56px + var(--safe-bottom));max-height:calc(72px + var(--safe-bottom))}.bottom-nav::-webkit-scrollbar{display:none}.nav-btn{flex:0 0 auto;min-width:0;max-width:none;min-height:48px;padding:8px 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}.nav-btn.active{color:var(--forest);font-weight:700}.nav-btn .nav-icon{font-size:1.35rem;transition:transform .25s var(--spring)}.nav-btn.active .nav-icon{transform:scale(1.2) translateY(-1px)}@media (hover:hover){.nav-btn:hover{color:var(--forest);background:#b7e4c742}}.nav-btn:after{content:"";position:absolute;bottom:6px;left:50%;transform:translate(-50%);width:4px;height:4px;border-radius:50%;background:var(--sage);opacity:0;transition:opacity .2s,transform .25s var(--spring)}.nav-btn.active:after{opacity:1;transform:translate(-50%) scale(1)}.nav-btn:active .nav-icon{transform:scale(.88)}.nav-btn:focus-visible,.top-tab:focus-visible,.lock-btn:focus-visible,.map-bubble:focus-visible{outline:3px solid rgba(82,183,136,.45);outline-offset:2px}.app-footer{flex-shrink:0;text-align:center;font-size:.7rem;color:#aaa;padding:8px 16px;margin-top:auto;border-top:1px solid rgba(183,228,199,.4);background:#fefae080;min-width:0;max-width:100%}.main{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;padding:16px;padding-bottom:calc(var(--bottom-nav-height) + var(--safe-bottom) + 16px);max-width:900px;margin:0 auto;width:100%;overflow:hidden;position:relative}.main>*{flex:1;min-height:0;min-width:0}.main>*:not(.map-view-root):not(.desktop-split-view){overflow-y:auto}.main.main--guest-visit{padding-bottom:max(20px,calc(var(--safe-bottom) + 8px))}.teacher-main{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;padding:16px 16px 24px;max-width:900px;margin:0 auto;width:100%;overflow:hidden;position:relative}.main:before,.teacher-main:before{content:"";position:absolute;top:8px;right:8px;bottom:8px;left:8px;border-radius:18px;background:linear-gradient(160deg,#ffffff61,#ffffff1f);border:1px solid rgba(255,255,255,.26);box-shadow:var(--shadow-soft);pointer-events:none;z-index:0}.app-main-shell{animation:fadeIn var(--motion-slow) var(--ease-out) both}.app-tabs-surface{margin-top:2px}.main>*,.teacher-main>*{position:relative;z-index:1}.teacher-main>.top-tabs{flex-shrink:0}.teacher-main>*:not(.top-tabs){flex:1;min-height:0;min-width:0}.teacher-main>*:not(.top-tabs):not(.map-view-root):not(.desktop-split-view){overflow-y:auto}.map-view-root{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.map-view-root .map-view-toolbar{width:var(--fm-map-canvas-w, 100%);max-width:100%;margin-inline:auto;box-sizing:border-box}.desktop-split-view{overflow:hidden;display:grid;grid-template-columns:1.25fr 1fr;grid-template-rows:minmax(0,1fr);gap:16px;align-items:stretch;min-height:0}.desktop-split-pane{min-width:0;min-height:0;display:flex;flex-direction:column}.desktop-split-pane--tasks{background:var(--surface-1);border:1px solid var(--outline-soft);border-radius:14px;box-shadow:var(--shadow-soft);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);padding:12px}.desktop-split-scroll{flex:1;min-height:0;overflow:auto;padding-right:2px}@media (min-width:1024px){:root{--bottom-nav-height: var(--bottom-nav-height-desktop)}.main.main--wide,.teacher-main.main--wide{max-width:none;width:100%}.main.main--guest-visit{max-width:none;width:100%;padding-left:clamp(12px,2.5vw,36px);padding-right:clamp(12px,2.5vw,36px)}}.top-tabs{display:flex;background:#f4e9d0d1;border-radius:14px;flex-wrap:nowrap;align-items:stretch;box-sizing:border-box;padding:var(--top-tabs-pad-y);margin-bottom:clamp(8px,2.4vw,16px);min-height:calc(var(--top-tabs-row-inner-h) + 2 * var(--top-tabs-pad-y));max-height:calc(var(--top-tabs-row-inner-h) + 2 * var(--top-tabs-pad-y));overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none;border:1px solid rgba(107,66,38,.16);box-shadow:0 6px 16px #6b422614;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.top-tabs::-webkit-scrollbar{display:none}.top-tab{flex:1;min-width:fit-content;align-self:stretch;display:inline-flex;align-items:center;justify-content:center;padding:0 var(--top-tabs-pad-x);border:none;background:transparent;cursor:pointer;border-radius:9px;font-family:var(--font-sans);font-size:var(--top-tabs-font);font-weight:500;line-height:1.2;color:var(--soil);white-space:nowrap;transition:background var(--motion-base) var(--ease-out),color var(--motion-base),transform var(--motion-fast) var(--spring),box-shadow var(--motion-base);-webkit-tap-highlight-color:transparent}.top-tab.active{background:linear-gradient(160deg,var(--forest),var(--leaf));color:#fff;font-weight:700;line-height:1.2;box-shadow:0 8px 16px #1a47313d}.top-tab:active{transform:scale(.95)}@media (hover:hover){.top-tab:not(.active):hover{background:#ffffff8f}}.role-preview-banner{display:flex;align-items:flex-start;gap:10px;margin:0 12px;padding:10px 14px;border-radius:12px;border:1px solid rgba(245,158,11,.45);background:#fffbebf5;color:#78350f;font-size:.82rem;line-height:1.35;flex-shrink:0}.role-preview-banner--teacher{border-color:#3b82f661;background:#eff6fff5;color:#1e3a8a}.role-preview-banner--impersonation{border-color:#ea580c80;background:#fff7edfa;color:#9a3412;flex-wrap:wrap}.role-preview-banner--impersonation .impersonation-banner-actions{margin-left:auto;display:flex;gap:8px;flex-shrink:0}.role-preview-banner__icon{flex-shrink:0;font-size:1.15rem;line-height:1.2}.role-preview-banner__text{min-width:0;display:flex;flex-direction:column;gap:2px}.role-preview-banner__text strong{font-size:.86rem}.section-title{font-size:clamp(1.15rem,1rem + .55vw,1.3rem);color:var(--forest);margin-bottom:4px}.section-sub{font-size:.85rem;color:#6b7280;margin-bottom:16px;line-height:1.45}.stats-title-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px;gap:8px}.stats-title-left{display:flex;align-items:center;gap:10px;min-width:0}.about-grid{display:grid;gap:12px}.about-card{background:#fff;border-radius:12px;padding:14px;border:1.5px solid var(--mint);box-shadow:0 1px 6px #0000000a}.about-card h3{font-size:.92rem;color:var(--leaf);margin-bottom:8px;text-transform:uppercase;letter-spacing:.04em}.about-card p{line-height:1.5;color:#365043}.about-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.about-chip{border-radius:999px;padding:6px 10px;font-size:.76rem;background:var(--parchment);color:var(--soil);font-weight:600}.about-links{display:grid;gap:8px}.about-link{display:block;width:100%;text-decoration:none;color:var(--forest);background:#f8fbf9;border:1px solid var(--mint);border-radius:10px;padding:10px 12px;min-height:44px;transition:background .18s var(--ease-out),border-color .18s var(--ease-out)}.about-link:active{background:#eef8f2;border-color:var(--sage)}.about-link small{color:#5e7468}@media (hover:hover){.about-link:hover{background:#eef8f2;border-color:var(--sage)}}.map-wrap{background:#fff;border-radius:var(--radius);padding:12px;box-shadow:var(--shadow);overflow:hidden}.map-view-canvas-outer{flex:0 0 auto;min-width:0;min-height:0}.map-view-root--solo .map-view-canvas-outer,.map-view-root--embedded .map-view-canvas-outer{flex:1;min-height:0}.map-view-canvas-slot{flex:0 0 auto;min-width:0;min-height:0;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;overflow:visible}.map-view-root--solo .map-view-canvas-slot{flex:1;min-height:0;justify-content:flex-start;overflow:hidden}.map-view-root--embedded .map-view-canvas-slot{flex:1;min-height:0;justify-content:center;overflow:hidden}.map-view-canvas{box-sizing:border-box;position:relative;overflow:hidden;background:transparent;border-radius:10px;width:auto;max-width:100%;height:auto;flex-shrink:0;align-self:center}.desktop-split-pane--map{min-width:0;min-height:0;overflow:hidden}.main.main--maptasks-split,.teacher-main.main--maptasks-split{flex:1 1 0%;min-height:0;overflow:hidden}.main--maptasks-split .desktop-split-view{gap:8px}.teacher-main.main--maptasks-split>.top-tabs{margin-bottom:clamp(4px,1.2vw,8px)}.main--maptasks-split .map-view-root--embedded .map-view-canvas-slot{justify-content:flex-start}.main--maptasks-split .map-view-root--embedded{overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.main--maptasks-split .map-view-root--embedded .map-view-canvas-outer{min-height:clamp(120px,28dvh,240px)}.main--maptasks-split .desktop-split-pane--tasks{overflow:hidden}.main--maptasks-split .desktop-split-scroll{flex:1 1 0%;min-height:0;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}@media (min-width:1024px){.main.main--maptasks-split:not(.teacher-main){--fm-maptasks-sticky-top:calc(56px + var(--safe-top));--fm-maptasks-map-max-h:calc(100dvh - 56px - var(--safe-top) - var(--bottom-nav-height) - var(--safe-bottom) - 32px)}.teacher-main.main--maptasks-split{--fm-maptasks-teacher-tabs-h:calc(var(--top-tabs-row-inner-h) + 2 * var(--top-tabs-pad-y) + clamp(4px, 1.2vw, 8px));--fm-maptasks-sticky-top:calc(56px + var(--safe-top));--fm-maptasks-map-max-h:calc(100dvh - 56px - var(--safe-top) - var(--fm-maptasks-teacher-tabs-h) - 32px - 24px)}.main--maptasks-split .desktop-split-pane--map{position:sticky;align-self:start;top:var(--fm-maptasks-sticky-top);max-height:var(--fm-maptasks-map-max-h);z-index:1}}.map-legend{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}.legend-item{display:flex;align-items:center;gap:6px;font-size:.78rem;color:#666}.legend-dot{width:12px;height:12px;border-radius:3px;flex-shrink:0}.map-bubble-pin{position:relative;font-family:var(--font-emoji-stack)}.map-bubble{border-radius:10px}.map-task-status-dot{position:absolute;top:-1px;right:-1px;width:10px;height:10px;border-radius:50%;border:1.5px solid #fff;box-shadow:0 1px 4px #0000002e}.map-task-status-dot--todo{background:#dc2626;animation:mapStatusFadeRed 2.2s ease-in-out infinite}.map-task-status-dot--progress{background:#f59e0b;animation:mapStatusFadeOrange 2.2s ease-in-out infinite}.map-task-status-dot--done{background:#16a34a;animation:none;opacity:1}.map-task-status{stroke:#fff;stroke-width:1.5px}.map-task-status--todo{fill:#dc2626;filter:drop-shadow(0 0 6px rgba(220,38,38,.45));animation:mapStatusFadeRed 2.2s ease-in-out infinite}.map-task-status--progress{fill:#f59e0b;filter:drop-shadow(0 0 6px rgba(245,158,11,.48));animation:mapStatusFadeOrange 2.2s ease-in-out infinite}.map-task-status--done{fill:#16a34a;filter:drop-shadow(0 0 5px rgba(22,163,74,.34));animation:none;opacity:1}.map-tutorial-zone-dot{fill:#6366f1;stroke:#fff;stroke-width:1.5px;filter:drop-shadow(0 0 4px rgba(99,102,241,.4))}.map-tutorial-marker-dot{position:absolute;border-radius:50%;background:#6366f1;border:1.5px solid #fff;box-shadow:0 1px 4px #0000002e}@keyframes mapStatusFadeRed{0%,to{opacity:1}50%{opacity:.42}}@keyframes mapStatusFadeOrange{0%,to{opacity:1}50%{opacity:.42}}@media (prefers-reduced-motion: reduce){.map-task-status-dot--todo,.map-task-status-dot--progress,.map-task-status--todo,.map-task-status--progress{animation:none;opacity:.92}}.zone-info{background:var(--parchment);border-radius:12px;padding:16px;border:1.5px solid var(--mint)}.stage-badge{display:inline-block;padding:4px 12px;border-radius:20px;font-size:.73rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.stage-growing{background:#dcfce7;color:#166534}.stage-ready{background:#fef9c3;color:#854d0e}.stage-empty{background:#f1f5f9;color:#475569}.stage-special{background:#dbeafe;color:#1e40af}.history-list{margin-top:12px}.history-list h4{font-size:.75rem;font-weight:700;color:#aaa;text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}.history-item{display:flex;justify-content:space-between;font-size:.82rem;padding:6px 0;border-bottom:1px solid var(--mint);color:#555}.edit-zone{background:#f0fdf4;border-radius:12px;padding:14px;border:1.5px dashed var(--sage);margin-top:12px}.edit-pt-cross{opacity:0;transition:opacity .12s ease}.edit-pt.edit-pt--dragging .edit-pt-cross{opacity:1}@media (hover: hover) and (pointer: fine){.edit-pt:hover .edit-pt-cross{opacity:1}}.tasks-section{margin-bottom:24px;animation:fadeIn .2s var(--ease-out) both}.tasks-section-title{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#6b7280;margin-bottom:10px;display:flex;align-items:center;gap:8px}.tasks-section-title:after{content:"";flex:1;height:1px;background:var(--mint)}.tasks-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(250px,100%),1fr));gap:12px;margin-top:10px}.tasks-list{margin-top:10px}.tasks-condensed{display:flex;flex-direction:column;gap:4px;margin-top:10px}.tasks-condensed .task-card{margin-bottom:0}.task-card--condensed{padding:7px 12px}.task-card--condensed-open{padding:16px}.task-card--condensed:not(.task-card--condensed-open) .task-top--condensed-toggle{margin-bottom:0}.task-top--condensed-toggle{-moz-appearance:none;appearance:none;-webkit-appearance:none;border:none;background:transparent;width:100%;text-align:left;cursor:pointer;padding:0;font:inherit;color:inherit;border-radius:10px;box-sizing:border-box;min-height:40px;align-items:flex-start}@media (pointer: coarse){.task-top--condensed-toggle{min-height:44px}}.task-top--condensed-toggle:focus-visible{outline:2px solid var(--sage, #22c55e);outline-offset:2px}.task-condensed-chevron{flex-shrink:0;opacity:.55;font-size:.72rem;line-height:1.4;margin-top:2px;font-family:var(--font-sans)}.task-card--condensed .task-title-row{gap:8px}.task-card--condensed .task-status-dot{margin-top:3px}.task-card--condensed .task-title{line-height:1.25}.tasks-view-switch{display:inline-flex;align-items:center;gap:6px;margin-right:4px}.task-card{background:var(--surface-1);border-radius:14px;padding:16px;margin-bottom:10px;box-shadow:var(--shadow-soft);border:1px solid var(--outline-soft);transition:transform var(--motion-base) var(--ease-out),box-shadow var(--motion-base),border-color var(--motion-base),background var(--motion-base)}.task-card:active{transform:scale(.99)}.task-card--tile{margin-bottom:0;border-color:#52b7883d;border-radius:16px;box-shadow:0 8px 24px #1a47311a;transition:transform .18s var(--spring),box-shadow .2s var(--ease-out),border-color .2s var(--ease-out)}.task-card--tile:hover{transform:translateY(-2px);border-color:var(--sage);box-shadow:0 10px 28px #1a47311f}.task-card.mine{border-color:var(--sage);background:#f7fef9}.task-card.done{opacity:.65}.task-card--dragging{opacity:.55;cursor:grabbing}.task-card--drop-target{border-color:var(--leaf, #22c55e);box-shadow:0 0 0 2px #22c55e26,var(--shadow-soft);background:#f6fff9}.task-project-drop-slot{border:1px dashed transparent;border-radius:12px;transition:border-color var(--motion-fast, .15s ease),background var(--motion-fast, .15s ease)}.task-project-drop-slot--active{border-color:var(--leaf, #22c55e);background:#22c55e14}.task-card.proposed{border-color:#c4b5fd;background:#faf5ff;box-shadow:0 2px 10px #7c3aed1f}.task-top{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:8px}.task-title-row{display:flex;align-items:flex-start;gap:10px;min-width:0;flex:1}.task-status-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;margin-top:5px;box-shadow:0 0 0 2px #fffffff2,0 1px 3px #0000001f}.task-status-dot--todo{background:#dc2626;animation:taskStatusFadeRed 2.2s ease-in-out infinite}.task-status-dot--progress{background:#f59e0b;animation:taskStatusFadeOrange 2.2s ease-in-out infinite}.task-status-dot--done{background:#16a34a;animation:none;opacity:1;box-shadow:0 0 0 2px #fffffff2,0 0 0 3px #16a34a40}@keyframes taskStatusFadeRed{0%,to{opacity:1;filter:brightness(1);box-shadow:0 0 0 2px #fffffff2,0 0 14px #dc262680}50%{opacity:.42;filter:brightness(.92);box-shadow:0 0 0 2px #fffffff2,0 0 4px #dc262626}}@keyframes taskStatusFadeOrange{0%,to{opacity:1;filter:brightness(1);box-shadow:0 0 0 2px #fffffff2,0 0 14px #f59e0b85}50%{opacity:.42;filter:brightness(.95);box-shadow:0 0 0 2px #fffffff2,0 0 4px #f59e0b33}}@media (prefers-reduced-motion: reduce){.task-status-dot--todo,.task-status-dot--progress{animation:none;opacity:.92}}.task-title{font-weight:600;font-size:1rem;color:var(--forest);line-height:1.3;min-width:0;flex:1}.task-meta{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}.task-card-cover-btn{display:block;width:100%;padding:0;margin:0 0 10px;border:none;background:transparent;border-radius:10px;overflow:hidden;cursor:zoom-in;line-height:0}.task-card-cover{width:100%;max-height:160px;object-fit:cover;display:block}.task-chip{background:var(--parchment);border-radius:6px;padding:4px 9px;font-size:.76rem;color:var(--soil);font-family:var(--font-sans-with-emoji)}.task-chip.urgent{background:#fff1f2;color:#e11d48}.task-chip.proposal{background:#ede9fe;color:#5b21b6;font-weight:600;border:1px solid #d8b4fe}.task-assignees-overview{display:flex;flex-wrap:wrap;align-items:flex-start;gap:6px;margin-bottom:10px;font-size:.8rem}.task-assignees-title{color:#4b5563;font-weight:700;letter-spacing:.01em;padding-top:2px}.task-assignees-list{display:flex;flex-wrap:wrap;gap:6px}.task-assignee-inline{background:#eefbf2;color:#166534;border:1px solid #bbf7d0;border-radius:999px;padding:2px 8px;line-height:1.4}.task-assignee-inline.me{background:#dcfce7;border-color:#86efac;font-weight:700}.task-assignee-inline.empty{background:#f3f4f6;border-color:#e5e7eb;color:#6b7280;font-style:italic}.task-desc{font-size:.88rem;color:#666;margin-bottom:10px;line-height:1.55}.task-actions{display:flex;gap:8px;flex-wrap:wrap}.assignees{margin-bottom:8px;display:flex;gap:6px;flex-wrap:wrap}.assignee-tag{background:var(--mint);color:var(--forest);border-radius:6px;padding:3px 9px;font-size:.76rem;font-weight:500}.assignee-tag.me{font-weight:700;border:1px solid #86efac}button.assignee-tag.assignee-tag--teacher-mark{font:inherit;text-align:inherit;border:1px dashed rgba(26,71,49,.35);cursor:pointer;min-height:44px}button.assignee-tag.assignee-tag--teacher-mark:hover:not(:disabled){background:#a8e6c4;border-color:var(--leaf)}button.assignee-tag.assignee-tag--teacher-mark:disabled{opacity:.65;cursor:wait}.slots{font-size:.82rem;color:#aaa;margin-bottom:6px}.status-badge{border-radius:20px;padding:4px 10px;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;flex-shrink:0}.status-available{background:#dcfce7;color:#166534}.status-in_progress{background:#fef9c3;color:#854d0e}.status-done{background:#dbeafe;color:#1e40af}.status-validated{background:#f1f5f9;color:#64748b}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:max(16px,var(--safe-top)) 16px max(16px,var(--safe-bottom));background:#0c1e1485;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.modal{position:relative;z-index:1;flex:0 1 auto;min-width:0;min-height:0;box-sizing:border-box;background:var(--surface-1);border-radius:20px;padding:20px 20px calc(20px + var(--safe-bottom));width:min(100%,calc(100vw - 32px));max-width:min(720px,calc(100vw - 32px));max-height:min(90vh,calc(100vh - var(--safe-top) - var(--safe-bottom) - 32px));max-height:min(90dvh,calc(100dvh - var(--safe-top) - var(--safe-bottom) - 32px));overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;border:1px solid rgba(255,255,255,.46);box-shadow:var(--shadow-strong);animation:popIn .28s var(--spring) forwards}@media (prefers-reduced-motion: reduce){.modal,.log-modal,.pin-card{animation:none!important;opacity:1!important;transform:none!important}}.log-modal{position:relative;z-index:1;flex:0 1 auto;min-width:0;min-height:0;box-sizing:border-box;background:var(--surface-1);border-radius:20px;padding:20px 20px calc(20px + var(--safe-bottom));width:min(100%,calc(100vw - 32px));max-width:min(920px,calc(100vw - 32px));max-height:min(90vh,calc(100vh - var(--safe-top) - var(--safe-bottom) - 32px));max-height:min(90dvh,calc(100dvh - var(--safe-top) - var(--safe-bottom) - 32px));overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;border:1px solid rgba(255,255,255,.46);box-shadow:var(--shadow-strong);animation:popIn .28s var(--spring) forwards}@media (max-width: 720px){.modal-overlay{align-items:flex-start}.modal-overlay>.modal,.modal-overlay>.log-modal:not(.log-modal--with-close):not(.tuto-preview-modal),.modal-overlay .log-modal.log-modal--dialog:not(.tuto-preview-modal){max-height:none;height:auto;overflow:visible}}.modal-overlay>.log-modal.log-modal--with-close{max-width:min(720px,calc(100vw - 32px))}.modal-overlay.modal-overlay--centered{align-items:center;justify-content:center;padding:max(16px,var(--safe-top)) 16px max(16px,var(--safe-bottom))}@media (max-width: 720px){.modal-overlay.modal-overlay--centered{align-items:flex-start}}.modal-overlay .log-modal.log-modal--dialog{border-radius:20px;width:100%;max-width:440px;margin:0;max-height:min(90vh,calc(100vh - var(--safe-top) - var(--safe-bottom) - 32px));max-height:min(90dvh,calc(100dvh - var(--safe-top) - var(--safe-bottom) - 32px));box-shadow:0 12px 40px #0f172a2e;animation:popIn .28s var(--spring) forwards}.visit-mascot-pack-tool-overlay{z-index:392}.modal-overlay .log-modal.log-modal--dialog.visit-mascot-pack-tool-dialog{max-width:min(1120px,calc(100vw - 24px))}.mascot-pack-wysiwyg__h{font-size:1.02rem;margin:16px 0 8px;color:var(--forest)}.mascot-pack-wysiwyg__label{display:block;font-size:.78rem;opacity:.88;margin-bottom:4px}.mascot-pack-wysiwyg__grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}@media (max-width:640px){.mascot-pack-wysiwyg__grid2{grid-template-columns:1fr}}.mascot-pack-wysiwyg__grid4{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}@media (max-width:640px){.mascot-pack-wysiwyg__grid4{grid-template-columns:1fr}}.mascot-pack-wysiwyg__state{border:1px solid rgba(26,71,49,.15);border-radius:10px;padding:4px 10px 10px;margin-bottom:10px;background:#f8faf580}.mascot-pack-wysiwyg__state-summary{cursor:pointer;list-style:none}.mascot-pack-wysiwyg__state-summary::-webkit-details-marker{display:none}.mascot-pack-wysiwyg__frame-list{list-style:none;padding:0;margin:8px 0 0}.mascot-pack-wysiwyg__frame-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;padding:6px 0;border-bottom:1px dashed rgba(26,71,49,.12)}.mascot-pack-wysiwyg__frame-thumb{width:48px;height:48px;object-fit:contain;border-radius:6px;background:#ffffffe6;border:1px solid rgba(26,71,49,.15)}.mascot-pack-wysiwyg__frame-name{font-size:11px;flex:1;min-width:120px;word-break:break-all}.mascot-pack-wysiwyg__frame-move{display:flex;flex-wrap:wrap;gap:4px}.mascot-pack-wysiwyg__dwell-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:8px;margin-top:8px}.mascot-pack-wysiwyg__asset-grid{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:12px}.mascot-pack-wysiwyg__asset-card{border:1px solid rgba(26,71,49,.18);border-radius:10px;padding:8px;background:#ffffffd9}.mascot-pack-wysiwyg__asset-thumb{display:block;width:100%;padding:0;border:none;background:transparent;cursor:pointer;border-radius:8px;overflow:hidden}.mascot-pack-wysiwyg__asset-thumb img{width:100%;height:88px;object-fit:contain;display:block;background:#f8faf5f2}.mascot-pack-wysiwyg__asset-name{font-size:10px;margin-top:6px;word-break:break-all;opacity:.9}.mascot-pack-wysiwyg__asset-actions{margin-top:6px;display:flex;flex-direction:column;gap:4px}.visit-mascot-pack-manager--page{max-height:none!important;overflow:visible!important}.modal h3,.log-modal h3{font-size:clamp(1.05rem,.95rem + .45vw,1.2rem);margin-bottom:16px;color:var(--forest)}.modal-close{position:absolute;top:12px;right:12px;z-index:2;background:#0000000f;border:none;border-radius:50%;width:36px;height:36px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1rem;color:#666;transition:background .15s,transform .12s var(--spring);-webkit-tap-highlight-color:transparent}.modal-close:active{background:#0000001f;transform:scale(.88)}.log-modal.log-modal--with-close{display:flex;flex-direction:column;overflow:hidden;padding:12px 12px 0}.log-modal.log-modal--with-close .log-modal__head{flex-shrink:0;display:flex;justify-content:flex-end;align-items:center;min-height:40px;padding:0 4px 8px}.log-modal.log-modal--with-close .modal-close{position:static;top:auto;right:auto;flex-shrink:0}.log-modal.log-modal--with-close .log-modal__scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;padding:0 8px 20px;padding-bottom:calc(20px + var(--safe-bottom))}.pin-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;display:flex;align-items:center;justify-content:center;padding:20px;padding-top:max(20px,var(--safe-top));padding-bottom:max(20px,var(--safe-bottom));background:#0000007a;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}@media (max-width: 720px){.pin-overlay{align-items:flex-start}}.pin-card{position:relative;z-index:1;background:#fff;border-radius:20px;padding:32px 24px;width:min(100%,320px);max-height:min(90vh,calc(100vh - var(--safe-top) - var(--safe-bottom) - 40px));max-height:min(90dvh,calc(100dvh - var(--safe-top) - var(--safe-bottom) - 40px));overflow-y:auto;-webkit-overflow-scrolling:touch;text-align:center;animation:popIn .3s var(--spring) forwards}@keyframes popIn{0%{transform:scale3d(.88,.88,1) translate3d(0,12px,0);opacity:0}to{transform:scaleZ(1) translateZ(0);opacity:1}}.pin-card h3{font-size:1.2rem;margin-bottom:8px}.pin-card p{font-size:.85rem;color:#aaa;margin-bottom:20px}.pin-input{font-size:1.8rem!important;text-align:center;letter-spacing:.3em;padding:14px;border:2px solid var(--mint);border-radius:10px;width:100%;outline:none;margin-bottom:16px;transition:border-color .18s,box-shadow .18s}.pin-input:focus{border-color:var(--sage);box-shadow:0 0 0 3px #52b78826}.pin-error{color:var(--alert);font-size:.85rem;margin-bottom:10px;animation:shake .3s ease}@keyframes shake{0%,to{transform:translateZ(0)}25%{transform:translate3d(-6px,0,0)}75%{transform:translate3d(6px,0,0)}}.profile-promo-overlay{z-index:280;background:#0f2a1c73;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.profile-promo-card{position:relative;max-width:420px;width:calc(100vw - 32px);border-radius:22px;overflow:hidden;max-height:min(90vh,calc(100vh - var(--safe-top) - var(--safe-bottom) - 32px));max-height:min(90dvh,calc(100dvh - var(--safe-top) - var(--safe-bottom) - 32px));overflow-y:auto;-webkit-overflow-scrolling:touch;box-shadow:0 24px 48px #143c2859,0 0 0 1px #ffffff1f;animation:popIn .32s var(--spring) forwards}.profile-promo-card__glow{position:absolute;top:-40%;right:-40%;bottom:-40%;left:-40%;background:conic-gradient(from 120deg,#7ccf9a,#52b788,#2d6a4f,#95d5b2,#7ccf9a);opacity:.35;filter:blur(48px);pointer-events:none}.profile-promo-card__inner{position:relative;z-index:1;padding:26px 24px 22px;background:linear-gradient(165deg,#f8fff9,#eef8f1 55%,#e2f0e8);color:var(--forest)}.profile-promo-card__kicker{margin:0 0 6px;font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--sage)}.profile-promo-card__title{margin:0 0 12px;font-size:clamp(1.5rem,1.2rem + 1.2vw,1.85rem);line-height:1.15;color:var(--forest)}.profile-promo-card__lead{margin:0 0 16px;font-size:.95rem;line-height:1.45;color:#2f4a3c}.profile-promo-card__highlights{margin:0 0 14px;padding:12px 14px;border-radius:14px;background:#ffffffb8;border:1px solid rgba(45,106,79,.12)}.profile-promo-card__highlights-title{margin:0 0 8px;font-size:.82rem;font-weight:600;color:var(--forest)}.profile-promo-card__highlights ul{margin:0;padding-left:1.1rem;font-size:.88rem;line-height:1.5;color:#3d5c4d}.profile-promo-card__highlights li{margin-bottom:4px}.profile-promo-card__hint{margin:0 0 16px;font-size:.78rem;line-height:1.4;color:#6b7f72}.profile-promo-card__cta{width:100%;min-height:48px;font-weight:700;font-size:1rem;border-radius:14px;background:linear-gradient(135deg,var(--forest),#1b4332);color:#fff;border:none;box-shadow:0 8px 20px #1b433247}.profile-promo-card__cta:hover{filter:brightness(1.05)}.profile-promo-card__cta:focus-visible{outline:3px solid rgba(82,183,136,.55);outline-offset:2px}@media (max-width: 720px){.profile-promo-card{width:min(100%,calc(100vw - 24px));border-radius:18px}.profile-promo-card__inner{padding:20px 16px calc(18px + var(--safe-bottom))}}.auth-wrap{min-height:100vh;min-height:100dvh;min-width:0;max-width:100%;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at 30% 70%,#d8f3dc 0%,var(--cream) 60%);padding:20px;padding-top:max(20px,var(--safe-top))}.auth-card{background:#fff;border-radius:20px;padding:32px 24px;max-width:420px;width:100%;box-shadow:var(--shadow),0 0 0 1px #2d6a4f0f;animation:popIn .4s var(--spring)}.auth-brand-logo{display:block;width:72px;height:auto;margin:0 auto 10px;object-fit:contain}@media (max-width:400px){.auth-card{padding:24px 18px;border-radius:16px}}.auth-card h1{font-size:clamp(1.45rem,1.25rem + .8vw,1.8rem);color:var(--forest);margin-bottom:4px}.auth-card .sub{color:var(--leaf);font-size:.88rem;margin-bottom:24px}.auth-tabs{display:flex;background:var(--parchment);border-radius:10px;padding:3px;margin-bottom:20px}.auth-tab{flex:1;padding:10px;border:none;background:transparent;border-radius:8px;cursor:pointer;font-family:var(--font-sans);font-size:.9rem;font-weight:500;color:var(--soil);transition:background .2s var(--ease-out),color .2s,transform .1s var(--spring);-webkit-tap-highlight-color:transparent}.auth-tab.active{background:var(--forest);color:#fff;font-weight:700}.auth-tab:active{transform:scale(.95)}.auth-error{background:#fff1f2;color:#e11d48;border-radius:8px;padding:10px 14px;font-size:.85rem;margin-bottom:12px;animation:shake .3s ease}.auth-success{background:#ecfdf3;color:#166534;border-radius:8px;padding:10px 14px;font-size:.85rem;margin-bottom:12px}.auth-home-credit{margin-top:16px;margin-bottom:0;text-align:center;color:#9aa69f;font-size:.68rem;line-height:1.25}.auth-version{font-size:.7rem;color:#aaa;margin-top:8px;margin-bottom:0;text-align:center}.row{display:flex;gap:10px}.row .field{flex:1}@media (max-width:440px){.row{flex-direction:column;gap:0}}.task-form-pick-subheading{grid-column:1 / -1;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#888;margin:6px 2px 2px;padding-top:8px;border-top:1px solid rgba(0,0,0,.08)}.task-form-pick-list>.task-form-pick-subheading:first-child{margin-top:2px;padding-top:2px;border-top:none}.task-form-pick-list{max-height:168px;overflow-y:auto;border:1px solid rgba(0,0,0,.08);border-radius:10px;padding:6px 8px;background:var(--parchment, #faf8f3);display:grid;grid-template-columns:1fr;gap:2px 12px;text-align:left;align-content:start}.task-form-pick-item{display:flex;align-items:flex-start;justify-content:flex-start;gap:10px;min-height:44px;width:100%;cursor:pointer;text-align:left;margin:0;padding:6px 2px;text-transform:none;letter-spacing:normal;font-weight:400;color:var(--forest);font-size:.88rem;line-height:1.25}.task-form-pick-item input[type=checkbox]{width:auto;max-width:none;min-width:1.125rem;min-height:1.125rem;margin:2px 0 0;padding:0;flex-shrink:0;align-self:flex-start;border:none;border-radius:4px;background:transparent;box-shadow:none}.task-form-pick-item input[type=checkbox]:focus{outline:2px solid var(--sage);outline-offset:2px}.task-form-pick-text{flex:1;text-align:left;text-transform:none;letter-spacing:normal;color:var(--forest);font-size:.88rem;font-weight:500;line-height:1.3;white-space:normal;overflow-wrap:anywhere;font-family:var(--font-sans-with-emoji)}.task-form-pick-empty{font-size:.82rem;color:#888;margin:8px;grid-column:1 / -1;text-align:left;text-transform:none;letter-spacing:normal;font-weight:400}@media (min-width:700px){.task-form-pick-list{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1080px){.task-form-pick-list{grid-template-columns:repeat(3,minmax(0,1fr))}}.map-bubble>div:first-child{transition:transform .15s var(--spring)}.map-bubble:hover>div:first-child{transform:scale(1.18) translateY(-2px)}.map-bubble:active>div:first-child{transform:scale(.9)}.map-gesture-toggle{border:1.5px solid var(--mint);background:transparent;color:var(--forest);border-radius:8px;padding:6px 10px;min-height:36px;font-size:.78rem;font-weight:700;cursor:pointer;font-family:var(--font-sans)}.map-gesture-toggle.is-on{background:#ecfdf3;border-color:var(--sage);color:#166534}.map-view-toolbar{flex-wrap:wrap;row-gap:6px}.map-view-toolbar>*{flex-shrink:0}.map-switch-inline{max-width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none}.map-switch-inline::-webkit-scrollbar{display:none}.map-switch-select{min-width:180px;max-width:min(100%,300px);min-height:34px;border:1px solid var(--mint);border-radius:10px;background:var(--parchment);color:var(--soil);font-weight:700;padding:4px 10px}.main.main--map-visible .map-view-toolbar,.teacher-main.teacher-main--map-visible .map-view-toolbar,.map-view-root--solo .map-view-toolbar{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none;align-items:center;padding:3px 6px!important;min-height:34px!important;gap:3px!important}.main.main--map-visible .map-view-toolbar::-webkit-scrollbar,.teacher-main.teacher-main--map-visible .map-view-toolbar::-webkit-scrollbar,.map-view-root--solo .map-view-toolbar::-webkit-scrollbar{display:none}.main.main--map-visible .map-view-toolbar button:not(.fm-help-btn),.teacher-main.teacher-main--map-visible .map-view-toolbar button:not(.fm-help-btn),.map-view-root--solo .map-view-toolbar button:not(.fm-help-btn){padding:4px 7px!important;font-size:.72rem!important;min-height:30px}.main.main--map-visible .map-view-toolbar .map-gesture-toggle,.teacher-main.teacher-main--map-visible .map-view-toolbar .map-gesture-toggle,.map-view-root--solo .map-view-toolbar .map-gesture-toggle{padding:3px 7px!important;min-height:30px!important;font-size:.68rem!important}.main.main--map-visible .map-view-toolbar .btn-sm,.teacher-main.teacher-main--map-visible .map-view-toolbar .btn-sm,.map-view-root--solo .map-view-toolbar .btn-sm{padding:4px 7px!important;min-height:30px!important;font-size:.7rem!important}.main.main--map-visible .map-view-toolbar .fm-help-btn,.teacher-main.teacher-main--map-visible .map-view-toolbar .fm-help-btn,.map-view-root--solo .map-view-toolbar .fm-help-btn{min-width:36px;min-height:36px;width:36px;height:36px;font-size:.88rem;box-shadow:0 1px 10px #1a473124}@media (max-width:1023px),(pointer:coarse){header .lock-btn{min-height:36px;min-width:36px;padding:6px 8px;font-size:.78rem}header .install-btn .lock-label{display:none}header .user-badge{min-height:36px;padding:3px 8px;font-size:.76rem}header .app-version-badge{min-height:26px;padding:2px 6px}header .realtime-prof-wrap{min-height:28px}}.empty{text-align:center;padding:40px 20px;color:#bbb}.empty-icon{font-size:2.5rem;margin-bottom:10px;opacity:.72}.empty p{font-size:.9rem;color:#6b7280;line-height:1.5}.fade-in{animation:fadeIn .22s var(--ease-out) both}@keyframes fadeIn{0%{opacity:0;transform:translate3d(0,8px,0)}to{opacity:1;transform:translateZ(0)}}.stagger>*{animation:fadeIn .22s var(--ease-out) both}.stagger>*:nth-child(1){animation-delay:.04s}.stagger>*:nth-child(2){animation-delay:.08s}.stagger>*:nth-child(3){animation-delay:.12s}.stagger>*:nth-child(4){animation-delay:.16s}.stagger>*:nth-child(5){animation-delay:.2s}.stagger>*:nth-child(n+6){animation-delay:.22s}.toast{position:fixed;bottom:calc(var(--bottom-nav-height) + var(--safe-bottom) + 12px);left:50%;transform:translate(-50%);background:linear-gradient(160deg,#1a4731f5,#1a4731e0);color:#fff;padding:11px 16px;border-radius:16px;font-size:.88rem;z-index:500;pointer-events:none;white-space:normal;max-width:min(90vw,560px);text-wrap:balance;line-height:1.35;text-align:center;animation:toastIn .35s var(--spring) forwards;box-shadow:0 16px 30px #1a473142;border:1px solid rgba(255,255,255,.18)}@media (min-width:1024px) and (hover:hover) and (pointer:fine){.bottom-nav{justify-content:flex-start;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.bottom-nav::-webkit-scrollbar{display:none}.nav-btn{flex:0 0 auto;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-width:112px;max-width:182px;min-height:52px;padding:8px 10px;overflow-wrap:anywhere;white-space:normal;text-overflow:clip;font-size:.72rem;line-height:1.05}.nav-btn .nav-icon{font-size:1.2rem}.nav-btn:after{bottom:4px}.field label{font-size:.74rem}.field input,.field select,.field textarea{padding:10px 12px}.btn{min-height:40px;padding:10px 16px;font-size:.95rem}.btn-sm{min-height:34px;padding:7px 11px;font-size:.8rem}.section-sub{font-size:.82rem}.app-version-badge{font-size:.64rem}}@keyframes toastIn{0%{opacity:0;transform:translate3d(-50%,16px,0) scale3d(.92,.92,1)}to{opacity:1;transform:translate3d(-50%,0,0) scaleZ(1)}}.divider{height:1px;background:var(--mint);margin:20px 0}.img-upload-area{border:2px dashed var(--mint);border-radius:12px;padding:28px 20px;text-align:center;cursor:pointer;transition:background .2s,border-color .2s,transform .12s var(--spring);background:var(--cream);-webkit-tap-highlight-color:transparent}.img-upload-area:active{background:#f0fdf4;border-color:var(--sage);transform:scale(.98)}.img-upload-area input{display:none}.img-upload-area.img-upload-area--split{cursor:default}.img-upload-area.img-upload-area--split:active{transform:none;background:var(--cream);border-color:var(--mint)}.img-preview{width:100%;max-height:220px;object-fit:cover;border-radius:10px;margin-top:10px}.img-preview-wrap{position:relative}.img-remove{position:absolute;top:10px;right:10px;background:#0000008c;color:#fff;border:none;border-radius:50%;width:32px;height:32px;cursor:pointer;font-size:1rem;display:flex;align-items:center;justify-content:center;transition:transform .12s var(--spring)}.img-remove:active{transform:scale(.85)}.profile-avatar-row{display:flex;align-items:center;gap:12px;margin-bottom:8px}.profile-avatar-help{font-size:.82rem;color:#666;line-height:1.4}.profile-avatar-actions{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}.student-avatar{box-shadow:0 1px 4px #00000014;flex-shrink:0}.log-entry{background:var(--parchment);border-radius:10px;padding:14px;margin-bottom:10px}.log-entry-header{display:flex;justify-content:space-between;flex-wrap:wrap;gap:4px;margin-bottom:8px;font-size:.82rem;color:#aaa}.log-entry-author{font-weight:700;color:var(--forest)}.log-comment{font-size:.9rem;color:#333;line-height:1.55;margin-bottom:10px}.log-image{width:100%;border-radius:8px;max-height:250px;object-fit:cover;cursor:pointer;transition:transform .15s}.log-image:active{transform:scale(.97)}.plant-manager{display:flex;flex-direction:column}.plant-row{display:flex;align-items:flex-start;gap:12px;padding:14px 0;border-bottom:1px solid rgba(183,228,199,.5);transition:background .15s}.plant-row:last-child{border-bottom:none}.plant-emoji-big{font-size:1.8rem;width:38px;text-align:center;flex-shrink:0;font-family:var(--font-emoji-stack)}.plant-info{flex:1;min-width:0}.plant-row-name{font-weight:600;font-size:.95rem;color:var(--forest)}.plant-scientific{font-size:.78rem;color:#8a8a8a;font-style:italic;margin-top:2px}.plant-row-desc{font-size:.82rem;color:#6f6f6f;margin-top:4px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.plant-inline-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.plant-inline-meta span{background:#f5f5f5;color:#63706a;border-radius:999px;padding:3px 8px;font-size:.72rem;font-weight:600}.plant-badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.plant-badge{background:var(--parchment);color:var(--soil);border-radius:999px;padding:4px 9px;font-size:.73rem;font-weight:600}.plant-ecology-lead{margin-top:6px;margin-bottom:6px;display:flex;flex-direction:column;gap:10px}.plant-more{margin-top:8px;border:1px solid rgba(183,228,199,.7);border-radius:10px;background:#fbfefc;overflow:hidden}.plant-more>summary{list-style:none;cursor:pointer;padding:9px 10px;font-size:.78rem;font-weight:700;color:var(--leaf);display:flex;align-items:center;justify-content:space-between}.plant-more>summary::-webkit-details-marker{display:none}.plant-more>summary:after{content:"▾";color:#7c9a88;font-size:.78rem}.plant-more[open]>summary:after{content:"▴"}.plant-meta-grid{border-top:1px solid rgba(183,228,199,.6);display:grid;gap:8px;padding:10px}.plant-meta-item{display:flex;flex-direction:column;gap:3px}.plant-meta-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.05em;color:#8aa193;font-weight:700}.plant-meta-value,.plant-links{font-size:.82rem;color:#42544a;line-height:1.45;word-break:break-word}.plant-links{display:flex;flex-direction:column;gap:4px}.plant-links a{color:var(--leaf);text-decoration:underline;text-underline-offset:2px}.plant-source-link{display:inline-flex;align-items:center;width:fit-content;max-width:100%;background:#eefbf3;border:1px solid rgba(82,183,136,.25);border-radius:999px;padding:2px 8px;text-decoration:none;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.plant-source-link:hover,.plant-source-link:focus-visible{background:#e2f7eb;border-color:#52b78873;outline:none}.plant-photo-grid{display:flex;flex-wrap:nowrap;gap:8px;overflow-x:auto;overflow-y:hidden;padding-bottom:2px;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.plant-photo-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid rgba(183,228,199,.8);border-radius:10px;overflow:hidden;background:#f0fdf4;padding:0;position:relative;cursor:pointer;min-height:44px;flex:0 0 140px;aspect-ratio:4 / 3;transition:transform .12s var(--spring),box-shadow .2s,border-color .2s;box-shadow:0 1px 4px #0000000f}.plant-photo-thumb img{width:100%;height:100%;object-fit:cover;display:block}.plant-photo-thumb:active{transform:scale(.97)}.plant-photo-thumb:hover,.plant-photo-thumb:focus-visible{border-color:var(--sage);box-shadow:0 4px 16px #0000001f;outline:none}.plant-photo-overlay{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(180deg,#0000,#000000a6);color:#fff;font-size:.72rem;font-weight:600;text-align:right;padding:16px 8px 6px;opacity:.95}.plant-actions{display:flex;gap:6px;flex-shrink:0}.plant-edit-form{background:#f0fdf4;border-radius:12px;padding:16px;border:1.5px dashed var(--sage);margin-bottom:12px;animation:fadeIn .2s var(--ease-out)}.plant-edit-form h4{font-size:.9rem;font-weight:700;color:var(--forest);margin-bottom:12px}.plant-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.emoji-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}.emoji-btn{font-family:var(--font-emoji-stack);font-size:1.3rem;padding:6px 10px;border:1.5px solid var(--mint);border-radius:8px;cursor:pointer;background:#fff;min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center;transition:transform .12s var(--spring),background .15s,border-color .15s;-webkit-tap-highlight-color:transparent}.emoji-btn:active{transform:scale(.85)}.emoji-btn.sel{background:var(--mint);border-color:var(--sage);transform:scale(1.1)}.plant-prefill-photo-field{border:1px solid #e5e7eb;border-radius:10px;padding:10px 10px 8px;background:#fff}.plant-prefill-photo-field-title{font-size:.82rem;font-weight:600;color:var(--forest);margin-bottom:8px}.plant-prefill-photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}.plant-prefill-photo-card{padding:10px;border-radius:10px;border:1.5px solid #e8ece9;cursor:pointer;transition:border-color .15s,box-shadow .15s,background .15s;-webkit-tap-highlight-color:transparent}.plant-prefill-photo-card:hover{border-color:var(--mint);background:#fafdfb}.plant-prefill-photo-card--selected{border-color:var(--sage);background:#f0fdf4;box-shadow:0 0 0 1px #4a7c5933}.plant-prefill-photo-card-row{display:flex;align-items:flex-start;gap:10px}.plant-prefill-photo-check{flex-shrink:0;margin-top:6px;accent-color:var(--forest)}.plant-prefill-photo-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px}.plant-prefill-photo-assign-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding-bottom:4px;border-bottom:1px dashed rgba(26,71,49,.12)}.plant-prefill-photo-assign-label{font-size:.72rem;font-weight:600;color:#444;margin:0}.plant-prefill-photo-assign{flex:1;min-width:min(100%,160px);max-width:100%;font-size:.75rem;padding:4px 8px;border-radius:8px;border:1px solid rgba(26,71,49,.2);background:#fff;color:#222}.plant-prefill-photo-assign:disabled{opacity:.55;cursor:not-allowed}.plant-prefill-photo-thumb-wrap{width:100%;height:120px;border-radius:8px;overflow:hidden;background:#f4f4f5;display:flex;align-items:center;justify-content:center}.plant-prefill-photo-thumb{width:100%;height:100%;object-fit:contain;display:block}.plant-prefill-photo-thumb-fallback{font-size:.72rem;color:#888;text-align:center;padding:12px 8px;line-height:1.35}.plant-prefill-photo-meta{display:flex;flex-direction:column;gap:4px;font-size:.72rem;color:#555}.plant-prefill-photo-url,.plant-prefill-photo-source{font-weight:600;color:var(--forest);text-decoration:underline;text-underline-offset:2px;word-break:break-all}.plant-prefill-photo-source{font-weight:500;color:#3d6b4a}.plant-prefill-photo-credit{color:#666;line-height:1.35}.stats-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:20px}.audit-subtabs{margin-bottom:14px}.audit-subtabs .top-tab{flex:0 0 auto;min-width:150px}.audit-stats-grid{margin-bottom:14px}.audit-stats-details .activity-title{white-space:normal}@media (max-width:620px){.audit-stats-grid{grid-template-columns:1fr}}.stat-card{background:#fff;border-radius:14px;padding:16px 12px;box-shadow:0 1px 6px #0000000d;text-align:center;border:1.5px solid transparent;animation:statPop .4s var(--spring) both}.stat-card:nth-child(1){animation-delay:.05s}.stat-card:nth-child(2){animation-delay:.1s}.stat-card:nth-child(3){animation-delay:.15s}.stat-card:nth-child(4){animation-delay:.2s}@keyframes statPop{0%{opacity:0;transform:scale3d(.88,.88,1) translate3d(0,10px,0)}to{opacity:1;transform:scaleZ(1) translateZ(0)}}.stat-card.highlight{border-color:var(--sage);background:#f7fef9}.stat-number{font-family:Playfair Display,serif;font-size:clamp(1.85rem,1.45rem + 1vw,2.2rem);font-weight:700;color:var(--forest);line-height:1}.stat-label{font-size:.7rem;color:#aaa;margin-top:4px;text-transform:uppercase;letter-spacing:.07em}.stat-icon{font-size:1.3rem;margin-bottom:6px}.activity-list{background:#fff;border-radius:14px;padding:14px;box-shadow:0 1px 6px #0000000d}.activity-item{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid rgba(183,228,199,.4)}.activity-item:last-child{border-bottom:none}.activity-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.activity-dot.validated{background:var(--sage)}.activity-dot.done{background:var(--sun)}.activity-dot.in_progress{background:#93c5fd}.activity-dot.available{background:#e5e7eb;border:1.5px solid #ccc}.activity-info{flex:1;min-width:0}.activity-title{font-size:.9rem;font-weight:500;color:var(--forest);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.activity-meta{font-size:.76rem;color:#bbb}.leaderboard{background:#fff;border-radius:14px;overflow:hidden;box-shadow:0 1px 6px #0000000d}.lb-row{display:flex;align-items:center;gap:10px;padding:14px;border-bottom:1px solid rgba(183,228,199,.4);transition:background .15s;animation:fadeIn .22s var(--ease-out) both}.lb-row:last-child{border-bottom:none}.lb-rank{font-family:Playfair Display,serif;font-size:1.1rem;font-weight:700;color:var(--leaf);width:28px;text-align:center;flex-shrink:0}.lb-rank.gold{color:#b45309}.lb-rank.silver{color:#6b7280}.lb-rank.bronze{color:#92400e}.lb-name{flex:1;min-width:0}.lb-name strong{font-size:.92rem;color:var(--forest);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lb-name small{display:block;font-size:.72rem;color:#bbb}.lb-stat{text-align:center;min-width:36px}.lb-stat-num{font-weight:700;font-size:.95rem;color:var(--forest)}.lb-stat-label{font-size:.62rem;color:#ccc;text-transform:uppercase}.lb-bar-bg{background:#e5e7eb;border-radius:4px;height:6px;overflow:hidden;margin-top:4px}.lb-bar-fill{background:var(--sage);border-radius:4px;height:6px;transition:width .6s var(--ease-out)}@media (max-width:500px){.lb-bar-bg{display:none}.lb-row{gap:8px;padding:12px}}@media (max-width:760px){.lb-row{align-items:flex-start;gap:8px}.lb-stats{display:grid!important;grid-template-columns:repeat(2,minmax(32px,1fr));gap:6px 8px;align-self:center;min-width:88px}.lb-stat{min-width:0}.lb-stat-num{font-size:.86rem;line-height:1.1}.lb-stat-label{font-size:.58rem}.lb-profile-badge{max-width:180px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lb-description{display:none}.lb-name small{margin-top:2px}}@media (max-width:520px){.lb-row{display:grid;grid-template-columns:24px 34px minmax(0,1fr) auto;align-items:center;column-gap:8px}.lb-rank{width:24px;font-size:1rem}.lb-stats{grid-template-columns:repeat(2,minmax(30px,1fr));gap:5px 6px}.lb-pseudo{display:none}.lb-profile-badge{max-width:140px}.lb-stat-total{display:none}}@media (max-width:390px){.lb-profile-badge-wrap,.lb-stat-submitted{display:none}.lb-stats{grid-template-columns:repeat(2,minmax(28px,1fr))}}.task-filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px;animation:fadeIn .22s var(--ease-out)}.task-filters input,.task-filters select{padding:9px 12px;border:1.5px solid var(--mint);border-radius:8px;background:#fff;color:var(--forest);font-family:var(--font-sans);font-size:.85rem;outline:none;min-height:38px;transition:border-color .18s,box-shadow .18s}.task-filters input{flex:1;min-width:120px}.task-filters select{min-width:100px}.task-filters input:focus,.task-filters select:focus{border-color:var(--sage);box-shadow:0 0 0 3px #52b7881f}.tasks-view{display:grid;gap:8px}.urgency-banner{background:linear-gradient(135deg,#fff7ed,#fff1f2);border:1.5px solid #fed7aa;border-radius:12px;padding:14px;margin-bottom:16px;animation:fadeIn .3s var(--ease-out)}.urgency-banner h4{font-size:.82rem;font-weight:700;color:#c2410c;margin-bottom:8px;display:flex;align-items:center;gap:6px}.urgency-item{display:flex;align-items:center;gap:10px;padding:6px 0;border-bottom:1px solid rgba(254,215,170,.5);font-size:.88rem}.urgency-item:last-child{border-bottom:none}.urgency-days{font-weight:700;color:#ea580c;min-width:55px;font-size:.78rem}.rank-progress{margin-bottom:20px}.rank-bar-bg{background:#e5e7eb;border-radius:8px;height:10px;overflow:hidden;margin-top:8px}.rank-bar-fill{height:10px;border-radius:8px;transition:width .8s var(--ease-out);background:linear-gradient(90deg,var(--sage),var(--forest))}.rank-steps{display:flex;justify-content:space-between;margin-top:6px;font-size:.68rem;color:#aaa}.rank-steps span.current{color:var(--forest);font-weight:700}.obs-card{background:#fff;border-radius:12px;padding:14px;margin-bottom:10px;box-shadow:0 1px 6px #0000000d;border-left:4px solid var(--sage)}.obs-header{display:flex;justify-content:space-between;margin-bottom:6px}.obs-author{font-weight:600;font-size:.88rem;color:var(--forest)}.obs-date{font-size:.76rem;color:#bbb}.obs-content{font-size:.9rem;color:#444;line-height:1.55}.obs-zone{font-size:.76rem;color:var(--soil);margin-top:4px}.plant-viewer-card{background:#fff;border-radius:14px;padding:16px;margin-bottom:10px;box-shadow:0 1px 6px #0000000d;cursor:pointer;border:1.5px solid transparent;transition:border-color .2s,transform .12s var(--spring)}.plant-viewer-head{display:flex;align-items:center;gap:12px;cursor:pointer}.plant-viewer-card:active{transform:scale(.98)}.plant-viewer-card.expanded{border-color:var(--sage)}.plant-zones{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.plant-zone-chip{background:var(--parchment);border-radius:6px;padding:3px 8px;font-size:.74rem;color:var(--soil)}@media (max-width:620px){.plant-form-grid{grid-template-columns:1fr}.plant-actions{flex-direction:column}}.export-row{display:flex;gap:8px;margin-bottom:16px}.tuto-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(250px,100%),1fr));gap:12px;margin-top:10px}.tuto-card{background:var(--surface-1);border:1px solid var(--outline-soft);border-radius:16px;box-shadow:0 8px 24px #1a47311a;padding:14px;transform:translateY(0);transition:transform .18s var(--spring),box-shadow .2s var(--ease-out),border-color .2s var(--ease-out)}.tuto-card-cover,.tuto-editor-cover-preview{display:block;width:100%;max-height:168px;object-fit:cover;border-radius:10px;margin:0 0 10px;border:1px solid rgba(0,0,0,.06)}.tuto-editor-cover-preview{max-height:140px;margin-top:8px}.tuto-card:hover{transform:translateY(-2px);border-color:var(--sage);box-shadow:0 10px 28px #1a47311f}.tuto-card.archived{background:linear-gradient(180deg,#f8f8f8,#f3f5f3);border-color:#cfd6cf;box-shadow:0 4px 14px #323c341a;opacity:.95}.tuto-card.archived:hover{border-color:#b8c1b8;box-shadow:0 8px 18px #323c3424}.tuto-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:8px}.tuto-card h3{font-size:1rem;margin-bottom:4px;color:var(--forest)}.tuto-card p{font-size:.84rem;color:#4c5b52;line-height:1.45}.task-chip.archived{background:#ecefee;color:#5f6b60;border:1px solid #cfd6cf}.tuto-editor{border-left:4px solid var(--sage);margin-bottom:12px}.modal-overlay.modal-overlay--tuto-preview{z-index:400;align-items:center;justify-content:center;padding:max(10px,var(--safe-top)) max(12px,env(safe-area-inset-right,0px)) max(10px,var(--safe-bottom)) max(12px,env(safe-area-inset-left,0px));box-sizing:border-box}.modal-overlay.modal-overlay--tuto-read-ack{z-index:460}.modal-overlay.modal-overlay--tuto-preview>.log-modal.tuto-preview-modal{width:min(100%,calc(100vw - 24px));max-width:min(1120px,calc(100vw - 24px));flex:0 1 auto;min-height:0;height:min(92dvh,calc(100dvh - var(--safe-top) - var(--safe-bottom) - 24px));max-height:min(92dvh,calc(100dvh - var(--safe-top) - var(--safe-bottom) - 24px));display:flex;flex-direction:column;overflow:hidden;padding:0;border-radius:14px}.tuto-preview-modal__head{position:relative;flex-shrink:0;padding:12px 48px 10px 16px;text-align:center;border-bottom:1px solid rgba(45,106,79,.12)}.tuto-preview-modal__head .modal-close{top:8px;right:8px}.log-modal.tuto-preview-modal h3{margin:0;font-size:clamp(1rem,.92rem + .35vw,1.12rem);line-height:1.35;color:var(--forest);text-wrap:balance}.tuto-preview-modal__body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;padding:10px 12px 12px;overflow:hidden}.tuto-preview-modal__body--empty{overflow:auto;-webkit-overflow-scrolling:touch;align-items:center;justify-content:center}.tuto-preview-modal__body--biodiv-scroll{overflow:auto;-webkit-overflow-scrolling:touch;align-items:stretch}.tuto-preview-modal__foot{flex-shrink:0;padding:10px 14px 12px;border-top:1px solid rgba(45,106,79,.12);display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;background:var(--parchment)}.tuto-preview-frame{flex:1 1 auto;min-height:0;width:100%;align-self:stretch;border:1px solid rgba(0,0,0,.08);border-radius:10px;margin:0;background:#fff}@media (max-width:768px){.modal-overlay.modal-overlay--tuto-preview{padding:max(8px,var(--safe-top)) max(8px,env(safe-area-inset-right,0px)) max(8px,var(--safe-bottom)) max(8px,env(safe-area-inset-left,0px))}.modal-overlay.modal-overlay--tuto-preview>.log-modal.tuto-preview-modal{border-radius:12px;height:min(94dvh,calc(100dvh - var(--safe-top) - var(--safe-bottom) - 16px));max-height:min(94dvh,calc(100dvh - var(--safe-top) - var(--safe-bottom) - 16px))}.tuto-preview-modal__head{padding:10px 44px 8px 12px}.tuto-preview-modal__body,.tuto-preview-modal__foot{padding:8px 10px 10px}}button.task-chip.living-being-catalog-chip{cursor:pointer;font:inherit;text-align:center;min-height:44px;padding:6px 12px;box-sizing:border-box}button.task-chip.living-being-catalog-chip:hover{filter:brightness(.97)}a.task-chip.task-tutorial-chip,button.task-chip.task-tutorial-chip{cursor:pointer;font:inherit;text-align:center;text-decoration:none;color:inherit;display:inline-flex;align-items:center;min-height:44px;padding:6px 12px;box-sizing:border-box;border:none;background:transparent}a.task-chip.task-tutorial-chip:hover,button.task-chip.task-tutorial-chip:hover{filter:brightness(.97)}button.task-chip.tuto-linked-tasks-pill{cursor:pointer;font:inherit;border:none;text-align:left}button.task-chip.tuto-linked-tasks-pill:hover{filter:brightness(.97)}.tuto-linked-tasks-modal{width:min(520px,96vw);max-height:calc(100dvh - var(--safe-top) - var(--safe-bottom));display:flex;flex-direction:column}.tuto-linked-tasks-subtitle{margin:6px 0 12px;font-size:.9rem;color:#4c5b52;line-height:1.4}.tuto-linked-tasks-loading,.tuto-linked-tasks-empty{margin:12px 0;color:#5f6b60}.tuto-linked-tasks-error{margin:12px 0;color:#b91c1c}.tuto-linked-tasks-list{list-style:none;margin:0;padding:0;overflow:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;flex:1;min-height:0;border:1px solid rgba(0,0,0,.08);border-radius:10px;background:#ffffffa6}.tuto-linked-tasks-row{padding:12px 14px;border-bottom:1px solid rgba(0,0,0,.06)}.tuto-linked-tasks-row:last-child{border-bottom:none}.tuto-linked-tasks-row-title{font-weight:600;font-size:.95rem;color:#2d3b2d;margin-bottom:8px}.tuto-linked-tasks-row-meta{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.tuto-reorder-modal{width:min(520px,96vw);max-height:calc(100vh - var(--safe-top) - var(--safe-bottom));max-height:calc(100dvh - var(--safe-top) - var(--safe-bottom));display:flex;flex-direction:column}.tuto-reorder-hint{margin:8px 0 12px;font-size:.9rem;line-height:1.45;color:#4c5b52}.tuto-reorder-list{list-style:none;margin:0 0 14px;padding:0;overflow:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;flex:1;min-height:0;border:1px solid rgba(0,0,0,.08);border-radius:10px;background:#fff9}.tuto-reorder-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid rgba(0,0,0,.06);cursor:grab;touch-action:none}.tuto-reorder-row:last-child{border-bottom:none}.tuto-reorder-row:active{cursor:grabbing}.tuto-reorder-row.archived{opacity:.85}.tuto-reorder-grip{flex-shrink:0;color:#8a9a8e;font-size:.85rem;letter-spacing:-.05em;-webkit-user-select:none;user-select:none}.tuto-reorder-row-title{flex:1;min-width:0;font-weight:600;font-size:.95rem;color:#2d3b2d}.tuto-reorder-actions{flex-shrink:0;display:flex;gap:4px}.tuto-reorder-footer{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}.tuto-read-ack-modal{width:min(440px,94vw)}.tuto-read-ack-intro{margin:12px 0 14px;line-height:1.45;color:#3d4a3d}.tuto-read-ack-check{display:flex;align-items:flex-start;gap:10px;cursor:pointer;font-size:.95rem;line-height:1.4;margin-bottom:12px}.tuto-read-ack-check input{margin-top:3px;flex-shrink:0;min-width:18px;min-height:18px}.tuto-read-ack-error{color:#b91c1c;font-size:.9rem;margin:0 0 10px}.tuto-read-ack-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-top:8px}.tuto-read-badge{background:#22c55e1f;border-color:#22c55e59;color:#166534}.plant-discovery-observed-wrap{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}.plant-discovery-observed-counts{font-size:.82rem;color:#64748b;line-height:1.35}.plant-discovery-observed-counts__mine{font-weight:600;color:#334155}.plant-discovery-observed-counts__site{font-weight:500}.biodiv-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(270px,100%),1fr));gap:12px}.biodiv-card{background:#fff;border:1.5px solid var(--mint);border-radius:14px;box-shadow:0 6px 20px #1a473114;padding:14px;transition:transform .18s var(--spring),box-shadow .2s var(--ease-out),border-color .2s var(--ease-out)}.biodiv-card:hover{transform:translateY(-2px);border-color:var(--sage);box-shadow:0 10px 28px #1a47311f}.biodiv-card.expanded{border-color:var(--sage);box-shadow:0 8px 24px #1a47311f}.biodiv-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:8px}.biodiv-card-title-wrap{display:flex;align-items:flex-start;gap:10px;min-width:0;flex:1}.biodiv-card-title-content h3{font-size:1rem;margin-bottom:4px;color:var(--forest)}.biodiv-emoji{font-size:1.8rem;line-height:1;flex-shrink:0;font-family:var(--font-emoji-stack)}.biodiv-card-body{display:grid;gap:8px;margin-bottom:8px}.biodiv-card-hero-photo-wrap{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:block;width:100%;margin:4px 0 2px;padding:0;border:1px solid rgba(183,228,199,.85);border-radius:12px;overflow:hidden;cursor:zoom-in;background:#f0fdf4;position:relative;line-height:0;text-align:left;box-shadow:0 1px 5px #0000000f;transition:border-color .15s,box-shadow .15s}.biodiv-card-hero-photo-wrap:hover,.biodiv-card-hero-photo-wrap:focus-visible{border-color:var(--sage);box-shadow:0 4px 14px #0000001a;outline:none}.biodiv-card-hero-photo{width:100%;max-height:220px;object-fit:contain;display:block;background:#eef6f0}.biodiv-card-hero-photo-hint{position:absolute;right:0;bottom:0;left:0;padding:18px 8px 6px;font-size:.72rem;font-weight:600;color:#fff;text-align:right;background:linear-gradient(180deg,#0000,#0000009e);pointer-events:none}.biodiv-location-maps{display:grid;gap:10px}.biodiv-location-map-wrap{min-width:0}.biodiv-location-map-label{font-size:.72rem;font-weight:700;color:#64748b;text-transform:uppercase;margin-bottom:4px;letter-spacing:.02em}.biodiv-location-map-stage{position:relative;border-radius:10px;overflow:hidden;border:1px solid rgba(0,0,0,.08);background:#eef2ee;aspect-ratio:16 / 10;max-height:220px}.biodiv-location-map-fit-layer{position:absolute;box-sizing:border-box}.biodiv-location-map-img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;pointer-events:none}.biodiv-location-map-svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.biodiv-location-marker-dot{fill:#6366f1;stroke:#fff;stroke-width:.35;filter:drop-shadow(0 0 3px rgba(99,102,241,.45))}.biodiv-card-edit{padding:0;overflow:hidden}.biodiv-toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:transparent;width:100%;text-align:left;cursor:pointer;padding:0;min-height:44px;font-family:var(--font-sans)}@media (prefers-reduced-motion: reduce){.tuto-card,.tuto-card:hover,.task-card--tile,.task-card--tile:hover,.nav-btn .nav-icon,.top-tab,.btn{transition:none!important;transform:none!important}}.visit-view{display:grid;gap:14px}.visit-header-row{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;flex-wrap:wrap}.visit-header-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.visit-map-switch{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.visit-map-switch{padding:8px 10px;border-radius:12px;background:#ffffff8c;border:1px solid rgba(82,183,136,.2);overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none}.visit-map-switch::-webkit-scrollbar{display:none}.visit-map-switch-select{width:min(100%,360px);min-height:40px;border:1px solid rgba(82,183,136,.45);border-radius:10px;background:#fff;color:var(--soil);font-weight:600;padding:8px 10px}.visit-progress{display:flex;align-items:center}.visit-progress--donut{margin:2px 0 0;padding:0;background:transparent;border:none;box-shadow:none}.visit-progress--chrome-inline.visit-progress--donut{margin:0;align-self:center}.visit-progress-donut{position:relative;width:52px;height:52px;flex-shrink:0}.visit-progress-donut__svg{width:100%;height:100%;display:block}.visit-progress-donut__track{stroke:#1a473124}.visit-progress-donut__arc{stroke:var(--forest);opacity:.88;transition:stroke-dashoffset .32s ease}@media (prefers-reduced-motion: reduce){.visit-progress-donut__arc{transition:none}}.visit-progress-donut__label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;gap:0;padding-bottom:1px;font-variant-numeric:tabular-nums;line-height:1;color:var(--forest);pointer-events:none}.visit-progress-donut__value{font-size:.78rem;font-weight:700;letter-spacing:-.02em}.visit-progress-donut__pct-sign{font-size:.58rem;font-weight:700;margin-left:1px;opacity:.92;align-self:center;transform:translateY(-.08em)}.visit-progress-empty{margin:0}.visit-progress-empty--inline{margin:0;font-size:.8rem;padding:2px 0}.visit-progress-empty--below-chrome{margin:6px 0 0;width:100%;font-size:.8rem}.visit-map-card__chrome{display:flex;flex-direction:column;align-items:stretch;gap:8px;padding-bottom:8px;margin-bottom:2px;border-bottom:1px solid rgba(82,183,136,.15)}.visit-map-card__chrome-top{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;width:100%;min-width:0}.visit-map-card__chrome-title-line{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;flex:1 1 auto;min-width:0}.visit-map-card__chrome-maps{width:100%;min-width:0}.visit-map-card__title{margin:0;font-size:clamp(1.05rem,1rem + .5vw,1.35rem)}.visit-map-card__presentation-btn{flex-shrink:0;font-weight:700;box-shadow:0 1px 2px #00000014}@media (prefers-reduced-motion:no-preference){.visit-map-card__presentation-btn--invite{animation:visitPresentationInvite 1.75s ease-in-out infinite;will-change:transform,box-shadow}}@keyframes visitPresentationInvite{0%,to{transform:scale(1);box-shadow:0 1px 2px #00000014,0 0 #52b78873}50%{transform:scale(1.045);box-shadow:0 2px 10px #52b78859,0 0 0 10px #52b78800}}.visit-map-switch--embedded{width:100%}.visit-map-card__chrome-actions{display:flex;flex-wrap:wrap;align-items:center;gap:6px;justify-content:flex-end;flex:0 1 auto;margin-inline-start:auto}.visit-network-status{display:inline-flex;align-items:center;max-width:min(100%,220px);padding:4px 10px;border-radius:999px;font-size:.78rem;font-weight:500;line-height:1.25;color:#1a4731;background:#e8f5ec;border:1px solid #b7dfc4}.visit-network-status--offline{color:#78350f;background:#fef3c7;border-color:#f59e0b}.visit-network-status--pending,.visit-network-status--syncing{color:#1e3a5f;background:#e0f2fe;border-color:#7dd3fc}.visit-map-empty-hint{margin:8px 0 0;text-align:center;color:#5b655f;font-size:.88rem}.visit-detail-panel{position:fixed;top:0;right:0;bottom:0;left:0;z-index:320;width:100%;max-width:none;height:100%;max-height:100dvh;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-right:env(safe-area-inset-right,0px);padding-bottom:env(safe-area-inset-bottom,0px);padding-left:env(safe-area-inset-left,0px);background:var(--surface-1);border:none;border-radius:0;box-shadow:none;display:flex;flex-direction:column;overscroll-behavior:contain}@media (prefers-reduced-motion: no-preference){.visit-detail-panel{animation:visitDetailPanelIn .2s ease-out}}@keyframes visitDetailPanelIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.visit-detail-panel__handle{display:none;height:5px;width:44px;border-radius:999px;background:#0000002e;margin:8px auto 4px;flex-shrink:0}.visit-detail-panel__head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:12px 14px 8px;border-bottom:1px solid var(--outline-soft);flex-shrink:0;background:var(--surface-1);position:sticky;top:0;z-index:2}.visit-reading-tone-switch{display:flex;gap:4px;flex-wrap:wrap;align-items:center}.visit-detail-panel__title{margin:0;font-size:1.05rem;line-height:1.25;color:var(--forest);flex:1;min-width:0;overflow-wrap:anywhere}.visit-detail-panel__body{overflow:auto;padding:12px 14px 18px;flex:1;min-height:0}.visit-detail-panel--comfortable .visit-detail-panel__body{padding:18px 18px 24px}.visit-detail-panel--comfortable .visit-editorial{gap:16px}.visit-detail-panel--comfortable .visit-editorial-paragraph .markdown-content{font-size:1rem;line-height:1.74}.visit-detail-panel--tone-nature .visit-editorial-paragraph .markdown-content{color:#22372e}.visit-detail-panel--tone-paper .visit-detail-panel__body{background:linear-gradient(180deg,#f9f6ef,#f8f4ea)}.visit-detail-panel--tone-paper .visit-editorial-paragraph .markdown-content{color:#3e3527}.visit-detail-panel--tone-paper .visit-details{background:#fffdfa;border-color:#eadfc9}.visit-detail-panel--tone-soft-contrast .visit-detail-panel__body{background:linear-gradient(180deg,#f6fbff,#eef7ff)}.visit-detail-panel--tone-soft-contrast .visit-editorial-paragraph .markdown-content{color:#17324a}.visit-detail-panel--tone-soft-contrast .visit-details{background:#f3f9ff;border-color:#c8def3}@media (min-width: 980px){.visit-detail-panel{top:4dvh;left:50%;right:auto;bottom:auto;width:min(820px,calc(100vw - 40px));height:auto;max-height:92dvh;border:1px solid var(--outline-soft);border-radius:16px;box-shadow:0 24px 48px #0000002e;transform:translate(-50%)}.visit-detail-panel__body{padding:16px 20px 22px}}@media (max-width: 760px){.visit-reading-tone-switch{width:100%;order:3}}@media (prefers-reduced-motion: reduce){.visit-detail-panel{animation:none!important}}.visit-tutorials-disclosure{background:var(--surface-1);border:1px solid var(--outline-soft);border-radius:14px;padding:10px 12px;box-shadow:var(--shadow-soft)}.visit-tutorials-disclosure__summary{cursor:pointer;font-weight:700;color:var(--forest)}.visit-tutorials-disclosure__body{margin-top:10px}.visit-tutorials--in-disclosure{padding:0;border:none;box-shadow:none;background:transparent}.visit-prof-tools{margin-top:12px;background:var(--surface-1);border:1px solid var(--outline-soft);border-radius:14px;padding:10px 12px;box-shadow:var(--shadow-soft)}.visit-prof-tools__summary{cursor:pointer;font-weight:700;color:var(--forest)}.visit-prof-tools__body{margin-top:12px;display:grid;gap:12px}.visit-view--map-forward .visit-map-card{display:flex;flex-direction:column;min-height:0}.visit-view--map-forward .visit-map-stage{min-height:min(58dvh,720px);aspect-ratio:unset}.visit-view--immersion .visit-map-stage{min-height:min(72dvh,880px)}.visit-prof-tools .visit-mascot-preview-card{margin-bottom:0}.visit-sync-card{background:var(--surface-1);border:1px solid var(--outline-soft);border-radius:14px;box-shadow:var(--shadow-soft);padding:12px;display:grid;gap:10px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.visit-sync-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}@media (max-width:860px){.visit-sync-grid{grid-template-columns:1fr}}.visit-sync-list{background:#f8fbf9;border:1px solid var(--mint);border-radius:10px;padding:10px;max-height:220px;overflow:auto;display:grid;gap:6px}.visit-sync-list h4{margin:0 0 4px;color:var(--forest);font-size:.9rem}.visit-sync-item{display:block;font-size:.85rem;color:#244437}.visit-sync-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.visit-grid{display:grid;grid-template-columns:1fr;gap:12px}.visit-grid.visit-grid--map-forward{grid-template-columns:1fr}.visit-mascot-preview-card{margin-bottom:12px;display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--surface-1);border:1px solid var(--outline-soft);border-radius:14px;box-shadow:var(--shadow-soft);padding:10px 12px}.visit-mascot-preview-card h3{margin:0 0 2px;color:var(--forest);font-size:.98rem}.visit-mascot-preview-actions{margin-top:8px;display:flex;gap:6px;flex-wrap:wrap}.visit-mascot-picker{margin-top:8px;display:flex;flex-direction:column;gap:4px;max-width:260px}.visit-mascot-picker span{font-size:.8rem;color:#365314;font-weight:700}.visit-mascot-picker select{min-height:32px;border:1px solid rgba(82,183,136,.55);border-radius:8px;background:#fff;color:#1a4731;font-weight:600;padding:4px 8px}.visit-mascot-preview-body{min-width:84px;min-height:84px;display:flex;align-items:center;justify-content:center;border-radius:10px;border:1px dashed rgba(82,183,136,.55);background:linear-gradient(135deg,#f0fdf4e6,#f8faf5e6);padding:4px;flex-shrink:0}.visit-mascot-preview-body .visit-map-mascot-rive-shell,.visit-mascot-preview-body .visit-map-mascot-spritesheet-shell{width:74px;height:82px}.visit-mascot-preview-body--motion-idle .visit-map-mascot-rive-shell,.visit-mascot-preview-body--motion-idle .visit-map-mascot-spritesheet-shell{animation:visitMascotIdleBreath 2.4s ease-in-out infinite}.visit-mascot-preview-body--motion-walk .visit-map-mascot-rive-shell,.visit-mascot-preview-body--motion-walk .visit-map-mascot-spritesheet-shell{animation:visitMascotWalkBob .36s ease-in-out infinite}.visit-mascot-preview-body--motion-happy .visit-map-mascot-rive-shell,.visit-mascot-preview-body--motion-happy .visit-map-mascot-spritesheet-shell{animation:visitMascotHappyBounce .42s ease-in-out infinite}.visit-mascot-preview-body--reduced-motion .visit-map-mascot-rive-shell,.visit-mascot-preview-body--reduced-motion .visit-map-mascot-spritesheet-shell{animation:none!important}@media (max-width:680px){.visit-mascot-preview-card{flex-direction:column;align-items:flex-start}.visit-mascot-preview-body{width:100%}}@media (max-width:860px){.visit-grid{grid-template-columns:minmax(0,1fr)}}.visit-map-card{background:var(--surface-1);border-radius:14px;border:1px solid var(--outline-soft);box-shadow:var(--shadow-soft);padding:10px;transition:box-shadow var(--motion-base),border-color var(--motion-base)}.visit-map-stage{position:relative;border-radius:10px;overflow:hidden;border:1px solid rgba(0,0,0,.08);background:#eef2ee;aspect-ratio:16/10;box-shadow:inset 0 1px #ffffff80}.visit-map-world{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;transform-origin:0 0;will-change:transform}.visit-map-fit-layer{position:absolute;box-sizing:border-box}.visit-map-fit-layer .visit-map-img{width:100%;height:100%;object-fit:contain;display:block;-webkit-user-select:none;user-select:none;pointer-events:none}.visit-map-fit-layer .visit-map-zones{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:1}.visit-zone-hit{pointer-events:all}.visit-zone-label{pointer-events:none;-webkit-user-select:none;user-select:none}.visit-zone-label--emoji{font-family:var(--font-emoji-stack);text-rendering:geometricPrecision}.visit-zone-poly{fill:#16a34a2e;stroke:#1a473185;stroke-width:.3;cursor:pointer;transition:fill .16s ease,filter .16s ease}.visit-zone-poly.is-unseen{fill:#dc26263d;animation:visitFadeRed 2.2s ease-in-out infinite;filter:drop-shadow(0 0 5px rgba(220,38,38,.42))}.visit-zone-poly.is-seen{fill:#16a34a42;animation:none;filter:drop-shadow(0 0 4px rgba(22,163,74,.35))}.visit-marker-btn{position:absolute;transform:translate(-50%,-50%) scale(calc(1 / var(--visit-map-scale, 1)));transform-origin:center;z-index:14;min-width:44px;min-height:44px;padding:2px;border:none;border-radius:0;background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-family:var(--font-emoji-stack)}.visit-marker-emoji{font-size:1.35rem;line-height:1;flex-shrink:0;font-family:var(--font-emoji-stack)}.visit-marker-indicator{position:absolute;top:-2px;right:-2px;width:10px;height:10px;border-radius:50%;border:1.5px solid white;box-shadow:0 1px 4px #0000002e}.visit-marker-indicator.is-unseen{background:#dc2626;animation:visitFadeRed 2.2s ease-in-out infinite}.visit-marker-indicator.is-seen{background:#16a34a;animation:none}.visit-map-mascot{position:absolute;z-index:16;width:0;height:0;pointer-events:none;transition:left .55s cubic-bezier(.25,.8,.25,1),top .55s cubic-bezier(.25,.8,.25,1)}.visit-map-mascot--reduced-motion{transition:none}.visit-map-mascot-inner{position:absolute;left:0;top:0;transform-origin:50% 100%}.map-view-forest-mascot{z-index:12}.visit-map-mascot-rive-shell{position:relative;width:clamp(54px,11.5vw,72px);height:clamp(62px,13vw,84px);pointer-events:none;-webkit-user-select:none;user-select:none;filter:drop-shadow(0 2px 6px rgba(26,71,49,.35))}.visit-map-mascot-static{position:absolute;top:0;right:0;bottom:0;left:0;opacity:.85}.visit-map-mascot-static svg{display:block;width:100%;height:100%}.visit-gnome-arm--front{transform-origin:91px 86px}.visit-gnome-arm--back{transform-origin:60px 87px;opacity:.9}.visit-gnome-leg--front{transform-origin:86px 111px}.visit-gnome-leg--back{transform-origin:67px 111px;opacity:.92}.visit-map-mascot-rive-shell>.visit-map-mascot-rive{position:absolute;top:0;right:0;bottom:0;left:0}.visit-map-mascot-rive svg{display:block;width:100%!important;height:100%!important}.visit-map-mascot-rive canvas{display:block;width:100%!important;height:100%!important}.visit-map-mascot-rive{width:100%;height:100%;opacity:.96}.visit-map-mascot-spritesheet-shell{position:relative;width:clamp(54px,11.5vw,72px);height:clamp(62px,13vw,84px);pointer-events:none;-webkit-user-select:none;user-select:none;filter:drop-shadow(0 2px 6px rgba(26,71,49,.35))}.visit-map-mascot-spritesheet{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;max-width:100%;max-height:100%;background-repeat:no-repeat;background-position-x:0;background-size:auto 100%;animation:visitMascotSpriteFrames calc(1s / var(--visit-sprite-fps, 8) * var(--visit-sprite-frames, 1)) steps(var(--visit-sprite-frames, 1)) infinite;image-rendering:auto}.visit-map-mascot-spritesheet--pixelated{image-rendering:pixelated}.visit-map-mascot-sprite-cut{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;max-width:100%;max-height:100%;display:flex;align-items:center;justify-content:center;pointer-events:none;-webkit-user-select:none;user-select:none}.visit-map-mascot-sprite-cut img{display:block;width:100%;height:100%;max-width:100%;max-height:100%;object-fit:contain;image-rendering:auto}.visit-map-mascot-sprite-cut.visit-map-mascot-spritesheet--pixelated img{image-rendering:pixelated}.visit-map-mascot-sprite-preload{display:none}.visit-map-mascot:not(.visit-map-mascot--walking):not(.visit-map-mascot--happy) .visit-map-mascot-rive-shell,.visit-map-mascot:not(.visit-map-mascot--walking):not(.visit-map-mascot--happy) .visit-map-mascot-spritesheet-shell{animation:visitMascotIdleBreath 2.4s ease-in-out infinite}.visit-map-mascot--walking .visit-map-mascot-rive-shell,.visit-map-mascot--walking .visit-map-mascot-spritesheet-shell{animation:visitMascotWalkBob .36s ease-in-out infinite}.visit-map-mascot--walking .visit-gnome-arm--front{animation:visitGnomeArmFrontSwing .36s ease-in-out infinite}.visit-map-mascot--walking .visit-gnome-arm--back{animation:visitGnomeArmBackSwing .36s ease-in-out infinite}.visit-map-mascot--walking .visit-gnome-leg--front{animation:visitGnomeLegFrontStep .36s ease-in-out infinite}.visit-map-mascot--walking .visit-gnome-leg--back{animation:visitGnomeLegBackStep .36s ease-in-out infinite}.visit-map-mascot--happy .visit-map-mascot-rive-shell,.visit-map-mascot--happy .visit-map-mascot-spritesheet-shell{animation:visitMascotHappyBounce .42s ease-in-out 3}.visit-map-mascot--happy .visit-gnome-arm--front,.visit-map-mascot--happy .visit-gnome-arm--back{transform:rotate(-58deg) translateY(-4px)}.visit-map-mascot--reduced-motion .visit-map-mascot-rive-shell,.visit-map-mascot--reduced-motion .visit-map-mascot-spritesheet-shell,.visit-map-mascot--reduced-motion .visit-map-mascot-dialog{animation:none!important;transition:none!important}.visit-map-mascot-dialog{position:absolute;left:50%;bottom:calc(100% + 6px);transform:translate(-50%) scaleX(var(--visit-mascot-dialog-x, 1));transform-origin:50% 100%;min-width:120px;max-width:220px;border-radius:12px;border:1px solid rgba(26,71,49,.2);background:#fffffff0;color:#1a4731;font-size:.76rem;font-weight:700;line-height:1.35;text-align:center;box-shadow:0 6px 14px #1a473133;padding:6px 9px;animation:visitMascotDialogPop .22s ease-out}.visit-map-mascot-dialog:after{content:"";position:absolute;left:50%;top:100%;width:12px;height:12px;transform:translate(-50%) rotate(45deg);background:#fffffff0;border-right:1px solid rgba(26,71,49,.2);border-bottom:1px solid rgba(26,71,49,.2)}@keyframes visitMascotWalkBob{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}@keyframes visitMascotIdleBreath{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-1px) scale(1.015)}}@keyframes visitMascotHappyBounce{0%,to{transform:translateY(0) scale(1)}40%{transform:translateY(-6px) scale(1.04)}70%{transform:translateY(-2px) scale(1.02)}}@keyframes visitGnomeArmFrontSwing{0%,to{transform:rotate(-15deg)}50%{transform:rotate(20deg)}}@keyframes visitGnomeArmBackSwing{0%,to{transform:rotate(18deg)}50%{transform:rotate(-14deg)}}@keyframes visitGnomeLegFrontStep{0%,to{transform:rotate(11deg) translateY(-1px)}50%{transform:rotate(-12deg) translateY(0)}}@keyframes visitGnomeLegBackStep{0%,to{transform:rotate(-12deg) translateY(0)}50%{transform:rotate(10deg) translateY(-1px)}}@keyframes visitMascotDialogPop{0%{opacity:0;transform:translate(-50%) scale(.86)}to{opacity:1;transform:translate(-50%) scale(1)}}@keyframes visitMascotSpriteFrames{0%{background-position-x:var(--visit-sprite-start-x, 0px)}to{background-position-x:calc(var(--visit-sprite-start-x, 0px) - (var(--visit-sprite-frames, 1) * var(--visit-sprite-frame-width, 64px)))}}.visit-map-mascot--walking .visit-map-mascot-rive-shell[data-mascot-shape=spore] .visit-spore-cap,.visit-map-mascot--walking .visit-map-mascot-spritesheet-shell[data-mascot-shape=spore] .visit-spore-cap{transform-origin:64px 58px;animation:visitSporeCapWobble .36s ease-in-out infinite}.visit-map-mascot--happy .visit-map-mascot-rive-shell[data-mascot-shape=spore] .visit-spore-spores,.visit-map-mascot--happy .visit-map-mascot-spritesheet-shell[data-mascot-shape=spore] .visit-spore-spores{animation:visitSporeSporesBurst .45s ease-out 3}.visit-map-mascot--walking .visit-map-mascot-rive-shell[data-mascot-shape=vine] .visit-vine-body,.visit-map-mascot--walking .visit-map-mascot-spritesheet-shell[data-mascot-shape=vine] .visit-vine-body{transform-origin:64px 90px;animation:visitVineSway .38s ease-in-out infinite}.visit-map-mascot--happy .visit-map-mascot-rive-shell[data-mascot-shape=vine] .visit-vine-bud,.visit-map-mascot--happy .visit-map-mascot-spritesheet-shell[data-mascot-shape=vine] .visit-vine-bud{transform-origin:48px 14px;animation:visitVineBudBloom .4s ease-out 3}.visit-map-mascot--walking .visit-map-mascot-rive-shell[data-mascot-shape=moss] .visit-moss-body,.visit-map-mascot--walking .visit-map-mascot-spritesheet-shell[data-mascot-shape=moss] .visit-moss-body{transform-origin:64px 82px;animation:visitMossJiggle .32s ease-in-out infinite}.visit-map-mascot--happy .visit-map-mascot-rive-shell[data-mascot-shape=moss] .visit-moss-eye,.visit-map-mascot--happy .visit-map-mascot-spritesheet-shell[data-mascot-shape=moss] .visit-moss-eye{animation:visitMossEyePop .35s ease-out 4}.visit-map-mascot--walking .visit-map-mascot-rive-shell[data-mascot-shape=seed] .visit-seed-body,.visit-map-mascot--walking .visit-map-mascot-spritesheet-shell[data-mascot-shape=seed] .visit-seed-body{transform-origin:64px 92px;animation:visitSeedTilt .34s ease-in-out infinite}.visit-map-mascot--happy .visit-map-mascot-rive-shell[data-mascot-shape=seed] .visit-seed-leaf,.visit-map-mascot--happy .visit-map-mascot-spritesheet-shell[data-mascot-shape=seed] .visit-seed-leaf{transform-origin:90px 44px;animation:visitSeedLeafWave .42s ease-in-out 3}.visit-map-mascot--walking .visit-map-mascot-rive-shell[data-mascot-shape=swarm] .visit-swarm-dot,.visit-map-mascot--walking .visit-map-mascot-spritesheet-shell[data-mascot-shape=swarm] .visit-swarm-dot{animation:visitSwarmDotDrift .28s ease-in-out infinite}.visit-map-mascot--happy .visit-map-mascot-rive-shell[data-mascot-shape=swarm] .visit-swarm-figure,.visit-map-mascot--happy .visit-map-mascot-spritesheet-shell[data-mascot-shape=swarm] .visit-swarm-figure{transform-origin:64px 78px;animation:visitSwarmFigureSpiral .5s ease-out 3}.visit-map-mascot--walking .visit-map-mascot-rive-shell[data-mascot-shape=sprout] .visit-sprout-body,.visit-map-mascot--walking .visit-map-mascot-spritesheet-shell[data-mascot-shape=sprout] .visit-sprout-body{transform-origin:64px 92px;animation:visitSproutBodyShift .34s ease-in-out infinite}.visit-map-mascot--happy .visit-map-mascot-rive-shell[data-mascot-shape=sprout] .visit-sprout-lights,.visit-map-mascot--happy .visit-map-mascot-spritesheet-shell[data-mascot-shape=sprout] .visit-sprout-lights{animation:visitSproutLightsPulse .42s ease-in-out 4}.visit-map-mascot-rive-shell[data-mascot-shape=sprout][data-mascot-state=talk] .visit-sprout-core,.visit-map-mascot-spritesheet-shell[data-mascot-shape=sprout][data-mascot-state=talk] .visit-sprout-core{animation:visitSproutCoreTalk .26s ease-in-out infinite}.visit-map-mascot-rive-shell[data-mascot-shape=sprout][data-mascot-state=angry] .visit-sprout-roots,.visit-map-mascot-spritesheet-shell[data-mascot-shape=sprout][data-mascot-state=angry] .visit-sprout-roots{animation:visitSproutRootsAngry .2s ease-in-out infinite}.visit-map-mascot-rive-shell[data-mascot-shape=sprout][data-mascot-state=surprise] .visit-sprout-plant,.visit-map-mascot-spritesheet-shell[data-mascot-shape=sprout][data-mascot-state=surprise] .visit-sprout-plant{transform-origin:64px 54px;animation:visitSproutLeafSurprise .26s ease-in-out infinite alternate}.visit-map-mascot--walking .visit-map-mascot-rive-shell[data-mascot-shape=scrap] .visit-scrap-body,.visit-map-mascot--walking .visit-map-mascot-spritesheet-shell[data-mascot-shape=scrap] .visit-scrap-body{transform-origin:64px 92px;animation:visitScrapBodyStep .32s ease-in-out infinite}.visit-map-mascot--happy .visit-map-mascot-rive-shell[data-mascot-shape=scrap] .visit-scrap-beam,.visit-map-mascot--happy .visit-map-mascot-spritesheet-shell[data-mascot-shape=scrap] .visit-scrap-beam{animation:visitScrapBeamHappy .4s ease-in-out 3}.visit-map-mascot-rive-shell[data-mascot-shape=scrap][data-mascot-state=talk] .visit-scrap-face,.visit-map-mascot-spritesheet-shell[data-mascot-shape=scrap][data-mascot-state=talk] .visit-scrap-face{animation:visitScrapFaceTalk .22s linear infinite}.visit-map-mascot-rive-shell[data-mascot-shape=scrap][data-mascot-state=alert] .visit-scrap-beam,.visit-map-mascot-spritesheet-shell[data-mascot-shape=scrap][data-mascot-state=alert] .visit-scrap-beam{animation:visitScrapBeamAlert .16s ease-in-out infinite}.visit-map-mascot-rive-shell[data-mascot-shape=scrap][data-mascot-state=angry] .visit-scrap-glitch,.visit-map-mascot-spritesheet-shell[data-mascot-shape=scrap][data-mascot-state=angry] .visit-scrap-glitch{animation:visitScrapGlitchAngry .12s steps(2) infinite}@keyframes visitSporeCapWobble{0%,to{transform:rotate(-4deg) scale(1)}50%{transform:rotate(5deg) scale(1.02)}}@keyframes visitSporeSporesBurst{0%,to{transform:translate(0) scale(1);opacity:.7}50%{transform:translate(-4px,-6px) scale(1.15);opacity:1}}@keyframes visitVineSway{0%,to{transform:rotate(-3deg)}50%{transform:rotate(5deg)}}@keyframes visitVineBudBloom{0%,to{transform:scale(1)}50%{transform:scale(1.18) translateY(-3px)}}@keyframes visitMossJiggle{0%,to{transform:skew(0) translate(0)}25%{transform:skew(-2deg) translate(-1px)}75%{transform:skew(2deg) translate(1px)}}@keyframes visitMossEyePop{0%,to{transform:scale(1)}50%{transform:scale(1.12)}}@keyframes visitSeedTilt{0%,to{transform:rotate(-6deg)}50%{transform:rotate(6deg)}}@keyframes visitSeedLeafWave{0%,to{transform:rotate(0)}50%{transform:rotate(-14deg)}}@keyframes visitSwarmDotDrift{0%,to{transform:translate(0);opacity:1}50%{transform:translate(1px,-3px);opacity:.85}}@keyframes visitSwarmFigureSpiral{0%,to{transform:rotate(0) scale(1)}40%{transform:rotate(12deg) scale(1.06)}70%{transform:rotate(-8deg) scale(1.03)}}@keyframes visitSproutBodyShift{0%,to{transform:rotate(-3deg) translateY(0)}50%{transform:rotate(3deg) translateY(-1px)}}@keyframes visitSproutLightsPulse{0%,to{opacity:.85;transform:scale(1)}50%{opacity:1;transform:scale(1.25)}}@keyframes visitSproutCoreTalk{0%,to{transform:scale(1);opacity:.85}50%{transform:scale(1.12);opacity:1}}@keyframes visitSproutRootsAngry{0%,to{transform:translate(0)}50%{transform:translate(-1.8px)}}@keyframes visitSproutLeafSurprise{0%{transform:rotate(-9deg) scale(1)}to{transform:rotate(11deg) scale(1.04)}}@keyframes visitScrapBodyStep{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}@keyframes visitScrapBeamHappy{0%,to{opacity:.45;transform:scaleX(1)}50%{opacity:1;transform:scaleX(1.2) translate(2px)}}@keyframes visitScrapFaceTalk{0%,to{transform:translate(0)}50%{transform:translate(1px)}}@keyframes visitScrapBeamAlert{0%,to{opacity:.2;transform:scaleX(.7)}50%{opacity:.95;transform:scaleX(1.35)}}@keyframes visitScrapGlitchAngry{0%{transform:translate(0);opacity:.25}25%{transform:translate(1px);opacity:.6}50%{transform:translate(-1px);opacity:.4}75%{transform:translate(2px);opacity:.75}to{transform:translate(0);opacity:.25}}.visit-map-mascot--reduced-motion .visit-spore-cap,.visit-map-mascot--reduced-motion .visit-spore-spores,.visit-map-mascot--reduced-motion .visit-vine-body,.visit-map-mascot--reduced-motion .visit-vine-bud,.visit-map-mascot--reduced-motion .visit-moss-body,.visit-map-mascot--reduced-motion .visit-moss-eye,.visit-map-mascot--reduced-motion .visit-seed-body,.visit-map-mascot--reduced-motion .visit-seed-leaf,.visit-map-mascot--reduced-motion .visit-swarm-dot,.visit-map-mascot--reduced-motion .visit-swarm-figure,.visit-map-mascot--reduced-motion .visit-sprout-body,.visit-map-mascot--reduced-motion .visit-sprout-lights,.visit-map-mascot--reduced-motion .visit-sprout-core,.visit-map-mascot--reduced-motion .visit-sprout-roots,.visit-map-mascot--reduced-motion .visit-sprout-plant,.visit-map-mascot--reduced-motion .visit-scrap-body,.visit-map-mascot--reduced-motion .visit-scrap-beam,.visit-map-mascot--reduced-motion .visit-scrap-face,.visit-map-mascot--reduced-motion .visit-scrap-glitch{animation:none!important}.visit-map-controls{position:absolute;right:8px;top:8px;display:flex;gap:4px;z-index:30;background:#f4e9d0eb;border:1px solid var(--mint);border-radius:10px;padding:4px;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.visit-map-ctrl{border:none;background:transparent;color:var(--soil);border-radius:7px;min-width:30px;min-height:30px;padding:4px 6px;cursor:pointer;font-family:var(--font-sans);font-size:1rem;font-weight:700;line-height:1;transition:background var(--motion-fast) var(--ease-out),transform var(--motion-fast) var(--spring),color var(--motion-fast) var(--ease-out)}.visit-map-ctrl:hover{background:#52b78833}.visit-map-ctrl:active{transform:scale(.96)}@keyframes visitFadeRed{0%,to{opacity:1}50%{opacity:.42}}.visit-side-card{background:var(--surface-1);border-radius:14px;border:1px solid var(--outline-soft);box-shadow:var(--shadow-soft);padding:14px;display:grid;gap:10px;align-content:start}.visit-subtitle{color:var(--leaf);font-weight:700;margin:0;font-size:1rem}.visit-selection-aside{display:grid;gap:12px;align-content:start}.visit-selection-aside .visit-details+.visit-details{margin-top:8px}.visit-details{background:#f8fbf9;border:1px solid var(--mint);border-radius:10px;padding:8px 10px}.visit-details summary{cursor:pointer;font-weight:700;color:var(--forest)}.visit-media-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:8px}.visit-media-gallery figure{margin:0;border:1px solid rgba(0,0,0,.08);border-radius:8px;overflow:hidden;background:#f4f6f5}.visit-media-gallery__open{display:block;width:100%;margin:0;padding:0;border:0;background:transparent;cursor:pointer;font:inherit;text-align:center;color:inherit}.visit-media-gallery__open:hover{filter:brightness(.98)}.visit-media-gallery__open:focus-visible{outline:2px solid var(--forest);outline-offset:-2px}.visit-media-gallery img{width:100%;height:90px;object-fit:contain;display:block}.visit-media-gallery figcaption{font-size:.72rem;padding:6px;color:#5b655f;background:#fff}.visit-media-gallery--lead{grid-template-columns:1fr;margin-bottom:10px}.visit-media-gallery--lead img{height:auto;max-height:clamp(210px,38dvh,420px);min-height:100px;object-fit:contain}.visit-details .visit-media-gallery--details-extra{margin:0 0 10px}.visit-details .visit-details__body{margin-top:0}.visit-editorial{display:grid;gap:12px}@media (prefers-reduced-motion: no-preference){.visit-editorial>*{animation:visitEditorialFadeIn .22s ease-out both}}@keyframes visitEditorialFadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.visit-editorial-paragraph .markdown-content{margin:0;color:#22372e;line-height:1.65;font-size:.95rem}.visit-editorial-heading{margin:0;color:var(--forest);letter-spacing:.01em}.visit-editorial-heading--h2{font-size:1.06rem}.visit-editorial-heading--h3{font-size:.98rem}.visit-editorial-heading--h4{font-size:.92rem}.visit-editorial-image{display:grid;gap:6px}.visit-editorial-image .visit-media-gallery{grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr))}.visit-editorial-image--single .visit-media-gallery{grid-template-columns:1fr;max-width:min(680px,100%);margin-inline:auto}.visit-editorial-image--multi .visit-media-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}.visit-editorial-image--sm .visit-media-gallery img{height:120px}.visit-editorial-image--md .visit-media-gallery img{height:170px}.visit-editorial-image--lg .visit-media-gallery img{height:clamp(190px,34dvh,340px)}.visit-editorial-image__caption{margin:0;font-size:.78rem;color:#486056;text-align:center}@media (max-width: 700px){.visit-editorial-image--multi .visit-media-gallery{grid-template-columns:1fr}.visit-editorial-image--md .visit-media-gallery img{height:190px}}@media (min-width: 701px) and (max-width: 1024px){.visit-editorial-image--multi .visit-media-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}.visit-editorial-image--md .visit-media-gallery img{height:180px}.visit-editorial-image--lg .visit-media-gallery img{height:clamp(220px,30dvh,320px)}}.visit-details__section{margin-top:8px;display:grid;gap:10px}.visit-details__subsection--with-gap{margin-bottom:14px}.visit-details__h4{margin:0 0 8px;font-size:.82rem;color:var(--forest)}.visit-editor{margin-top:12px;background:#f0fdf4;border:1px dashed var(--sage);border-radius:10px;padding:10px}.visit-editor h4{margin-bottom:8px;color:var(--forest);font-size:.95rem}.visit-media-editor{margin-top:8px}.visit-media-list{margin-top:8px;display:grid;gap:6px}.visit-media-row{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:.8rem;border:1px solid rgba(0,0,0,.08);background:#fff;border-radius:8px;padding:6px 8px}.visit-media-row--reorder{cursor:grab;touch-action:none}.visit-media-row--reorder:active{cursor:grabbing}.visit-media-import-from-map{margin:8px 0 10px;border:1px solid #d5e6da;border-radius:8px;background:#f7fbf8;padding:8px;display:grid;gap:6px}.visit-media-import-from-map h6{margin:0;color:var(--forest);font-size:.8rem}.visit-media-import-from-map__list{display:grid;gap:6px}.visit-media-import-from-map__item{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:.78rem;color:#3f554b;padding:6px 8px;border-radius:6px;background:#fff;border:1px solid rgba(0,0,0,.06)}.visit-media-import-from-map__list--thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}.visit-media-import-from-map__item--thumb{flex-direction:column;align-items:stretch;padding:8px;gap:8px}.visit-media-import-from-map__item-meta{display:flex;flex-direction:column;gap:6px;min-width:0}.visit-media-import-from-map__item-label{font-size:.74rem;line-height:1.35;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.visit-editorial-photo-thumb{display:block;width:100%;aspect-ratio:1;padding:0;border:2px solid transparent;border-radius:8px;overflow:hidden;background:#e8f5e9;cursor:pointer;position:relative;min-height:44px;min-width:44px}.visit-editorial-photo-thumb img{width:100%;height:100%;object-fit:cover;display:block}.visit-editorial-photo-thumb--selected{border-color:var(--leaf);box-shadow:0 0 0 2px #2d6a4f40}.visit-editorial-photo-thumb--empty{display:flex;align-items:center;justify-content:center;font-size:1.4rem;aspect-ratio:1;border-radius:8px;background:#e8f5e9}.visit-editorial-photo-thumb__cap{position:absolute;left:0;right:0;bottom:0;padding:3px 5px;font-size:.62rem;color:#fff;background:#0000008c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;pointer-events:none}.visit-editorial-media-picker__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:8px}.visit-editorial-media-picker__hint{margin:0 0 6px;font-size:.74rem;color:#64748b;line-height:1.4}.visit-editorial-media-picker__empty{margin:0;font-size:.78rem;color:#94a3b8;font-style:italic}.editorial-photo-lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000ed;z-index:99999;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px}.editorial-photo-lightbox__dialog{position:relative;display:flex;flex-direction:column;align-items:center;max-width:95vw}.editorial-photo-lightbox__dialog img{max-width:95vw;max-height:85vh;border-radius:10px;object-fit:contain;box-shadow:0 8px 40px #00000080}.editorial-photo-lightbox__caption{color:#fffc;margin-top:12px;font-size:.9rem;max-width:80vw;text-align:center}.editorial-photo-lightbox__close{position:absolute;top:16px;right:16px;background:#ffffff26;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:none;color:#fff;border-radius:50%;width:40px;height:40px;font-size:1.1rem;cursor:pointer;display:flex;align-items:center;justify-content:center}.visit-editorial-builder{margin-top:4px;display:grid;gap:8px;background:#eef8f2;border:1px solid #cfe8d8;border-radius:10px;padding:10px}.visit-editorial-builder h5{margin:0;color:var(--forest)}.visit-editorial-builder__actions{display:flex;flex-wrap:wrap;gap:6px}.visit-editorial-builder__list{display:grid;gap:8px}.visit-editorial-builder__item{border:1px solid rgba(26,71,49,.18);border-radius:8px;background:#fff;padding:8px;display:grid;gap:8px}.visit-editorial-builder__head{display:flex;justify-content:space-between;align-items:center;gap:8px}.visit-editorial-builder__head-actions{display:flex;gap:4px}.visit-editorial-builder__image{display:grid;gap:6px}.visit-editorial-builder__image-meta{display:flex;gap:6px}.visit-tutorials{background:var(--surface-1);border:1px solid var(--outline-soft);border-radius:14px;box-shadow:var(--shadow-soft);padding:12px}.visit-tutorial-picker{background:#f8fbf9;border:1px solid var(--mint);border-radius:10px;padding:10px;margin-bottom:12px}.visit-tutorial-picker-list{display:grid;gap:6px;margin:8px 0;max-height:180px;overflow:auto}.visit-mascot-onboarding{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;background:#0f172a80;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;padding:18px}.visit-mascot-onboarding__card{width:min(920px,100%);max-height:min(92dvh,760px);overflow:auto;border-radius:18px;border:1px solid rgba(82,183,136,.45);background:linear-gradient(165deg,#f8fff8,#eefcf4);box-shadow:0 30px 70px #0f172a52;padding:18px}.visit-mascot-onboarding__eyebrow{margin:0 0 4px;color:#15803d;font-weight:700;text-transform:uppercase;letter-spacing:.03em;font-size:.75rem}.visit-mascot-onboarding__card h3{margin:0 0 8px;color:var(--forest);font-size:1.2rem}.visit-mascot-onboarding__card p{margin:0;color:#365314}.visit-mascot-onboarding__grid{margin-top:14px;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.visit-mascot-onboarding__option{min-height:150px;border-radius:12px;border:1px solid rgba(82,183,136,.45);background:#fff;color:#1a4731;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:10px;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}.visit-mascot-onboarding__option:hover{transform:translateY(-1px);box-shadow:0 10px 22px #1a473126;border-color:#52b788}.visit-mascot-onboarding__option.is-active{border-color:#16a34a;box-shadow:0 0 0 2px #16a34a38;background:#f0fdf4}.visit-mascot-onboarding__preview{width:84px;height:84px;border-radius:10px;border:1px dashed rgba(82,183,136,.5);background:linear-gradient(145deg,#f0fdf4f2,#fffffff2);display:flex;align-items:center;justify-content:center;overflow:hidden}.visit-mascot-onboarding__preview .visit-map-mascot-rive-shell,.visit-mascot-onboarding__preview .visit-map-mascot-spritesheet-shell,.visit-mascot-onboarding__preview .visit-map-mascot-sprite-cut-shell{width:74px;height:82px}.visit-mascot-onboarding__label{font-weight:700;font-size:.82rem;text-align:center;line-height:1.25}.visit-mascot-onboarding__actions{margin-top:14px;display:flex;align-items:center;gap:10px;justify-content:space-between;flex-wrap:wrap}@media (min-width:1024px){.visit-view.visit-view--guest-public{display:flex;flex-direction:column;gap:14px;min-height:0}.visit-view.visit-view--guest-public .visit-tutorials,.visit-view.visit-view--guest-public .visit-tutorials-disclosure{flex:0 0 auto}.visit-view.visit-view--guest-public .visit-grid{flex:1 1 auto;min-height:0;grid-template-columns:minmax(0,1fr);gap:16px;align-items:stretch}.visit-view.visit-view--guest-public .visit-map-card{min-height:0;display:flex;flex-direction:column}.visit-view.visit-view--guest-public .visit-map-stage{flex:1 1 auto;min-height:min(70dvh,880px);aspect-ratio:unset}}.app-inline-toast{position:fixed;right:16px;bottom:16px;z-index:40;background:#1a4731f2;color:#fff;border-radius:8px;padding:10px 12px;font-size:.82rem;box-shadow:0 14px 28px #0000003d;border:1px solid rgba(255,255,255,.16)}@media (max-width:1023px){.desktop-split-view{grid-template-columns:1fr}.desktop-split-scroll{max-height:none;overflow:visible}.forum-grid{grid-template-columns:minmax(0,1fr)}html{overflow-x:clip}body{overflow-x:clip;overscroll-behavior-x:none}#root,#app{overflow-x:clip}.main,.teacher-main{overflow-wrap:break-word;padding:12px}.section-title{font-size:clamp(1.05rem,1rem + .45vw,1.2rem)}.section-sub{font-size:.82rem;line-height:1.52;margin-bottom:12px}.task-filters{gap:6px}.task-filters input,.task-filters select{flex:1 1 100%;min-width:0;min-height:42px;border-radius:10px;padding:10px 12px}.tasks-view-switch{width:100%;margin-right:0}.tasks-view-switch .btn{flex:1 1 0%}.tasks-section{margin-bottom:18px}.visit-grid{gap:10px}.visit-map-card,.visit-side-card,.visit-tutorials,.visit-sync-card{padding:10px;border-radius:12px}.visit-map-switch{width:100%;gap:8px;padding:8px}.visit-map-switch .btn{min-height:40px}}.forum-view{display:grid;gap:12px}.forum-grid{display:grid;grid-template-columns:minmax(280px,360px) minmax(0,1fr);gap:12px}.forum-panel{background:var(--surface-1);border:1px solid var(--outline-soft);border-radius:14px;box-shadow:var(--shadow-soft);padding:12px;display:grid;gap:10px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.btn:active,.task-card:active,.top-tab:active,.visit-map-ctrl:active{transform:none!important}}.forum-form{display:grid;gap:8px}.forum-head{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.forum-thread-list{display:grid;gap:8px;max-height:68vh;overflow:auto}.forum-thread-item{border:1px solid rgba(0,0,0,.08);background:#fafdfb;border-radius:10px;padding:9px;text-align:left;display:grid;gap:4px;cursor:pointer;color:inherit;font-family:var(--font-sans)}.forum-thread-item.active{border-color:var(--sage);background:#f0fdf4}.forum-meta-line{font-size:.76rem;color:#53705f}.forum-muted{font-size:.8rem;color:#63756a}.forum-post-list{display:grid;gap:8px;max-height:52vh;overflow:auto}.forum-post{border:1px solid rgba(0,0,0,.08);border-radius:10px;padding:10px;background:#fbfffc;display:grid;gap:8px}.forum-post.is-deleted{opacity:.7;background:#f8f8f8}.forum-post-head{display:flex;justify-content:space-between;gap:8px;font-size:.8rem;color:#415449}.forum-post-body{margin:0;white-space:pre-wrap;line-height:1.45;color:#1e2b24;font-size:.9rem}.forum-post-actions{display:grid;grid-template-columns:auto 1fr auto;gap:6px;align-items:center}.forum-post-actions input{border:1.5px solid var(--mint);border-radius:8px;padding:8px 10px;min-height:36px;min-width:0;width:100%}.forum-pager{display:flex;align-items:center;gap:8px}.forum-pager--posts{justify-content:flex-end}.forum-reply-form{border-top:1px solid var(--mint);padding-top:8px}@media (max-width:960px){.forum-grid{grid-template-columns:1fr}.forum-thread-list,.forum-post-list{max-height:none}}.context-comments{border:1px solid rgba(0,0,0,.08);border-radius:10px;background:#fcfffd}.context-comments-toggle{width:100%;border:none;background:transparent;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;cursor:pointer;font-family:var(--font-sans);color:#1e2b24;border-radius:10px}.context-comments-toggle--unread{background:#2d5a450f}.context-comments-toggle-label{display:flex;align-items:center;gap:8px;min-width:0;text-align:left}.context-comments-unread-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;background:var(--forest, #2d5a45);opacity:.75;box-shadow:0 0 0 1.5px #fffffff2}.context-comments-count{font-variant-numeric:tabular-nums}.context-comments-body{border-top:1px solid rgba(0,0,0,.06);padding:10px;display:grid;gap:8px}.context-comments-form{display:grid;gap:6px}.context-comments-form textarea{border:1.5px solid var(--mint);border-radius:8px;padding:8px 10px;min-height:64px;resize:vertical}.context-comments-list{display:grid;gap:8px;max-height:260px;overflow:auto}.context-comment-item{border:1px solid rgba(0,0,0,.08);border-radius:8px;padding:8px;background:#fff;display:grid;gap:6px}.context-comment-item.is-deleted{opacity:.72;background:#f8f8f8}.context-comment-head{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:.78rem;color:#4d6358}.context-comment-body{margin:0;font-size:.86rem;color:#1e2b24;line-height:1.4;white-space:pre-wrap}.attachment-images-picker-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.attachment-images-picker-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.attachment-images-picker-actions .attachment-images-picker-btn{flex:1 1 120px;min-height:44px}.attachment-images-picker-hint{flex:1;min-width:140px;line-height:1.35}.photo-reorder-tile{cursor:grab;touch-action:none}.photo-reorder-tile:active{cursor:grabbing}.attachment-images-preview-item--reorder{cursor:grab;touch-action:none}.attachment-images-preview-item--reorder:active{cursor:grabbing}.attachment-images-preview-list{list-style:none;margin:4px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:8px}.attachment-images-preview-item{display:flex;flex-direction:column;align-items:flex-start;gap:4px}.attachment-images-preview-thumb{width:72px;height:72px;object-fit:cover;border-radius:8px;border:1px solid rgba(0,0,0,.1);background:#f4f4f4}.attachment-images-remove{padding:2px 8px;min-height:auto}.user-content-images-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}.user-content-images-grid-link{display:block;border-radius:8px;overflow:hidden;border:1px solid rgba(0,0,0,.1);max-width:min(220px,100%)}.user-content-images-grid-img{display:block;width:100%;max-height:180px;object-fit:cover;vertical-align:middle}.context-comment-actions{display:grid;grid-template-columns:auto 1fr auto;gap:6px;align-items:center}.context-comment-actions input{border:1.5px solid var(--mint);border-radius:8px;padding:8px 10px;min-height:36px}.context-comments-pager{display:flex;justify-content:flex-end;align-items:center;gap:8px}.message-reactions-row{display:flex;flex-wrap:wrap;gap:6px}.message-reactions-row.compact{gap:0}.message-reaction-chip{border:1px solid rgba(0,0,0,.14);border-radius:999px;background:#f8faf8;color:#30443a;padding:4px 8px;min-height:30px;display:inline-flex;align-items:center;gap:5px;cursor:pointer;font-size:.82rem}.message-reaction-chip--toggle{min-width:34px;justify-content:center;padding-inline:9px}.message-reaction-chip.active{background:#e9f8ee;border-color:var(--sage);color:#1f6b40}.fm-tooltip-wrap{position:relative;display:inline-flex}.fm-tooltip{position:absolute;z-index:80;min-width:150px;max-width:260px;padding:8px 10px;border-radius:10px;border:1px solid rgba(255,255,255,.18);background:#1a4731f2;color:var(--cream);font-size:.78rem;line-height:1.35;box-shadow:var(--shadow);animation:fadeIn .16s ease-out;pointer-events:none}.fm-tooltip--top{left:50%;bottom:calc(100% + 8px);transform:translate(-50%)}.fm-tooltip--bottom{left:50%;top:calc(100% + 8px);transform:translate(-50%)}.fm-tooltip--left{right:calc(100% + 8px);top:50%;transform:translateY(-50%)}.fm-tooltip--right{left:calc(100% + 8px);top:50%;transform:translateY(-50%)}.fm-tooltip__arrow{position:absolute;width:8px;height:8px;background:#1a4731f2;transform:rotate(45deg)}.fm-tooltip--top .fm-tooltip__arrow{left:50%;top:calc(100% - 4px);margin-left:-4px}.fm-tooltip--bottom .fm-tooltip__arrow{left:50%;bottom:calc(100% - 4px);margin-left:-4px}.fm-tooltip--left .fm-tooltip__arrow{top:50%;left:calc(100% - 4px);margin-top:-4px}.fm-tooltip--right .fm-tooltip__arrow{top:50%;right:calc(100% - 4px);margin-top:-4px}.fm-help-btn{min-width:48px;min-height:48px;width:48px;height:48px;border-radius:999px;border:1.5px solid var(--mint);background:var(--forest);color:var(--cream);font-weight:800;font-size:1rem;cursor:pointer;box-shadow:var(--shadow)}.fm-help-btn:hover{transform:translateY(-1px)}.fm-help-btn.is-pulsing{animation:fmHelpPulse 2s ease-in-out infinite}.fm-help-panel{width:min(560px,94vw);border:1px solid var(--mint)}.fm-help-panel__title{margin-top:0;margin-bottom:10px}.fm-help-panel__list{margin:0;padding-left:18px;display:grid;gap:8px}.fm-help-panel__item{color:#1e2b24;line-height:1.45;font-size:.92rem}.fm-help-panel__actions{margin-top:14px;display:flex;gap:8px;flex-wrap:wrap}.fm-help-inline{display:flex;justify-content:flex-end;margin-bottom:8px}@keyframes fmHelpPulse{0%{box-shadow:0 0 #52b78873}70%{box-shadow:0 0 0 12px #52b78800}to{box-shadow:0 0 #52b78800}}@media (max-width: 720px){.fm-help-panel{width:min(100%,calc(100vw - 32px));min-height:0;max-height:min(85dvh,calc(100dvh - var(--safe-top) - var(--safe-bottom) - 32px));border-radius:16px;overflow-y:auto;-webkit-overflow-scrolling:touch}}.settings-admin{width:100%;overflow-x:hidden;touch-action:pan-y}.settings-admin .field input,.settings-admin .field select,.settings-admin .field textarea{touch-action:auto}.settings-admin>*{min-width:0}.settings-admin-grid{display:grid;gap:12px;grid-template-columns:1fr 1fr}.settings-admin-maps-list{display:grid;gap:10px}.settings-admin-maps-list>*{min-width:0}.settings-admin-map-row{display:grid;grid-template-columns:minmax(220px,1fr) 130px 130px auto;gap:8px;align-items:center}.settings-admin-map-row>*{min-width:0}.settings-admin-map-tools{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center}.settings-admin-map-tools>*{min-width:0}@media (max-width: 1023px){.settings-admin-grid,.settings-admin-grid.settings-admin-grid--single-on-mobile,.settings-admin-map-row,.settings-admin-map-tools{grid-template-columns:minmax(0,1fr)}.settings-admin-map-row label{display:inline-flex;align-items:center;gap:8px}}.media-library-menu{display:grid;gap:8px}.media-library-menu__panel{border:1px solid #e5e7eb;border-radius:10px;padding:10px;background:#fff}.media-library-menu__actions{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.media-library-menu__list{list-style:none;margin:0;padding:0;display:grid;gap:6px}.media-library-menu__list>li{border:1px solid #e5e7eb;border-radius:8px;background:#fff;display:flex;align-items:center;justify-content:space-between;gap:8px}.profiles-admin{width:100%;overflow-x:hidden}.profiles-admin-grid{display:grid;gap:12px;grid-template-columns:1fr 1fr}.profiles-admin-perm-row{display:grid;gap:8px;align-items:center;margin-bottom:6px;grid-template-columns:1fr auto auto}.profiles-admin-user-row{display:grid;gap:8px;align-items:center;margin-bottom:8px;grid-template-columns:1fr 180px}.profiles-admin-create-grid{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.profiles-admin-delete-row{display:grid;gap:8px;align-items:center;margin-bottom:8px;grid-template-columns:1fr auto}@media (max-width: 1023px){.profiles-admin-grid,.profiles-admin-perm-row,.profiles-admin-user-row,.profiles-admin-create-grid,.profiles-admin-delete-row{grid-template-columns:minmax(0,1fr)}}.markdown-textarea-wrap{display:flex;flex-direction:column;gap:6px}.markdown-textarea-toolbar{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.markdown-textarea-tool{min-width:2.2rem;padding:4px 8px;font-size:.78rem;font-weight:600}.markdown-textarea-input{width:100%;min-height:0}.markdown-textarea-hint{margin:0;font-size:.72rem;color:#6b7280;line-height:1.35}.markdown-content{line-height:1.55;word-break:break-word}.markdown-content p{margin:0 0 .5em}.markdown-content p:last-child{margin-bottom:0}.markdown-content ul,.markdown-content ol{margin:.35em 0 .5em 1.15em;padding:0}.markdown-content li{margin:.15em 0}.markdown-content a{color:var(--forest, #2d6a4f);text-decoration:underline}.markdown-content strong,.markdown-content b{font-weight:700}.markdown-content--plain{white-space:pre-wrap}.task-desc.markdown-content,.plant-row-desc.markdown-content,.forum-post-body.markdown-content,.context-comment-body.markdown-content,.obs-content.markdown-content{white-space:normal}
