:root{--bg: #e9e4d9;--card: #f4f0e7;--ink: #3a3631;--muted: #7d766a;--line: #d3cbbb;--line-strong: #b9b09d;--brand: #557679;--brand-ink: #f8f5ee;--brand-soft: #dbe3df;--warn: #c29a52;--danger: #a4503f;--ok: #62865a;--note-bg: #efe3c8;--note-ink: #6a4b1f;--info-bg: #d9e2e3;--info-ink: #36565a;--beam: #efe0b0;--beam-core: #c9ad6a;--lit: #6d5a2c;--ease: cubic-bezier(.2, .8, .2, 1);--spring: cubic-bezier(.3, 1.5, .5, 1);font-family:Noto Sans TC,Microsoft JhengHei,system-ui,sans-serif;color:var(--ink);background:var(--bg)}@media (prefers-color-scheme: dark){:root{--bg: #25221e;--card: #2e2a25;--ink: #ebe5d8;--muted: #a0978a;--line: #443e35;--line-strong: #5a5247;--brand: #86a9ab;--brand-ink: #1f1c18;--brand-soft: #3a4644;--note-bg: #46391f;--note-ink: #ecd9ae;--info-bg: #34423f;--info-ink: #c7dcd8;--warn: #cfa862;--danger: #cf7a66;--ok: #8fb584;--beam: #5e5236;--beam-core: #d6bf86;--lit: #e6d29c}}*{box-sizing:border-box}body{margin:0;background:var(--bg);font-size:16px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .4  0 0 0 0 .35  0 0 0 0 .28  0 0 0 .07 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}h1,h2,h3,h4{margin:.4em 0;letter-spacing:.02em}a{color:var(--brand);text-decoration:none;transition:color .2s}::selection{background:var(--brand-soft)}.muted{color:var(--muted)}.small{font-size:.85rem}.spacer{flex:1}.center{min-height:80vh;display:grid;place-items:center;padding:16px}button,select,input,textarea{font:inherit;color:inherit}button{min-height:40px;padding:0 16px;border:1px solid transparent;border-radius:8px;background:var(--brand);color:var(--brand-ink);cursor:pointer;transition:transform .18s var(--spring),box-shadow .18s var(--ease),background-color .2s,border-color .2s,color .2s,filter .2s;-webkit-tap-highlight-color:transparent}button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 3px 0 var(--line-strong);filter:brightness(1.05)}button:active:not(:disabled){transform:translateY(1px) scale(.96);box-shadow:none;filter:brightness(.95);transition-duration:.06s}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--brand);outline-offset:2px}button.ghost{background:transparent;color:var(--ink);border:1px solid var(--line-strong)}button.ghost:hover:not(:disabled){background:var(--brand-soft);border-color:var(--brand)}button.danger{background:var(--danger);color:#fbf6ee}button.ghost.danger{background:transparent;color:var(--danger);border:1px solid var(--danger)}button.ghost.danger:hover:not(:disabled){background:var(--danger);color:#fbf6ee}button.small{min-height:28px;padding:0 8px;font-size:.8rem}input,select,textarea{min-height:40px;padding:6px 10px;border:1px solid var(--line-strong);border-radius:8px;background:var(--card);transition:border-color .2s,box-shadow .25s var(--ease),background-color .2s}input:hover,select:hover,textarea:hover{border-color:var(--brand)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}input[type=checkbox],input[type=radio]{accent-color:var(--brand);transition:transform .15s var(--spring)}input[type=checkbox]:active,input[type=radio]:active{transform:scale(.8)}textarea{width:100%;margin:6px 0}label{display:block;margin:10px 0;font-size:.9rem}label input{display:block;width:100%;margin-top:4px}label.check,label.switch,label.chip{display:flex;align-items:center;gap:8px}label.check input,label.switch input,label.chip input{width:auto;margin:0;min-height:0}.error{color:var(--danger);margin:8px 0;animation:shake .35s}.okmsg{color:var(--ok);margin:8px 0;animation:rise .3s var(--ease)}@keyframes shake{20%,60%{transform:translate(-4px)}40%,80%{transform:translate(4px)}}@keyframes rise{0%{opacity:0;transform:translateY(6px)}}.topbar{display:flex;align-items:center;gap:12px;padding:8px 16px;background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10;flex-wrap:wrap}.topbar nav{display:flex;gap:4px;flex-wrap:wrap}.topbar nav a{position:relative;padding:8px 14px;border-radius:8px;color:var(--ink);transition:background-color .2s,color .2s,transform .18s var(--spring)}.topbar nav a:after{content:"";position:absolute;left:14px;right:14px;bottom:4px;height:1.5px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .3s var(--ease)}.topbar nav a:hover{transform:translateY(-1px)}.topbar nav a:hover:after{transform:scaleX(1)}.topbar nav a:active{transform:scale(.95)}.topbar nav{position:relative}.topbar nav a{z-index:1}.topbar nav a.active{color:var(--lit);font-weight:600}.topbar nav a.active:after{display:none}.lamp{position:absolute;top:-8px;left:var(--x, 0px);width:0;opacity:0;pointer-events:none;z-index:0;transition:left .62s cubic-bezier(.45,1.45,.45,1),opacity .3s}.lamp.on{opacity:1}.lamp .head-dot{position:absolute;left:-8px;top:0;width:16px;height:8px;border-radius:0 0 6px 6px;background:var(--ink);opacity:.75}.lamp .cone{position:absolute;left:calc((var(--w, 80px) + 40px) / -2);top:8px;width:calc(var(--w, 80px) + 40px);height:var(--h, 50px);transform-origin:50% 0;clip-path:polygon(40% 0,60% 0,100% 100%,0 100%);background:linear-gradient(to bottom,var(--beam-core) 0%,var(--beam) 40%,transparent 100%);opacity:.8;filter:blur(1px)}.lamp.swing .cone{animation:swing .95s cubic-bezier(.3,.7,.3,1)}@keyframes swing{0%{transform:rotate(calc(var(--dir) * 14deg))}35%{transform:rotate(calc(var(--dir) * -7deg))}62%{transform:rotate(calc(var(--dir) * 3deg))}82%{transform:rotate(calc(var(--dir) * -1deg))}to{transform:rotate(0)}}@keyframes pill{0%{transform:scale(.88);opacity:.6}}.page{max-width:1100px;margin:0 auto;padding:16px;animation:rise .4s var(--ease)}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.inline{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:16px;margin:12px 0;transition:border-color .2s,box-shadow .25s var(--ease),transform .25s var(--ease)}.card:hover{border-color:var(--line-strong)}.grid .card{animation:rise .4s var(--ease) backwards}.grid .card:nth-child(2){animation-delay:.04s}.grid .card:nth-child(3){animation-delay:.08s}.grid .card:nth-child(4){animation-delay:.12s}.grid .card:nth-child(n+5){animation-delay:.16s}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}.grid.wide{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.grid .card{margin:0}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:12px}.two-col .card{margin:0}@media (max-width: 800px){.two-col{grid-template-columns:1fr}}.login{width:min(380px,100%);display:flex;flex-direction:column}.login button{margin-top:8px}.doc-card{display:block;color:var(--ink)}.doc-card:hover{transform:translateY(-3px);border-color:var(--brand);box-shadow:0 4px 0 var(--line-strong)}.doc-card:active{transform:translateY(0) scale(.99);box-shadow:none}.doc-title{font-weight:600;margin-bottom:4px}.badges{margin-top:8px;display:flex;gap:6px;flex-wrap:wrap}.badge{display:inline-block;padding:2px 8px;border-radius:999px;background:var(--line);font-size:.78rem}.badge.warn{background:var(--note-bg);color:var(--note-ink)}.badge.info{background:var(--info-bg);color:var(--info-ink)}.members{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}.chip{padding:4px 12px;border-radius:999px;background:var(--line);color:var(--ink);transition:background-color .2s,transform .18s var(--spring),color .2s}.chip:hover{background:var(--brand-soft);transform:translateY(-1px)}.chip:active{transform:scale(.94)}label.chip:has(input:checked){background:var(--brand);color:var(--brand-ink)}.member{display:flex;justify-content:space-between;align-items:center;padding:4px 0;border-bottom:1px dashed var(--line)}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.stat{text-align:center;margin:0}.stat b{display:block;font-size:2rem;color:var(--brand)}.switch{padding:6px 0}ul.plain{list-style:none;padding:0}ul.plain li{padding:6px 0;border-bottom:1px solid var(--line)}.table{width:100%;border-collapse:collapse;background:var(--card);border-radius:12px;overflow:hidden}.table th,.table td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line)}.table tr.dim{opacity:.5}.table tbody tr{transition:background-color .2s}.table tbody tr:hover{background:var(--brand-soft)}.table .actions{display:flex;gap:6px;justify-content:flex-end}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#28221a94;display:grid;place-items:center;z-index:50;animation:fade .2s}.modal{width:min(420px,92vw);max-height:90vh;overflow:auto;animation:pop .3s var(--spring)}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:scale(.92) translateY(8px)}}.docpage{max-width:1280px;margin:0 auto;padding:12px 16px;animation:rise .4s var(--ease)}.doc-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.doc-head h2{margin:0;cursor:text}.ghost-link{color:var(--muted);display:inline-block;transition:transform .2s var(--ease),color .2s}.ghost-link:hover{color:var(--ink);transform:translate(-3px)}.dot{width:10px;height:10px;border-radius:50%;background:var(--warn);animation:breathe 1.2s infinite}.dot.connected{background:var(--ok);animation:none}@keyframes breathe{50%{transform:scale(1.5);opacity:.5}}.peers{display:flex}.peer{width:30px;height:30px;border-radius:50%;color:#fff;display:grid;place-items:center;margin-left:-6px;border:2px solid var(--card);font-size:.85rem;transition:transform .2s var(--spring)}.peer:hover{transform:translateY(-3px) scale(1.1);z-index:1}.task-banner{background:var(--note-bg);color:var(--note-ink);border:1px solid var(--warn);border-radius:10px;padding:10px 14px;margin:10px 0}.tabs{display:flex;gap:8px;margin:10px 0}.tabs button{position:relative;overflow:visible;background:var(--card);color:var(--ink);border:1px solid var(--line-strong)}.tabs button.active{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}.bubbles{position:absolute;left:0;right:0;top:0;height:0;pointer-events:none}.bubbles i{--w: 9px;--x: 6px;--dl: calc(var(--i) * .06s);position:absolute;bottom:0;left:calc(12% + var(--i) * 14%);width:var(--w);height:var(--w);animation:b-rise 1.2s cubic-bezier(.3,.6,.4,1) var(--dl) both}.bubbles i:before,.bubbles i:after{content:"";position:absolute;border-radius:50%}.bubbles i:before{top:0;right:0;bottom:0;left:0;border:2px solid var(--brand-ink);background:var(--brand-soft);box-shadow:0 0 0 1.5px var(--brand);animation:b-body 1.2s linear var(--dl) both}.bubbles i:after{top:-90%;right:-90%;bottom:-90%;left:-90%;border:2px solid var(--brand);opacity:0;background:radial-gradient(circle at 50% 4%,var(--brand) 0 2px,transparent 3px),radial-gradient(circle at 93% 27%,var(--brand) 0 2px,transparent 3px),radial-gradient(circle at 93% 73%,var(--brand) 0 2px,transparent 3px),radial-gradient(circle at 50% 96%,var(--brand) 0 2px,transparent 3px),radial-gradient(circle at 7% 73%,var(--brand) 0 2px,transparent 3px),radial-gradient(circle at 7% 27%,var(--brand) 0 2px,transparent 3px);animation:b-pop 1.2s ease-out var(--dl) both}.bubbles i:nth-child(2n){--w: 13px;--x: -8px}.bubbles i:nth-child(3n){--w: 17px;--x: 10px}@keyframes b-rise{0%{transform:translateY(14px)}86%,to{transform:translate(var(--x),calc(var(--rise, 46px) * -1))}}@keyframes b-body{0%{opacity:0;transform:scale(.4)}14%{opacity:1;transform:scale(1)}76%{transform:scale(1)}85.9%{opacity:1;transform:scale(1.3,1.2)}86%,to{opacity:0;transform:scale(1.3,1.2)}}@keyframes b-pop{0%,85.9%{opacity:0;transform:scale(.3)}86%{opacity:1;transform:scale(.45)}to{opacity:0;transform:scale(1.5)}}.toolbar{display:flex;gap:6px;flex-wrap:wrap;align-items:center;padding-bottom:10px;border-bottom:1px solid var(--line);margin-bottom:10px}.toolbar button{background:var(--card);color:var(--ink);border:1px solid var(--line);padding:0 12px}.toolbar button:hover:not(:disabled){background:var(--brand-soft);border-color:var(--brand)}.toolbar button.active{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}.toolbar .hint{margin-left:auto;color:var(--muted);font-size:.85rem}.toolbar .sep{width:1px;height:24px;background:var(--line);margin:0 4px}.swatch{width:32px;min-height:32px!important;height:32px;padding:0!important;border-radius:50%!important;border:2px solid transparent!important}.swatch{transition:transform .2s var(--spring),border-color .2s!important}.swatch:hover:not(:disabled){transform:scale(1.18)!important}.swatch.active{border-color:var(--ink)!important}.prose{min-height:60vh;outline:none;padding:4px 8px;line-height:1.7}.prose img{max-width:100%;height:auto;border-radius:8px}.prose blockquote{border-left:4px solid var(--line);margin-left:0;padding-left:12px;color:var(--muted)}.prose pre{background:#0f172a;color:#e2e8f0;padding:12px;border-radius:8px;overflow:auto}.prose p.is-editor-empty:first-child:before{color:var(--muted)}.collaboration-cursor__caret{position:relative;margin-left:-1px;margin-right:-1px;border-left:1px solid;border-right:1px solid;word-break:normal;pointer-events:none}.collaboration-cursor__label{position:absolute;top:-1.6em;left:-1px;font-size:12px;color:#fff;padding:0 6px;border-radius:4px 4px 4px 0;white-space:nowrap;-webkit-user-select:none;user-select:none}.board canvas{width:100%;aspect-ratio:16 / 9;background:#fdfbf6;border-radius:8px;border:1px solid var(--line-strong);touch-action:none;display:block}.roomcode{text-align:center}.roomcode .code{font-size:3rem;font-weight:800;letter-spacing:.3em;font-family:ui-monospace,Consolas,monospace;color:var(--brand);margin:6px 0}.code-input{font-size:1.6rem;letter-spacing:.3em;text-align:center;font-family:ui-monospace,Consolas,monospace;text-transform:uppercase}.steps{display:flex;gap:6px;flex-wrap:wrap}.step{padding:4px 12px;border-radius:999px;background:var(--line);color:var(--muted);font-size:.85rem}.step{transition:background-color .3s,color .3s,transform .3s var(--spring)}.step.on{background:var(--brand);color:var(--brand-ink);transform:scale(1.06)}.pledge{position:relative;margin:40px auto;max-width:760px;padding:48px 52px 42px;color:#3a2410;background:radial-gradient(ellipse at 12% 8%,rgba(255,250,235,.85),transparent 55%),radial-gradient(circle at 84% 68%,rgba(150,95,30,.18),transparent 22%),radial-gradient(circle at 16% 84%,rgba(150,95,30,.14),transparent 18%),radial-gradient(circle at 60% 18%,rgba(150,95,30,.1),transparent 14%),linear-gradient(90deg,rgba(110,68,18,.3),transparent 6%,transparent 94%,rgba(110,68,18,.3)),url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='280' height='280'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.75' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .42  0 0 0 0 .28  0 0 0 0 .1  0 0 0 .55 -.08'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>"),#ecd6a2;border-radius:3px;box-shadow:inset 0 0 80px #7848106b,inset 0 0 10px #502d0873,0 16px 30px #37200661;font-family:"Noto Serif TC",Songti TC,PMingLiU,serif}.pledge:before,.pledge:after{content:"";position:absolute;left:-20px;right:-20px;height:24px;border-radius:12px;pointer-events:none;z-index:2;background:radial-gradient(circle at 11px 50%,#e6b96f 0 4px,#6b4318 5px 7px,transparent 8px),radial-gradient(circle at calc(100% - 11px) 50%,#e6b96f 0 4px,#6b4318 5px 7px,transparent 8px),linear-gradient(#b58045,#6a4219 52%,#3a220a);box-shadow:0 5px 7px #28160466,inset 0 2px 2px #ffe0a866}.pledge:before{top:-15px}.pledge:after{bottom:-15px}.pledge-title{text-align:center;letter-spacing:.5em;font-size:1.9rem;margin:0 0 18px;color:#2f1c0a;text-shadow:0 1px 0 rgba(255,245,220,.6)}.pledge-title:after{content:"❖ ❖ ❖";display:block;letter-spacing:.6em;font-size:.7rem;color:#8a5a22;margin-top:8px}.pledge-text{font-size:1.15rem;line-height:2.1;text-indent:2em}.pledge-text u{text-decoration:none;border-bottom:2px solid #8a6a2e;padding:0 .3em;font-weight:700}.sig-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px;margin:22px 0 10px}.sig-box{height:84px;border-bottom:2px solid #8a6a2e;display:grid;place-items:center}.sig-box img{max-width:100%;max-height:80px;mix-blend-mode:multiply}.sig-name{text-align:center;font-size:.9rem;margin-top:4px}.pledge .muted{color:#8a7a5a}.sign-area{margin-top:18px;padding-top:14px;border-top:1px dashed #b99a5a}.sigpad canvas{width:100%;max-width:480px;aspect-ratio:8 / 3;background:#ffffffb3;border:2px dashed #b99a5a;border-radius:8px;touch-action:none;display:block;cursor:crosshair}.sigpad .row{max-width:480px;margin-top:8px}.pledge .okmsg{margin-top:14px}.seal-place{position:absolute;right:28px;bottom:18px;transform:rotate(-8deg);pointer-events:none}.pledge.sealed{padding-bottom:130px}.wax-seal{display:block;overflow:visible;pointer-events:auto;cursor:pointer}.wax-seal .w-drop,.wax-seal .w-tool{display:none}.wax-seal .w-drop,.wax-seal .w-puddle,.wax-seal .w-tool,.wax-seal .w-emboss{transform-origin:100px 100px}.wax-seal.stamp .w-drop,.wax-seal.stamp .w-tool{display:inline}.wax-seal.stamp{animation:w-shake 3.4s both}.wax-seal.stamp .w-drop{animation:w-drop 3.4s cubic-bezier(.5,0,.9,.6) both}.wax-seal.stamp .w-puddle{animation:w-puddle 3.4s cubic-bezier(.2,.8,.3,1) both}.wax-seal.stamp .w-tool{animation:w-tool 3.4s ease-in-out both}.wax-seal.stamp .w-emboss{animation:w-emboss 3.4s ease-out both}@keyframes w-drop{0%{transform:translateY(-190px) scale(.6,.9);opacity:0}5%{opacity:1}22%{transform:translateY(0) scale(.9,1.5);opacity:1}26%{transform:translateY(10px) scale(1.5,.45);opacity:0}to{transform:translateY(10px);opacity:0}}@keyframes w-puddle{0%,22%{transform:scale(0);opacity:0}24%{transform:scale(.08);opacity:1}40%{transform:scale(1.05)}45%{transform:scale(1)}56%{transform:scale(1)}59%{transform:scale(1.07,.95)}67%,to{transform:scale(1);opacity:1}}@keyframes w-tool{0%,42%{transform:translateY(-50px) scale(1.9);opacity:0}57%{transform:translateY(0) scale(1);opacity:1;animation-timing-function:ease-out}61%{transform:scale(.97);opacity:1}66%{transform:scale(1);opacity:1}84%,to{transform:translateY(-34px) scale(1.55);opacity:0}}@keyframes w-emboss{0%,57%{opacity:0;transform:scale(1.06)}61%{opacity:1;transform:scale(1.06)}72%,to{opacity:1;transform:scale(1)}}@keyframes w-shake{0%,56%{translate:0 0}58.5%{translate:0 4px}62%{translate:0 -1px}66%,to{translate:0 0}}.celebrate{text-align:center}.celebrate .pledge{text-align:left}.celebrate button{margin-top:12px}@media (max-width: 600px){.pledge{padding:28px 20px 30px}.pledge.sealed{padding-bottom:150px}.pledge:before,.pledge:after{left:-8px;right:-8px}}.plaza-stage{position:relative;width:100vw;margin-left:calc(50% - 50vw);height:calc(100vh - 150px);min-height:420px;margin-top:8px;overflow:hidden;background:#bfe6ff}.plaza-stage canvas{display:block;width:100%;height:100%;outline:none}.plaza-hint{position:absolute;left:50%;bottom:14px;transform:translate(-50%);background:#ffffffe6;color:#1e293b;padding:6px 16px;border-radius:999px;font-size:.9rem;pointer-events:none;white-space:nowrap}.plaza-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-size:1.2rem;color:#1e293b;pointer-events:none;text-align:center;padding:20px}.avatar{transition:transform .25s var(--spring)}.avatar:hover{transform:rotate(-6deg) scale(1.08)}.avatar{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--brand-soft);color:var(--info-ink);font-weight:700;object-fit:cover;flex:none;vertical-align:middle;overflow:hidden}.profile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;align-items:start}.stack{display:flex;flex-direction:column;gap:8px}.stack label{display:flex;flex-direction:column;gap:4px}.btn{display:inline-block;padding:8px 14px;border-radius:8px;cursor:pointer;border:1px solid var(--line-strong)}ul.plain{list-style:none;padding:0;margin:8px 0 0;display:flex;flex-direction:column;gap:6px}.points-total{font-size:40px;font-weight:800;color:var(--warn);line-height:1.1}.points-total small{font-size:16px;font-weight:500;color:var(--muted)}.plus{color:var(--ok)}.minus{color:var(--danger)}.leader-panel{grid-column:1 / -1}.award-row{display:grid;grid-template-columns:140px 90px 1fr;gap:8px;align-items:center}.award-name small{display:block}.avatar-editor{display:flex;flex-direction:column;gap:10px}.camera video{width:240px;height:240px;object-fit:cover;border-radius:12px;background:#000;transform:scaleX(-1)}.animals{display:flex;flex-wrap:wrap;gap:6px}.animal{font-size:26px;padding:4px 8px;background:var(--card);border:2px solid transparent;border-radius:10px}.animal:hover:not(:disabled){transform:translateY(-3px) rotate(-5deg) scale(1.1);box-shadow:none}.animal.on{border-color:var(--brand);background:var(--brand-soft)}.points-groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}@media (max-width: 600px){.award-row{grid-template-columns:1fr 80px}.award-row input:last-child{grid-column:1 / -1}}.img-wrap{position:relative;display:inline-block;max-width:100%;line-height:0}.img-wrap img{max-width:100%;height:auto;display:block}.img-handle{position:absolute;right:-6px;bottom:-6px;width:22px;height:22px;background:var(--brand);border:3px solid var(--card);border-radius:50%;cursor:nwse-resize;touch-action:none;opacity:0;box-shadow:0 1px 4px #0006}.img-wrap:hover .img-handle,.img-wrap:active .img-handle{opacity:1}@media (pointer: coarse){.img-handle{opacity:1}}.ai{position:fixed;right:16px;bottom:16px;z-index:30}.ai-fab{box-shadow:0 3px 0 var(--line-strong);border-radius:999px;padding:0 20px;animation:pop .35s var(--spring)}.ai-panel{width:min(360px,calc(100vw - 32px));height:min(520px,72vh);display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line-strong);border-radius:12px;box-shadow:0 6px 0 var(--line-strong);animation:pop .3s var(--spring);transform-origin:bottom right}.ai-head{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line)}.ai-note{padding:6px 12px;font-size:.8rem;color:var(--note-ink);background:var(--note-bg)}.ai-list{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:8px}.ai-empty{color:var(--muted);font-size:.9rem;line-height:1.6}.ai-msg{max-width:88%;padding:8px 12px;border-radius:12px;line-height:1.6;white-space:pre-wrap;word-break:break-word;animation:rise .25s var(--ease)}.ai-msg.user{align-self:flex-end;background:var(--brand);color:var(--brand-ink);border-bottom-right-radius:4px}.ai-msg.assistant{align-self:flex-start;background:var(--line);border-bottom-left-radius:4px}.ai-msg.log{max-width:100%;margin:6px 0}.ai-msg.typing{display:flex;gap:4px;padding:12px}.ai-msg.typing i{width:6px;height:6px;border-radius:50%;background:var(--muted);animation:breathe 1s infinite}.ai-msg.typing i:nth-child(2){animation-delay:.15s}.ai-msg.typing i:nth-child(3){animation-delay:.3s}.ai-form{display:flex;gap:8px;padding:10px;border-top:1px solid var(--line)}.ai-form input{flex:1;min-width:0}.toolbar.shapes{padding-top:0;margin-top:-2px}.toolbar .shape-btn{width:42px;padding:0;display:inline-grid;place-items:center}.inline-check{display:inline-flex;margin:0;align-items:center;gap:4px;font-size:.9rem}
