:root{--bg: #f7f7f8;--surface: #ffffff;--surface-variant: #f5f5f5;--surface-variant-strong: #ededef;--border: #e8e8ea;--border-light: #f1f1f3;--text-primary: #2d2d2d;--text-secondary: #757575;--text-hint: #bdbdbd;--primary: #ff6b9d;--primary-dark: #e91e63;--primary-tint: rgba(255, 107, 157, .12);--primary-tint-strong: rgba(255, 107, 157, .18);--error: #f44336;--error-tint: rgba(244, 67, 54, .08);--warning: #ff9800;--shadow-card: 0 1px 2px rgba(0, 0, 0, .04), 0 6px 16px rgba(0, 0, 0, .06);--shadow-sheet: 0 -4px 24px rgba(0, 0, 0, .12);--radius-card: 12px;--radius-control: 8px;--radius-input: 6px;--font: "PingFang SC", -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Microsoft YaHei", sans-serif;font-family:var(--font);color:var(--text-primary);background:var(--bg);font-synthesis:none;-webkit-text-size-adjust:100%}html,body{scroll-padding-bottom:30vh}*{box-sizing:border-box}body{margin:0;background:var(--bg)}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;border:0;background:transparent;padding:0}button:disabled{cursor:default;opacity:.45}input,select{max-width:100%;border:1px solid var(--border);border-radius:var(--radius-input);background:var(--surface);padding:10px 12px;font-size:14px}input::placeholder{color:var(--text-hint)}@supports (-webkit-touch-callout: none){input:not(.title-input),select,textarea{font-size:16px}}input:focus,select:focus,button:focus-visible{outline:2px solid var(--primary);outline-offset:1px}.app{min-height:100dvh;background:var(--bg)}.page{max-width:720px;margin:0 auto;padding:16px;padding-bottom:calc(48px + env(safe-area-inset-bottom))}.page.typing{padding-bottom:calc(30vh + env(safe-area-inset-bottom))}.card{background:var(--surface);border-radius:var(--radius-card);box-shadow:var(--shadow-card)}.chip{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 10px;border-radius:999px;font-size:12px;font-weight:500;line-height:1;white-space:nowrap;background:var(--surface-variant);color:var(--text-secondary)}.chip svg{flex:none}.chip.primary{background:var(--primary-tint);color:var(--primary-dark)}.chip.warning{background:#ff98001f;color:#c77700}.chip.neutral{background:var(--surface-variant);color:var(--text-secondary)}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:999px;color:var(--text-secondary);transition:background .16s ease}.icon-button:hover:not(:disabled){background:var(--surface-variant)}.icon-button.active{background:var(--primary-tint);color:var(--primary-dark)}.icon-button.inverse{background:var(--text-secondary);color:#fff}.button{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:40px;padding:0 20px;border-radius:var(--radius-control);background:var(--surface-variant);color:var(--text-primary);font-size:14px;font-weight:600;transition:filter .16s ease}.button:hover:not(:disabled){filter:brightness(.97)}.button.primary{background:var(--primary);color:#fff}.button.danger{background:var(--error);color:#fff}.button.block{width:100%;height:48px;font-size:16px}.button.ghost{background:transparent;color:var(--text-secondary);font-weight:500}.text-link{color:var(--primary-dark);font-size:13px;font-weight:500}.editor-card{overflow:visible}.toolbar-sticky{position:sticky;top:0;z-index:10;background:var(--surface)}.card-meta{display:flex;align-items:center;gap:8px;min-height:24px;padding:12px 16px 0}.card-meta-trailing{margin-left:auto;display:flex;align-items:center;gap:8px}.title-row{display:flex;align-items:center;gap:4px;min-height:36px;padding:8px 8px 0 16px}.title-input,.title-static{flex:1;min-width:0;margin:0;padding:0;border:0;background:transparent;font-size:22px;font-weight:700;line-height:1.35;letter-spacing:-.2px;color:var(--text-primary)}.title-input{height:36px}.title-input:focus{outline:none}.title-static{display:flex;align-items:center;min-height:36px;overflow:hidden;white-space:nowrap;font-size:22px;line-height:1.4}.brand-row{display:flex;align-items:center;gap:8px;padding:0 4px 16px;font-size:14px;font-weight:400;color:var(--text-secondary)}.brand-row img{width:20px;height:20px;object-fit:contain}.app-footer{max-width:720px;margin:0 auto;padding:0 24px 40px;text-align:center;font-size:11px;line-height:1.5;color:var(--text-secondary)}.app-footer p{margin:0;opacity:.6}.app-footer p:first-child{margin-bottom:6px;font-size:12px}.app-footer p:first-child img{width:16px;height:16px}.app-footer p.app-footer-notice{margin-bottom:6px;font-size:10px;font-weight:400}.app-footer a{display:inline-flex;align-items:center;gap:4px;color:inherit;text-decoration:none}.app-footer a:hover{text-decoration:underline;text-underline-offset:2px}.app-footer img{width:12px;height:12px;object-fit:contain}.gate-dialog{position:fixed;inset:0;width:min(280px,calc(100vw - 40px));height:fit-content;max-height:calc(100dvh - 40px);margin:auto;padding:0;overflow:auto;border:0;border-radius:10px;color:#2d2d2d;background:#fff;box-shadow:0 8px 32px #2d2d2d1a;text-align:center}.gate-dialog::backdrop{background:#2d2d2d8c}.gate-dialog-title{margin:18px 20px 8px;font-size:16px;font-weight:600}.gate-dialog-description{margin:0 20px 18px;color:#757575;font-size:13px;line-height:1.6;text-align:left}.gate-dialog-actions{display:flex;border-top:1px solid #f0f0f0}.gate-dialog-authorize{flex:1;min-height:48px;border:0;background:transparent;color:#d94f7d;font-size:14px;font-weight:500;cursor:pointer}.gate-dialog-authorize:disabled{opacity:.55;cursor:default}.editor-card.reading .title-row{padding-top:20px}.divider-block{position:relative;margin:4px 0;cursor:pointer}.divider-block.plain{cursor:default}.divider-frame{display:flex;align-items:center;min-height:20px;border-radius:4px}.divider-block.selected .divider-frame{outline:2px solid var(--primary);outline-offset:2px}.divider-line{flex:1;height:1px;background:var(--border)}.card-divider{height:1px;margin:8px 0 0;background:var(--border);opacity:.6}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding:8px;border-bottom:1px solid var(--border-light)}.toolbar-group{display:flex;align-items:center;gap:2px}.tool-button{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:32px;padding:0 6px;border-radius:var(--radius-control);color:var(--text-secondary);font-size:13px;transition:background .16s ease}.tool-button:hover:not(:disabled){background:var(--surface-variant)}.tool-button:disabled{opacity:.35;cursor:default}.tool-button.active{background:var(--primary-tint);color:var(--primary-dark)}.tool-button.glyph{font-weight:700;font-size:15px}.tool-button.glyph.italic{font-style:italic;font-family:Georgia,Times New Roman,serif}.tool-button.glyph.underline{text-decoration:underline}.tool-button.glyph.strike{text-decoration:line-through}.tool-button.glyph.quote{font-family:Georgia,Times New Roman,serif;font-size:19px;line-height:1}.tool-button.with-label{gap:6px;padding:0 10px;font-size:13px}.tool-button.swatch{position:relative;flex-direction:column;gap:1px;font-size:13px;font-weight:600}.tool-button.swatch input[type=color]{position:absolute;inset:0;width:100%;height:100%;padding:0;border:0;opacity:0;cursor:pointer}.tool-select{height:32px;padding:0 4px;border:0;border-radius:var(--radius-control);background:transparent;font-size:13px;color:var(--text-secondary);cursor:pointer}.tool-select:hover{background:var(--surface-variant)}.guide-document{outline:none;padding:14px 16px 20px;font-size:16px;line-height:1.75;color:var(--text-primary);overflow-wrap:anywhere}.editor-card.editable .guide-document{min-height:45vh}.guide-document>:first-child{margin-top:0}.guide-document p{margin:0 0 10px}.guide-document h1,.guide-document h2,.guide-document h3{margin:22px 0 10px;font-weight:600;line-height:1.4}.guide-document h1{font-size:21px}.guide-document h2{font-size:18px}.guide-document h3{font-size:16px}.guide-document ul,.guide-document ol{padding-left:22px}.guide-document blockquote{margin:14px 0;padding:10px 14px;border-left:3px solid var(--primary-tint-strong);border-radius:0 var(--radius-control) var(--radius-control) 0;background:#fafafa;color:var(--text-secondary)}.guide-document blockquote p:last-child{margin-bottom:0}.guide-document hr{margin:20px 0;border:0;border-top:1px solid var(--border)}.guide-document a{color:var(--primary-dark);text-decoration:underline;text-underline-offset:2px}.guide-document ul[data-type=taskList]{list-style:none;padding:0}.guide-document ul[data-type=taskList] li{display:flex;align-items:flex-start;gap:8px;margin:4px 0}.guide-document ul[data-type=taskList] li>label{margin-top:3px}.guide-document ul[data-type=taskList] li>div{flex:1}.guide-document ul[data-type=taskList] p{margin:0}.guide-document ul[data-type=taskList] input[type=checkbox]{width:16px;height:16px;accent-color:var(--primary)}.guide-document[contenteditable=false] input[type=checkbox]{pointer-events:none}.placeholder:before{content:"写点对亲友有用的信息：到场时间、行车路线、着装提醒…";color:var(--text-hint);pointer-events:none;float:left;height:0}.embedded-card{position:relative;margin:16px 0}.embedded-card.editing .destination,.embedded-card.editing .image-preview,.embedded-card.editing .navigation-link{pointer-events:none}.card-frame{padding:12px;border:1px solid var(--border-light);border-radius:var(--radius-card);background:#fcfcfd}.embedded-card.image-card{container-type:inline-size}.embedded-card.image-card .image-block{width:fit-content;max-width:100%}.embedded-card.image-card .image-block .caption,.embedded-card.image-card .image-block .caption-trigger{display:block;width:max-content;max-width:100%;margin-top:8px;margin-left:auto;margin-right:auto}.embedded-card.image-card .image-upload{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:center;border-radius:inherit;background:#0000006b;color:#fff}.image-upload-ring{width:44px;height:44px;transform:rotate(-90deg)}.image-upload-track{fill:none;stroke:#ffffff4d;stroke-width:4}.image-upload-value{fill:none;stroke:#fff;stroke-width:4;stroke-linecap:round;stroke-dasharray:113;transition:stroke-dashoffset .16s linear}.image-upload-text{position:absolute;font-size:11px;font-weight:600;letter-spacing:.02em}.image-holder{width:calc(var(--image-width, 100) * 1cqw);max-width:100%;margin-left:auto;margin-right:auto}.embedded-card.image-card.plain .image-holder{width:calc(var(--image-width, 100) * 1cqw)}.embedded-card.image-card .image-block{padding:12px;border:1px solid var(--border-light);border-radius:var(--radius-card);background:#fcfcfd;width:fit-content;max-width:100%}.image-block{max-width:100%}.embedded-card.image-card.plain .image-block{padding:0;border:0;background:transparent;box-shadow:none;border-radius:0}.embedded-card.selected .card-frame,.embedded-card.selected .image-block{border:2px solid var(--primary);box-shadow:0 0 0 3px var(--primary-tint)}.card-actions{display:flex;gap:4px;margin-bottom:8px}.card-actions button{display:inline-flex;align-items:center;gap:3px;height:26px;padding:0 8px;border-radius:999px;background:var(--surface-variant);color:var(--text-secondary);font-size:12px}.card-actions button.active{background:var(--primary-tint);color:var(--primary-dark)}.card-actions button:hover{background:var(--surface-variant-strong)}.image-preview{display:block;width:100%;text-align:left;border-radius:var(--radius-control);overflow:hidden;background:var(--surface-variant)}.map-image-loading{display:flex;align-items:center;justify-content:center;aspect-ratio:2 / 1;background:var(--surface-variant)}.map-image-loading .spinner{width:20px;height:20px;border:2px solid var(--primary-tint-strong);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}.image-preview img{display:block;width:100%;height:auto}.caption-trigger{width:100%;margin-top:8px;padding:0 4px;border:1px dashed var(--border);border-radius:var(--radius-input);background:transparent;color:var(--text-secondary);font-size:13px;text-align:center}.caption-trigger:hover{background:var(--surface-variant);color:var(--text-primary)}.caption-input{width:100%;text-align:center;margin-top:8px;border:1px solid transparent;border-radius:var(--radius-input);background:transparent;padding:6px 4px;font-size:13px;color:var(--text-secondary)}.caption-input:hover{background:var(--surface-variant)}.caption-input:focus{background:var(--surface);border-color:var(--border);outline:none}.caption{margin:8px 0 0;text-align:center;color:var(--text-secondary);font-size:13px}.location{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:12px 4px 4px}.location strong{font-size:15px;font-weight:600}.location p{margin:0;color:var(--text-secondary);font-size:13px;line-height:1.5}.navigation-link{margin-top:4px;color:var(--primary-dark);font-size:13px;font-weight:500}.destination{display:flex;align-items:center;gap:12px;width:100%;padding:4px;text-align:left}.destination .destination-icon{display:inline-flex;align-items:center;justify-content:center;flex:none;width:40px;height:40px;border-radius:10px;background:var(--primary-tint);color:var(--primary-dark)}.destination .destination-body{display:flex;flex-direction:column;gap:2px;min-width:0}.destination span{color:var(--text-secondary);font-size:12px}.destination strong{font-size:15px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.destination small{color:var(--primary-dark);font-size:12px}.destination:disabled small{color:var(--text-hint)}.toast{position:fixed;z-index:60;left:50%;bottom:calc(96px + env(safe-area-inset-bottom));transform:translate(-50%);min-width:240px;max-width:calc(100% - 48px);padding:10px 20px;border-radius:6px;background:#261f1af0;color:#fffaf4;font-size:13px;line-height:1.5;text-align:center;white-space:pre-line;animation:toast-in .18s ease both}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.alert-card{display:flex;align-items:flex-start;gap:10px;margin-bottom:16px;padding:14px 16px;border-radius:var(--radius-card);background:var(--surface);box-shadow:var(--shadow-card);font-size:13px;line-height:1.6;color:var(--text-primary)}.alert-card svg{flex:none;margin-top:1px;color:var(--error)}.alert-card .alert-body{flex:1;min-width:0}.alert-card .alert-actions{display:flex;gap:12px;margin-top:8px}.sheet-backdrop{transition:opacity .22s ease;position:fixed;inset:0;z-index:40;display:flex;align-items:flex-end;justify-content:center;background:#00000059}.sheet-backdrop.leaving{opacity:0;pointer-events:none}.sheet-backdrop.leaving .sheet{overscroll-behavior:contain;transform:translateY(100%);transition:transform .24s cubic-bezier(.4,0,1,1)}.sheet{transition:transform .18s ease;width:100%;max-width:720px;max-height:92dvh;display:flex;flex-direction:column;background:var(--surface);border-radius:20px 20px 0 0;box-shadow:var(--shadow-sheet)}.sheet.half{height:60dvh}.scrollable{overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none}.scrollable::-webkit-scrollbar{width:0;height:0}.scrollable::-webkit-scrollbar-thumb{border-radius:3px;background:var(--surface-variant-strong)}.scrollable::-webkit-scrollbar-track{background:transparent}.sheet.dragging{transition:none}.sheet-handle,.sheet-header{touch-action:none}.sheet-handle{width:36px;height:4px;margin:8px auto 0;border-radius:2px;background:var(--surface-variant-strong)}.sheet-header{display:flex;align-items:center;gap:8px;padding:12px 12px 8px 24px}.sheet-header h2{flex:1;min-width:0;margin:0;font-size:18px;font-weight:600;line-height:1.4}.sheet-header-action{flex:none;height:32px;padding:0 12px;border-radius:8px;font-size:13px}.sheet-title{flex:1;min-width:0}.sheet-subtitle{margin:4px 0 0;color:var(--text-secondary);font-size:13px;font-weight:400}.sheet-body{flex:1;overflow:auto;overscroll-behavior:contain;padding:8px 24px 12px;scroll-padding-bottom:96px}.sheet-body input,.sheet-body textarea{scroll-margin-bottom:96px}.sheet-footer{display:flex;gap:12px;padding:12px 24px calc(16px + env(safe-area-inset-bottom));border-top:1px solid var(--border-light)}.sheet-footer .button{flex:1}.field-label{display:block;margin:16px 0 8px;font-size:14px;font-weight:600;color:var(--text-primary)}.sheet-body>.field-label:first-child{margin-top:0}.field-label input{display:block;width:100%;margin-top:8px;font-weight:400}.search-row{display:flex;gap:8px;margin-top:8px}.search-row input{flex:1}.search-row .button{flex:none;padding:0 16px}.sheet-hint{margin:8px 0 0;color:var(--text-secondary);font-size:13px;line-height:1.6}.color-row{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:8px;padding:8px 0 28px}.color-row .color-chip{width:100%;height:auto;aspect-ratio:1}.color-chip{position:relative;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-control);border:1px solid var(--border);color:var(--text-primary)}.color-chip.selected{border:2px solid var(--text-primary)}.color-chip.custom{background:var(--surface);overflow:hidden;transition:background .12s ease}.color-chip.custom input[type=color]{position:absolute;inset:0;width:100%;height:100%;padding:0;border:0;opacity:0;cursor:pointer}.color-picker{display:flex;flex-direction:column;gap:12px;padding:4px 0 20px}.color-picker .react-colorful{width:100%;height:180px}.color-picker .react-colorful__saturation{border-radius:10px}.color-picker .react-colorful__hue{height:20px;margin-top:10px;border-radius:10px}.color-picker .react-colorful__pointer{width:20px;height:20px}.color-hex-input{height:36px;padding:0 12px;border:1px solid var(--border);border-radius:var(--radius-control);font-size:14px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.choice-tabs{display:flex;gap:8px;padding:8px 0 4px}.sheet-tabs{display:flex;flex:none;gap:8px;padding:8px 24px 4px}.choice-tab{display:inline-flex;align-items:center;gap:4px;height:32px;padding:0 12px;border-radius:16px;background:var(--surface-variant);color:var(--text-secondary);font-size:13px}.choice-tab.active{background:var(--primary-tint);color:var(--primary-dark);font-weight:600}.choice-list{display:flex;flex-direction:column;gap:8px;padding:8px 0 16px}.choice{display:flex;align-items:center;gap:12px;width:100%;padding:12px;border:1px solid var(--border);border-radius:var(--radius-card);text-align:left}.format-sample{display:block;font-weight:600;line-height:1.4;color:var(--text-primary)}.format-sample-0{font-size:16px;font-weight:400}.format-sample-1{font-size:21px}.format-sample-2{font-size:18px}.format-sample-3{font-size:16px}.choice.selected{border-color:var(--primary-tint-strong);background:var(--primary-tint)}.choice.selected strong{color:var(--primary-dark)}.choice:hover{border-color:var(--primary-tint-strong);background:#ff6b9d0a}.choice .choice-icon{display:inline-flex;align-items:center;justify-content:center;flex:none;width:40px;height:40px;border-radius:10px;background:var(--primary-tint);color:var(--primary-dark)}.choice .choice-body{display:flex;flex:1;flex-direction:column;gap:6px;min-width:0}.choice-title-row{display:flex;align-items:center;gap:8px;width:100%;min-width:0}.choice-title-row strong{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.choice-event,.choice-source{flex:none;padding:4px 8px;border-radius:16px;font-size:11px;font-weight:600;white-space:nowrap}.choice-title-row .choice-address{flex:1;min-width:0;overflow:visible;white-space:normal;line-height:1.4}.choice-source{background:var(--primary-tint);color:var(--primary-dark)}.choice strong{font-size:15px;font-weight:600}.choice small{color:var(--text-secondary);font-size:12px;line-height:1.5}.choice-empty{display:flex;flex-direction:column;align-items:center;padding:28px 24px;border:1px solid var(--border-light);border-radius:var(--radius-card);background:#fcfcfd;text-align:center}.choice-empty-icon{display:inline-flex;color:var(--text-hint)}.choice-empty-title{margin:16px 0 0;font-size:16px;font-weight:600;color:var(--text-primary)}.choice-empty-text{margin:8px 0 0;font-size:14px;line-height:1.4;color:var(--text-secondary)}.empty-hint{margin:0;padding:16px 0;color:var(--text-secondary);font-size:13px;line-height:1.6}.map-canvas{height:300px;touch-action:none;margin:8px 0 4px;border:1px solid var(--border);border-radius:var(--radius-card);overflow:hidden;background:var(--surface-variant)}.map-status{margin:8px 0 0;color:var(--text-secondary);font-size:13px}.image-lightbox{position:fixed;inset:0;z-index:60;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:max(16px,env(safe-area-inset-top)) 16px max(16px,env(safe-area-inset-bottom));background:#000000eb;color:#fff;overflow:auto;animation:lightbox-fade-in .18s ease-out}.image-lightbox.is-closing{pointer-events:none;animation:lightbox-fade-out .16s ease-in forwards}@keyframes lightbox-fade-in{0%{opacity:0}to{opacity:1}}@keyframes lightbox-fade-out{0%{opacity:1}to{opacity:0}}.image-lightbox img{max-width:100%;max-height:78dvh;object-fit:contain;border-radius:var(--radius-control)}.image-lightbox p{margin:0;font-size:13px;color:#fffc}.image-lightbox .icon-button{align-self:flex-end;color:#fff}.appsplash-actions{display:grid;gap:8px;width:min(320px,80vw);margin-top:4px}@keyframes spin{to{transform:rotate(360deg)}}@media(min-width:900px){.page{padding-top:24px}.guide-document{min-height:52vh}}@media(max-width:420px){.title-input,.title-static{font-size:20px}.toolbar{padding:6px 4px}.map-canvas{height:240px}}
