:root{--shape-xs: 4px;--shape-sm: 8px;--shape-md: 12px;--shape-lg: 16px;--shape-xl: 28px;--shape-full: 999px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--ease-out: cubic-bezier(.23, 1, .32, 1);--ease-in-out: cubic-bezier(.77, 0, .175, 1);--ease-drawer: cubic-bezier(.32, .72, 0, 1);--dur-press: .14s;--dur-popover: .18s;--dur-menu: .22s;--dur-sheet: .32s;--font-sans: system-ui, -apple-system, "PingFang SC", "Noto Sans SC", "Segoe UI", sans-serif;--type-display: 700 32px/1.15 var(--font-sans);--type-headline: 600 24px/1.25 var(--font-sans);--type-title: 600 18px/1.35 var(--font-sans);--type-label: 500 14px/1.35 var(--font-sans);--type-body: 400 15px/1.55 var(--font-sans);--type-small: 400 13px/1.45 var(--font-sans);--track-display: -.02em;--track-headline: -.015em;--track-title: -.01em;--track-body: 0;--elev-1: 0 1px 2px rgba(0, 0, 0, .08), 0 1px 3px 1px rgba(0, 0, 0, .06);--elev-2: 0 1px 2px rgba(0, 0, 0, .1), 0 2px 6px 2px rgba(0, 0, 0, .08);--elev-3: 0 4px 8px 3px rgba(0, 0, 0, .1), 0 1px 3px rgba(0, 0, 0, .12)}@media(prefers-reduced-motion:reduce){:root{--dur-press: 0ms;--dur-popover: .12s;--dur-menu: .12s;--dur-sheet: .16s}}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--md-surface);color:var(--md-on-surface);font:var(--type-body);letter-spacing:var(--track-body);-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}button,input,textarea,select{font:inherit;color:inherit}::selection{background:var(--md-primary-container);color:var(--md-on-primary-container)}:focus-visible{outline:3px solid var(--md-primary);outline-offset:2px}.btn{--btn-bg: var(--md-secondary-container);--btn-fg: var(--md-on-secondary-container);display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);height:40px;padding:0 var(--sp-5);border:none;border-radius:var(--shape-full);background:var(--btn-bg);color:var(--btn-fg);font:var(--type-label);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;transition:transform var(--dur-press) var(--ease-out),border-radius var(--dur-press) var(--ease-out),background-color var(--dur-press) ease}.btn:active{transform:scale(.97);border-radius:var(--shape-sm)}.btn-icon{display:inline-flex;margin-left:-4px}.btn-icon svg{width:18px;height:18px}.btn[data-variant=filled]{--btn-bg: var(--md-primary);--btn-fg: var(--md-on-primary)}.btn[data-variant=text]{--btn-bg: transparent;--btn-fg: var(--md-primary);padding:0 var(--sp-3)}.btn[data-variant=outlined]{--btn-bg: transparent;--btn-fg: var(--md-on-surface);box-shadow:inset 0 0 0 1px var(--md-outline-variant)}.btn[data-size=sm]{height:34px;padding:0 var(--sp-4);font:var(--type-small)}.btn:disabled{opacity:.38;cursor:not-allowed}@media(hover:hover)and (pointer:fine){.btn:hover:not(:disabled){filter:brightness(.96)}[data-mode=dark] .btn:hover:not(:disabled){filter:brightness(1.12)}}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;flex:none;border:none;border-radius:var(--shape-full);background:transparent;color:var(--md-on-surface-variant);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform var(--dur-press) var(--ease-out),border-radius var(--dur-press) var(--ease-out),background-color var(--dur-press) ease}.icon-btn[data-variant=tonal]{background:var(--md-surface-container-highest);color:var(--md-on-surface-variant)}.icon-btn:active{transform:scale(.92);border-radius:var(--shape-md);background:var(--md-surface-container-highest)}.icon-btn:disabled{opacity:.3;cursor:not-allowed}.icon-btn svg{width:20px;height:20px}.seg{display:inline-flex;gap:2px;padding:2px;background:var(--md-surface-container-highest);border-radius:var(--shape-full)}.seg>button{border:none;background:transparent;color:var(--md-on-surface-variant);height:34px;padding:0 var(--sp-4);border-radius:var(--shape-full);font:var(--type-label);cursor:pointer;white-space:nowrap;-webkit-tap-highlight-color:transparent;transition:background-color var(--dur-press) ease,color var(--dur-press) ease,border-radius var(--dur-press) var(--ease-out),transform var(--dur-press) var(--ease-out)}.seg[data-size=sm]>button{height:30px;padding:0 var(--sp-3);font:var(--type-small)}.seg>button[data-on=true]{background:var(--md-primary);color:var(--md-on-primary)}.seg>button:active{transform:scale(.96);border-radius:var(--shape-sm)}.switch{display:inline-flex;align-items:center;gap:var(--sp-3);cursor:pointer;-webkit-tap-highlight-color:transparent}.switch input{position:absolute;opacity:0;pointer-events:none}.switch .track{position:relative;width:52px;height:32px;flex:none;border-radius:var(--shape-full);background:var(--md-surface-container-highest);box-shadow:inset 0 0 0 2px var(--md-outline);transition:background-color var(--dur-press) ease,box-shadow var(--dur-press) ease}.switch .thumb{position:absolute;top:50%;left:6px;width:16px;height:16px;border-radius:var(--shape-full);background:var(--md-outline);transition:transform var(--dur-press) var(--ease-out),width var(--dur-press) var(--ease-out),height var(--dur-press) var(--ease-out),background-color var(--dur-press) ease;transform:translateY(-50%)}.switch input:checked+.track{background:var(--md-primary);box-shadow:inset 0 0 0 2px var(--md-primary)}.switch input:checked+.track .thumb{width:24px;height:24px;left:2px;background:var(--md-on-primary);transform:translate(22px,-50%)}.switch:active .thumb{width:28px}.switch .switch-label{font:var(--type-body);color:var(--md-on-surface)}.slider{--v: 0;--pad: 2px;--gap: 6px;position:relative;display:block;width:100%;height:44px}.slider input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer;-webkit-appearance:none;appearance:none}.slider .rail,.slider .fill{position:absolute;top:50%;height:16px;transform:translateY(-50%);border-radius:var(--shape-sm);pointer-events:none}.slider .rail{left:min(100%,calc(var(--v) * (100% - var(--pad) * 2) + var(--gap)));right:0;background:var(--md-secondary-container)}.slider .fill{left:0;width:max(0px,calc(var(--v) * (100% - var(--pad) * 2) - var(--gap)));background:var(--md-primary)}.slider .handle{position:absolute;top:50%;left:calc(var(--pad) + var(--v) * (100% - var(--pad) * 2));width:4px;height:40px;border-radius:var(--shape-full);background:var(--md-primary);transform:translate(-50%,-50%);pointer-events:none;transition:width var(--dur-press) var(--ease-out)}.slider:active .handle{width:2px}.tf{position:relative;display:block;min-width:0}.tf input,.tf textarea{display:block;width:100%;height:52px;padding:0 var(--sp-4);border:none;background:transparent;color:var(--md-on-surface);font:var(--type-body);outline:none;resize:none}.tf[data-multiline] textarea{height:auto;min-height:88px;padding:15px var(--sp-4);line-height:1.6}.tf input::placeholder,.tf textarea::placeholder{color:var(--md-outline)}.tf label{position:absolute;left:var(--sp-4);top:26px;transform:translateY(-50%);transform-origin:left center;color:var(--md-on-surface-variant);font:var(--type-body);pointer-events:none;transition:transform .15s var(--ease-out),color .15s ease}.tf:focus-within label,.tf[data-floated] label{transform:translateY(calc(-50% - 26px)) scale(.78)}.tf:focus-within label{color:var(--md-primary)}.tf fieldset{position:absolute;inset:-6px 0 0;margin:0;padding:0 10px;min-width:0;overflow:hidden;border:1px solid var(--md-outline-variant);border-radius:var(--shape-sm);pointer-events:none;transition:border-color .15s ease,border-width .15s ease}.tf:focus-within fieldset{border-width:2px;border-color:var(--md-primary)}.tf legend{float:unset;width:auto;height:12px;padding:0;display:block;font:var(--type-body);font-size:.78em;visibility:hidden;max-width:.01px;white-space:nowrap;transition:max-width 60ms var(--ease-out)}.tf:focus-within legend,.tf[data-floated] legend{max-width:100%;transition:max-width .12s var(--ease-out) 40ms}.tf legend>span{display:inline-block;padding:0 5px;opacity:0;visibility:visible}.app-bar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);background:color-mix(in srgb,var(--md-surface) 76%,transparent);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%)}@media(prefers-reduced-transparency:reduce){.app-bar{background:var(--md-surface);-webkit-backdrop-filter:none;backdrop-filter:none}}.app-bar h1{font:var(--type-title);letter-spacing:var(--track-title);margin:0;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wrap{max-width:1200px;margin:0 auto;padding:var(--sp-4)}.hero{padding:var(--sp-6) var(--sp-4) var(--sp-5)}.hero h2{font:var(--type-display);letter-spacing:var(--track-display);margin:0}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(268px,1fr));gap:var(--sp-3)}.tool-card{--card-bg: var(--md-secondary-container);--card-fg: var(--md-on-secondary-container);position:relative;display:flex;flex-direction:column;gap:var(--sp-2);min-height:196px;padding:var(--sp-5);text-align:left;text-decoration:none;border:none;border-radius:var(--shape-xl);background:var(--card-bg);color:var(--card-fg);cursor:pointer;opacity:0;transform:translateY(8px);animation:card-in .3s var(--ease-out) forwards;transition:transform var(--dur-press) var(--ease-out),border-radius var(--dur-press) var(--ease-out)}.tool-card:nth-child(3n+2){--card-bg: var(--md-tertiary-container);--card-fg: var(--md-on-tertiary-container)}.tool-card:nth-child(3n+3){--card-bg: var(--md-primary-container);--card-fg: var(--md-on-primary-container)}.tool-card:active{transform:scale(.985);border-radius:var(--shape-lg)}.tool-icon{display:flex;align-items:center;justify-content:center;width:56px;height:56px;margin-bottom:var(--sp-2);font-size:28px;line-height:1;border-radius:18px;background:color-mix(in srgb,var(--card-fg) 14%,transparent)}.tool-card h3{font:var(--type-headline);letter-spacing:var(--track-headline);margin:0}.tool-card p{margin:0;padding-right:44px;font:var(--type-small);color:color-mix(in srgb,var(--card-fg) 78%,transparent)}.tool-go{position:absolute;right:var(--sp-4);bottom:var(--sp-4);display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--shape-full);background:color-mix(in srgb,var(--card-fg) 12%,transparent);transition:transform var(--dur-press) var(--ease-out)}.tool-go svg{width:20px;height:20px}@media(hover:hover)and (pointer:fine){.tool-card:hover .tool-go{transform:translate(3px)}}@keyframes card-in{to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.tool-card{transform:none;animation:card-fade .2s ease forwards}.tool-card:active{transform:none}@keyframes card-fade{to{opacity:1}}}.editor-col{min-width:0}.tool-layout{display:grid;grid-template-columns:minmax(0,1fr) 407px;gap:var(--sp-4);align-items:start}.preview-col{position:sticky;top:72px}.preview-panel{padding:var(--sp-4);border-radius:var(--shape-xl);background:var(--md-surface-container-low)}.preview-frame{display:flex;justify-content:center;align-items:flex-start;overflow:hidden}.preview-frame[data-clipped=true]{-webkit-mask-image:linear-gradient(to bottom,#000 88%,transparent);mask-image:linear-gradient(to bottom,#000 88%,transparent)}.preview-inner{width:375px;flex:none;transform-origin:top center;box-shadow:var(--elev-1);border-radius:var(--shape-xs);overflow:hidden;transition:none}.preview-actions{display:flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-4)}.btn.grow{flex:1}.bottom-bar{display:none}.section{display:flex;flex-direction:column;gap:var(--sp-5);background:var(--md-surface-container-low);border-radius:var(--shape-xl);padding:var(--sp-5);margin-bottom:var(--sp-3)}.section h4{font:var(--type-label);color:var(--md-on-surface-variant);margin:0;letter-spacing:.02em}.section-head{display:flex;align-items:center;gap:var(--sp-1);margin-bottom:calc(var(--sp-3) * -1)}.section-head h4{flex:1;min-width:0}.row{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap}.grow{flex:1;min-width:0}.helper{margin:var(--sp-2) 0 0;font:var(--type-small);color:var(--md-on-surface-variant)}.avatar-row{display:flex;align-items:center;gap:var(--sp-3)}.avatar-row>img{width:56px;height:56px;flex:none;border-radius:var(--shape-full);object-fit:cover;background:var(--md-surface-container-highest)}.img-list{display:flex;flex-direction:column;gap:var(--sp-2)}.img-item{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2);border-radius:var(--shape-sm);background:var(--md-surface-container)}.img-item img{width:56px;height:56px;flex:none;object-fit:cover;border-radius:var(--shape-xs);background:var(--md-surface-container-highest)}.img-item .seg{margin-left:auto}.img-item[data-orphan]{opacity:.5}.img-item[data-orphan]:after{content:"未使用";font:var(--type-small);color:var(--md-on-surface-variant)}.scrim{position:fixed;inset:0;z-index:30;background:color-mix(in srgb,var(--md-scrim) 45%,transparent);opacity:1;transition:opacity var(--dur-sheet) var(--ease-out)}.scrim[data-state=closed]{opacity:0}.sheet{position:fixed;z-index:31;left:0;right:0;bottom:0;max-height:88vh;overflow:auto;padding:var(--sp-2) var(--sp-4) calc(var(--sp-5) + env(safe-area-inset-bottom));background:var(--md-surface-container-high);color:var(--md-on-surface);border-radius:var(--shape-xl) var(--shape-xl) 0 0;box-shadow:var(--elev-3);transform:translateY(0);transition:transform var(--dur-sheet) var(--ease-drawer)}.sheet[data-state=closed]{transform:translateY(100%)}@media(min-width:720px){.sheet{left:50%;right:auto;bottom:50%;width:440px;max-height:80vh;border-radius:var(--shape-xl);transform:translate(-50%,50%)}.sheet[data-state=closed]{transform:translate(-50%,50%) scale(.96);opacity:0;transition:transform var(--dur-menu) var(--ease-out),opacity var(--dur-menu) var(--ease-out)}.sheet .handle-bar{display:none}.sheet{padding-top:var(--sp-5)}}.sheet .handle-bar{width:32px;height:4px;border-radius:var(--shape-full);background:var(--md-outline-variant);margin:var(--sp-2) auto var(--sp-4)}.sheet h3{font:var(--type-headline);letter-spacing:var(--track-headline);margin:0 0 var(--sp-4)}.snackbar{position:fixed;z-index:40;left:50%;bottom:calc(var(--sp-5) + env(safe-area-inset-bottom));display:flex;align-items:center;gap:var(--sp-4);max-width:min(90vw,480px);padding:14px var(--sp-4);border-radius:var(--shape-md);background:var(--md-inverse-surface);color:var(--md-inverse-on-surface);font:var(--type-small);box-shadow:var(--elev-2);transform:translate(-50%);opacity:1;transition:transform var(--dur-menu) var(--ease-out),opacity var(--dur-menu) var(--ease-out)}.snackbar[data-state=closed]{transform:translate(-50%,12px);opacity:0}.snackbar button{border:none;background:none;color:var(--md-inverse-primary);font:var(--type-label);cursor:pointer;flex:none}@media(max-width:899px){.tool-layout{grid-template-columns:minmax(0,1fr)}.preview-col{position:fixed;top:56px;left:0;right:0;z-index:10}.preview-panel{padding:0;border-radius:0;background:color-mix(in srgb,var(--md-surface) 82%,transparent);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%);box-shadow:0 1px 0 var(--md-outline-variant)}.preview-frame{align-items:flex-start}.preview-actions{display:none}.editor-col{padding-top:calc(var(--preview-max, 40vh) + var(--sp-4));padding-bottom:96px}.bottom-bar{display:flex;align-items:center;gap:var(--sp-2);position:fixed;z-index:20;left:0;right:0;bottom:0;padding:var(--sp-3) var(--sp-4) calc(var(--sp-3) + env(safe-area-inset-bottom));background:color-mix(in srgb,var(--md-surface-container) 88%,transparent);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%);box-shadow:0 -1px 0 var(--md-outline-variant)}}@media(max-width:899px)and (prefers-reduced-transparency:reduce){.preview-panel{background:var(--md-surface);-webkit-backdrop-filter:none;backdrop-filter:none}.bottom-bar{background:var(--md-surface-container);-webkit-backdrop-filter:none;backdrop-filter:none}}.out-preview{display:block;max-width:100%;max-height:38vh;width:auto;margin:0 auto;border-radius:var(--shape-md);background:var(--md-surface-container-lowest)}.muted{color:var(--md-on-surface-variant);font:var(--type-small)}.people{display:flex;flex-direction:column;gap:var(--sp-2)}.person{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border-radius:var(--shape-sm);background:var(--md-surface-container-high)}.person img{width:36px;height:36px;border-radius:50%;object-fit:cover;flex:0 0 36px;background:var(--md-surface-container-highest)}.person .pname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hint{margin:0;font:var(--type-small);color:var(--md-on-surface-variant)}.hint code{padding:1px 5px;border-radius:4px;background:var(--md-surface-container-highest);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92em}.avatar-pick{position:relative;flex:0 0 var(--sz);width:var(--sz);height:var(--sz)}.avatar-pick>button:first-of-type{width:100%;height:100%;padding:0;border:none;border-radius:50%;background:var(--md-surface-container-highest);cursor:pointer;overflow:hidden;position:relative;display:block;transition:transform var(--dur-press) var(--ease-out),box-shadow var(--dur-quick) ease}.avatar-pick img{width:100%;height:100%;object-fit:cover;display:block}.avatar-pick .veil{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;background:#00000075;opacity:0;transition:opacity var(--dur-quick) ease}.avatar-pick .veil svg{width:calc(var(--sz) * .42);height:calc(var(--sz) * .42)}@media(hover:hover)and (pointer:fine){.avatar-pick>button:first-of-type:hover .veil{opacity:1}}.avatar-pick>button:first-of-type:focus-visible{outline:3px solid var(--md-primary);outline-offset:2px}.avatar-pick>button:first-of-type:active{transform:scale(.92)}.avatar-pick[data-over]>button:first-of-type{transform:scale(1.06);box-shadow:0 0 0 3px var(--md-primary)}.avatar-pick[data-over] .veil{opacity:1}.avatar-pick .reset{position:absolute;right:-4px;top:-4px;width:20px;height:20px;padding:0;display:flex;align-items:center;justify-content:center;border:2px solid var(--md-surface-container-low);border-radius:50%;background:var(--md-surface-container-highest);color:var(--md-on-surface-variant);cursor:pointer}.avatar-pick .reset svg{width:12px;height:12px}.avatar-pick .reset:active{transform:scale(.88)}.person{flex-wrap:wrap}
