:root{--bg:var(--tg-theme-secondary-bg-color,#f2f2f7);--surface:var(--tg-theme-section-bg-color,var(--tg-theme-bg-color,#fff));--text:var(--tg-theme-text-color,#111114);--hint:var(--tg-theme-hint-color,#8a8a8e);--link:var(--tg-theme-link-color,#2481cc);--accent:var(--tg-theme-button-color,#2481cc);--accent-text:var(--tg-theme-button-text-color,#fff);--danger:var(--tg-theme-destructive-text-color,#e53935);--separator:color-mix(in srgb, var(--hint) 22%, transparent);--soft:color-mix(in srgb, var(--hint) 12%, transparent);--accent-soft:color-mix(in srgb, var(--accent) 13%, transparent);--success:#2fa84f;--warning:#e8890c;--brand-a:#0f766e;--brand-b:#f97316;--radius:16px;--tabbar-h:64px;--safe-bottom:max(env(safe-area-inset-bottom), var(--tg-safe-area-inset-bottom,0px));--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not(.tg){--bg:#000;--surface:#1c1c1e;--text:#f2f2f7;--hint:#8d8d93;--link:#5ea8ff;--accent:#3d8ef0;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;overscroll-behavior-y:none;margin:0;font:16px/1.4 -apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}button,input,textarea,select{font:inherit;color:inherit}a{color:var(--link);text-decoration:none}img{display:block}.app{min-height:100vh;padding-bottom:calc(var(--tabbar-h) + var(--safe-bottom) + 16px)}.app.no-tabbar{padding-bottom:calc(96px + var(--safe-bottom))}.page{max-width:640px;margin:0 auto;padding:12px 16px 0}.h1{letter-spacing:-.02em;margin:8px 0 4px;font-size:28px;font-weight:800}.h2{margin:0 0 8px;font-size:20px;font-weight:700}.section-title{text-transform:uppercase;letter-spacing:.04em;color:var(--hint);margin:22px 4px 8px;font-size:13px;font-weight:600}.hint{color:var(--hint);font-size:14px}.small{font-size:13px}.danger-text{color:var(--danger)}.center{text-align:center}.row{align-items:center;gap:10px;display:flex}.row.between{justify-content:space-between}.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.stack{flex-direction:column;gap:12px;display:flex}.ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pre-wrap{white-space:pre-wrap;overflow-wrap:anywhere}.card{background:var(--surface);border-radius:var(--radius);padding:14px 16px}.card+.card{margin-top:10px}.list{background:var(--surface);border-radius:var(--radius);overflow:hidden}.list-item{text-align:left;width:100%;min-height:52px;color:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:12px;padding:12px 16px;display:flex}.list-item+.list-item{border-top:.5px solid var(--separator)}.list-item .chevron{color:var(--hint);margin-left:auto}.btn{cursor:pointer;background:var(--accent);min-height:48px;color:var(--accent-text);border:0;border-radius:14px;justify-content:center;align-items:center;gap:8px;padding:0 18px;font-size:16px;font-weight:600;text-decoration:none;transition:transform 80ms,opacity .15s;display:inline-flex}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.5;cursor:default}.btn.block{width:100%}.btn.secondary{background:var(--accent-soft);color:var(--accent)}.btn.ghost{background:var(--soft);color:var(--text)}.btn.danger{background:color-mix(in srgb, var(--danger) 12%, transparent);color:var(--danger)}.btn.small{border-radius:11px;min-height:36px;padding:0 14px;font-size:14px}.btn.icon{border-radius:50%;width:40px;min-height:40px;padding:0}.link-btn{color:var(--link);cursor:pointer;background:0 0;border:0;padding:0;font-weight:500}.bottom-bar{z-index:20;padding:10px 16px calc(10px + var(--safe-bottom));background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(16px);border-top:.5px solid var(--separator);position:fixed;bottom:0;left:0;right:0}.bottom-bar-inner{gap:10px;max-width:640px;margin:0 auto;display:flex}.bottom-bar-inner>.btn{flex:1}.tabbar{z-index:30;height:calc(var(--tabbar-h) + var(--safe-bottom));padding-bottom:var(--safe-bottom);background:color-mix(in srgb, var(--surface) 92%, transparent);-webkit-backdrop-filter:blur(18px);border-top:.5px solid var(--separator);justify-content:space-around;align-items:center;display:flex;position:fixed;bottom:0;left:0;right:0}.tab{color:var(--hint);flex-direction:column;flex:1;align-items:center;gap:2px;font-size:11px;font-weight:500;display:flex;position:relative}.tab svg{width:26px;height:26px}.tab.active{color:var(--accent)}.tab .dot{background:var(--danger);border-radius:50%;width:9px;height:9px;position:absolute;top:-2px;right:calc(50% - 18px)}.tab-create{color:#fff;background:linear-gradient(135deg, var(--brand-a), var(--brand-b));width:50px;height:50px;box-shadow:0 6px 18px color-mix(in srgb, var(--brand-b) 35%, transparent);border-radius:18px;place-items:center;display:grid}.tab-create svg{width:28px;height:28px}.chips{scrollbar-width:none;gap:8px;margin:0 -16px;padding:2px 16px;display:flex;overflow-x:auto}.chips::-webkit-scrollbar{display:none}.chips.wrap{flex-wrap:wrap;margin:0;padding:0;overflow:visible}.chip{background:var(--surface);height:36px;color:var(--text);cursor:pointer;white-space:nowrap;border:0;border-radius:999px;flex:none;align-items:center;gap:6px;padding:0 14px;font-size:14px;font-weight:500;display:inline-flex}.chip.on{background:var(--accent);color:var(--accent-text)}.chip.soft{background:var(--soft)}.chip.soft.on{background:var(--accent)}.badge{background:var(--soft);height:24px;color:var(--hint);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:0 9px;font-size:12px;font-weight:600;display:inline-flex}.badge.accent{background:var(--accent-soft);color:var(--accent)}.badge.pink{color:#d6336c;background:#e6498024}.badge.green{background:color-mix(in srgb, var(--success) 14%, transparent);color:var(--success)}.badge.orange{background:color-mix(in srgb, var(--warning) 15%, transparent);color:var(--warning)}.badge.red{background:color-mix(in srgb, var(--danger) 12%, transparent);color:var(--danger)}.avatar{object-fit:cover;background:linear-gradient(135deg, var(--brand-a), var(--brand-b));color:#fff;border-radius:50%;flex:none;place-items:center;font-weight:700;display:grid;overflow:hidden}.avatar-stack{display:flex}.avatar-stack>*{border:2px solid var(--surface)}.avatar-stack>*+*{margin-left:-8px}.event-card{color:inherit;background:var(--surface);border-radius:var(--radius);margin-bottom:10px;padding:14px 16px;transition:transform 80ms;display:block}.event-card:active{transform:scale(.99)}.event-card.pinned{background:linear-gradient(var(--surface), var(--surface)) padding-box, linear-gradient(135deg, var(--brand-a), var(--brand-b)) border-box;border:2px solid #0000}.event-card .emoji{background:var(--soft);border-radius:14px;flex:none;place-items:center;width:46px;height:46px;font-size:26px;display:grid}.event-card .title{font-size:17px;font-weight:700;line-height:1.25}.event-card .meta{color:var(--hint);margin-top:2px;font-size:14px}.event-card .excerpt{color:var(--text);opacity:.85;-webkit-line-clamp:2;overflow-wrap:anywhere;-webkit-box-orient:vertical;margin-top:8px;font-size:14px;line-height:1.4;display:-webkit-box;overflow:hidden}.event-card .footer{justify-content:space-between;align-items:center;gap:8px;margin-top:12px;display:flex}.field{flex-direction:column;gap:6px;margin-bottom:16px;display:flex}.field>label,.field>.label{color:var(--hint);padding:0 4px;font-size:14px;font-weight:600}.input,.textarea,.select{background:var(--surface);appearance:none;border:0;border-radius:12px;outline:none;width:100%;padding:13px 14px;font-size:16px}.input:focus,.textarea:focus,.select:focus{box-shadow:0 0 0 2px var(--accent)}.textarea{resize:none;min-height:92px}.counter{color:var(--hint);text-align:right;padding:0 4px;font-size:12px}.segmented{background:var(--soft);border-radius:12px;padding:3px;display:flex}.segmented button{cursor:pointer;color:var(--hint);background:0 0;border:0;border-radius:10px;flex:1;padding:9px 6px;font-size:14px;font-weight:600}.segmented button.on{background:var(--surface);color:var(--text);box-shadow:0 1px 4px #0000001f}.stepper{align-items:center;gap:14px;display:flex}.stepper .value{text-align:center;min-width:32px;font-size:22px;font-weight:700}.toggle{background:var(--soft);cursor:pointer;border:0;border-radius:999px;flex:none;width:51px;height:31px;transition:background .2s;position:relative}.toggle:after{content:"";background:#fff;border-radius:50%;width:27px;height:27px;transition:transform .2s;position:absolute;top:2px;left:2px;box-shadow:0 2px 6px #0003}.toggle.on{background:var(--success)}.toggle.on:after{transform:translate(20px)}.banner{background:color-mix(in srgb, var(--warning) 14%, var(--surface));border-radius:14px;align-items:center;gap:12px;margin-bottom:12px;padding:12px 14px;font-size:14px;display:flex}.banner.info{background:var(--accent-soft)}.hero{color:#fff;background:linear-gradient(140deg, var(--brand-a) 0%, #0e7490 50%, var(--brand-b) 100%);border-radius:22px;padding:22px 20px}.hero .h1{margin-top:0}.empty{text-align:center;padding:36px 20px}.empty .big{margin-bottom:8px;font-size:48px}.spinner{border:3px solid var(--soft);border-top-color:var(--accent);border-radius:50%;width:28px;height:28px;margin:40px auto;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{border-radius:var(--radius);background:linear-gradient(90deg, var(--surface) 0%, var(--soft) 50%, var(--surface) 100%);background-size:200% 100%;height:118px;margin-bottom:10px;animation:1.2s ease-in-out infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.sheet-backdrop{z-index:50;background:#0006;justify-content:center;align-items:flex-end;animation:.15s fade;display:flex;position:fixed;inset:0}.sheet{background:var(--bg);width:100%;max-width:640px;max-height:88vh;padding:8px 16px calc(16px + var(--safe-bottom));border-radius:20px 20px 0 0;animation:.22s cubic-bezier(.2,.8,.2,1) slide-up;overflow-y:auto}.sheet-handle{background:var(--separator);border-radius:3px;width:36px;height:5px;margin:4px auto 12px}@keyframes slide-up{0%{opacity:.6;transform:translateY(40%)}}@keyframes fade{0%{opacity:0}}.toast{left:50%;bottom:calc(var(--tabbar-h) + var(--safe-bottom) + 24px);z-index:60;background:color-mix(in srgb, var(--text) 90%, transparent);max-width:calc(100% - 32px);color:var(--surface);border-radius:14px;padding:12px 16px;font-size:14px;font-weight:500;animation:.2s fade;position:fixed;transform:translate(-50%)}.detail-hero{color:#fff;background:linear-gradient(140deg, var(--brand-a) 0%, #0e7490 55%, var(--brand-b) 130%);border-radius:22px;padding:18px}.detail-hero .emoji{font-size:40px}.detail-hero .title{letter-spacing:-.01em;margin:8px 0 12px;font-size:24px;font-weight:800;line-height:1.15}.detail-hero .badge{color:#fff;background:#fff3}.info-row{align-items:flex-start;gap:12px;padding:12px 0;display:flex}.info-row+.info-row{border-top:.5px solid var(--separator)}.info-row .icon{text-align:center;flex:none;width:26px;font-size:20px}.progress{background:var(--soft);border-radius:3px;height:6px;margin-top:8px;overflow:hidden}.progress>div{background:linear-gradient(90deg, var(--brand-a), var(--brand-b));border-radius:3px;height:100%}.map-wrap{inset:0;bottom:calc(var(--tabbar-h) + var(--safe-bottom));position:fixed}.map-wrap .map{position:absolute;inset:0}.map-overlay{z-index:2;padding:0 16px;position:absolute;top:10px;left:0;right:0}.map-pin{background:var(--surface);cursor:pointer;border:2px solid var(--accent);border-radius:50% 50% 50% 6px;place-items:center;width:42px;height:42px;display:grid;transform:rotate(-45deg);box-shadow:0 4px 14px #00000040}.map-pin span{font-size:20px;transform:rotate(45deg)}.map-pin.today{border-color:var(--brand-b)}.map-card{z-index:3;max-width:616px;margin:0 auto;position:absolute;bottom:12px;left:12px;right:12px}.map-card .event-card{margin:0;box-shadow:0 8px 30px #00000038}.maplibregl-ctrl-attrib{font-size:10px}.chat{height:100vh;flex-direction:column;height:100dvh;display:flex}.chat-header{background:var(--surface);border-bottom:.5px solid var(--separator);padding:10px 16px}.chat-scroll{flex:1;padding:12px 12px 8px;overflow-y:auto}.msg{align-items:flex-end;gap:8px;margin-bottom:8px;display:flex}.msg.own{flex-direction:row-reverse}.bubble{background:var(--surface);border-radius:18px 18px 18px 6px;max-width:78%;padding:8px 12px;font-size:15px}.msg.own .bubble{background:var(--accent);color:var(--accent-text);border-radius:18px 18px 6px}.bubble .author{color:var(--accent);margin-bottom:2px;font-size:13px;font-weight:600}.bubble .time{opacity:.6;text-align:right;margin-top:2px;font-size:11px}.bubble img{border-radius:12px;max-width:100%;margin:2px 0}.msg.own .bubble a{color:inherit;text-decoration:underline}.chat-input{padding:8px 12px calc(8px + var(--safe-bottom));background:var(--surface);border-top:.5px solid var(--separator);align-items:flex-end;gap:8px;display:flex}.chat-input textarea{background:var(--bg);resize:none;border:0;border-radius:20px;outline:none;flex:1;max-height:120px;padding:10px 14px;font-size:16px}.day-sep{text-align:center;color:var(--hint);margin:12px 0;font-size:12px}.steps{gap:6px;margin:8px 0 18px;display:flex}.steps>div{background:var(--soft);border-radius:2px;flex:1;height:4px}.steps>div.on{background:var(--accent)}.photo-picker{cursor:pointer;width:112px;height:112px;margin:0 auto 8px;position:relative}.photo-picker .avatar{width:112px;height:112px;font-size:40px}.photo-picker .edit{background:var(--accent);width:34px;height:34px;color:var(--accent-text);border:3px solid var(--bg);border-radius:50%;place-items:center;display:grid;position:absolute;bottom:0;right:0}.rule{gap:12px;padding:10px 0;display:flex}.rule .num{background:var(--accent-soft);width:28px;height:28px;color:var(--accent);border-radius:50%;flex:none;place-items:center;font-size:14px;font-weight:700;display:grid}.profile-head{text-align:center;padding:8px 0 4px}.profile-head .avatar{width:104px;height:104px;margin:0 auto 10px;font-size:38px}.stats{gap:10px;margin-top:14px;display:flex}.stat{background:var(--surface);text-align:center;border-radius:14px;flex:1;padding:12px}.stat .value{font-size:20px;font-weight:800}.stat .label{color:var(--hint);font-size:12px}.tabs{gap:4px;margin:4px 0 14px;display:flex}.picker{z-index:80;background:#e9eef0;position:fixed;inset:0}.picker .picker-canvas{position:absolute;inset:0}.picker-pin{pointer-events:none;filter:drop-shadow(0 4px 5px #00000059);z-index:2;font-size:44px;line-height:1;position:absolute;top:50%;left:50%;transform:translate(-50%,-100%)}.picker-top{top:calc(10px + env(safe-area-inset-top));z-index:3;max-width:640px;margin:0 auto;position:absolute;left:12px;right:12px}.picker-round{background:var(--surface);color:var(--text);width:46px;min-height:46px;font-size:18px;box-shadow:0 3px 12px #0000002e}.picker-search{background:var(--surface);border-radius:23px;align-items:center;gap:8px;height:46px;padding:0 14px;display:flex;box-shadow:0 3px 12px #0000002e}.picker-search input{background:0 0;border:0;outline:none;flex:1;min-width:0;font-size:16px}.picker-results{background:var(--surface);border-radius:16px;max-height:46vh;margin-top:8px;overflow-y:auto;box-shadow:0 8px 28px #00000038}.picker-locate{right:12px;bottom:calc(150px + var(--safe-bottom));z-index:3;position:absolute}.picker-bottom{z-index:3;padding:14px 16px calc(14px + var(--safe-bottom));background:var(--surface);border-radius:20px 20px 0 0;position:absolute;bottom:0;left:0;right:0;box-shadow:0 -6px 24px #00000026}.place-card{background:var(--surface);border-radius:14px;align-items:center;gap:12px;padding:12px 14px;display:flex}.share-link{background:var(--surface);cursor:pointer;border-radius:14px;align-items:center;gap:10px;padding:13px 14px;font-size:15px;display:flex}.share-cover{aspect-ratio:4/5;object-fit:cover;background:var(--soft);border-radius:12px;width:56%;margin:0 auto 10px;display:block}
