/* Daily Town · 温暖像素生活游戏 UI kit
   使用方法：<link rel="stylesheet" href="town-cartoon.css">
   SVG 素材：<svg class="town-illus"><use href="town-sprites.svg#sunflower"></use></svg>
   所有装饰尽量使用纯 CSS / 可维护的内联 SVG。 */
:root {
  --town-sky:#adddea;--town-sky-deep:#8ec7d8;
  --town-paper:#fff7e4;--town-cream:#fff0cb;--town-oat:#fae2ae;
  --town-honey:#f6d58f;--town-peach:#f3b5a3;--town-rose:#f2c5cb;
  --town-lime:#dfedbf;--town-leaf:#a8d399;--town-grass:#81b871;
  --town-blue:#cce8e9;--town-tan:#c99469;--town-ink:#594630;
  --town-line:#6b553a;--town-muted:#957b60;--town-white:#fffaf0;
  --town-shadow:#a87a55;--town-shadow-soft:rgba(83,64,43,.11);
  --town-radius:15px;--town-stroke:3px;--town-grid:14px;
  --town-ease:cubic-bezier(.2,.8,.2,1);
}
*,*::before,*::after{box-sizing:border-box}
body.town-app{margin:0;min-height:100vh;color:var(--town-ink);font-family:"Nunito","Microsoft YaHei", "PingFang SC",system-ui,sans-serif;background:var(--town-paper);font-size:14px}
button,input,textarea{font:inherit}button{cursor:pointer}
button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid #4b8bb5;outline-offset:3px}
.town-app button,.town-app a{ -webkit-tap-highlight-color:transparent }
.town-illus{width:42px;height:42px;flex:none;overflow:visible;vertical-align:middle;filter:drop-shadow(1px 2px 0 #7b543022)}
.town-illus--xs{width:18px;height:18px}.town-illus--sm{width:28px;height:28px}.town-illus--lg{width:74px;height:74px}.town-illus--xl{width:106px;height:106px}.town-illus--hero{width:150px;height:150px}
.town-pixel-text{font-variant-numeric:tabular-nums;letter-spacing:.04em;font-weight:900}
/* 卡通纸张与场景背景：格纹、草坪、太阳、波浪均为 CSS，不依赖外部图片 */
.town-bg-sky{background:linear-gradient(180deg,var(--town-sky) 0 74%,#b0daa1 74% 78%,var(--town-grass) 78%)}
.town-bg-paper{background-color:var(--town-paper);background-image:radial-gradient(#c69f7430 .8px,transparent .8px);background-size:19px 19px}
.town-bg-checker{background-color:#fff4d9;background-image:linear-gradient(45deg,#eecb8b2c 25%,transparent 25%),linear-gradient(-45deg,#eecb8b2c 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#eecb8b2c 75%),linear-gradient(-45deg,transparent 75%,#eecb8b2c 75%);background-size:20px 20px;background-position:0 0,0 10px,10px -10px,-10px 0}
.town-bg-grid{background-color:#fffaee;background-image:linear-gradient(#a4bd9e31 1px,transparent 1px),linear-gradient(90deg,#a4bd9e31 1px,transparent 1px);background-size:25px 25px}
.town-bg-stripes{background:repeating-linear-gradient(-45deg,#fff7e4 0 12px,#f5e6bc 12px 16px)}
.town-hill{position:absolute;pointer-events:none;bottom:0;border-radius:55% 55% 0 0;background:#96c486;transform:translateY(20%)}
.town-hill--far{background:#c0deb1;opacity:.8}.town-hill--near{background:#78b573}
.town-sparkle{display:inline-block;position:relative;width:18px;height:18px;background:#f7dda0;clip-path:polygon(50% 0,61% 38%,100% 50%,61% 62%,50% 100%,39% 62%,0 50%,39% 38%);animation:town-twinkle 3s ease-in-out infinite}
.town-sparkle--tiny{width:11px;height:11px}.town-sparkle--mint{background:#9acb9a}.town-sparkle--pink{background:#e9a5a2}
.town-dots{background-image:radial-gradient(#a8cc9780 2px,transparent 2px);background-size:18px 18px}
/* 复古游戏卡片：厚描边、右下硬阴影、双内层柔线 */
.town-panel{position:relative;background:var(--town-paper);border:var(--town-stroke) solid var(--town-ink);border-radius:var(--town-radius);box-shadow:6px 6px 0 var(--town-shadow);overflow:hidden;isolation:isolate}
.town-panel--green{--town-panel-head:var(--town-leaf)}.town-panel--yellow{--town-panel-head:var(--town-honey)}.town-panel--blue{--town-panel-head:var(--town-blue)}.town-panel--pink{--town-panel-head:var(--town-peach)}
.town-panel__head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;background:var(--town-panel-head,var(--town-honey));border-bottom:var(--town-stroke) solid var(--town-ink)}
.town-panel__head h2{display:flex;align-items:center;gap:8px;font-size:17px;margin:0;line-height:1.4}
.town-panel__body{padding:15px}.town-panel__caption{font-size:11px;color:var(--town-muted)}
.town-panel--lift{transition:transform .18s var(--town-ease),box-shadow .18s var(--town-ease)}
.town-panel--lift:hover{transform:translate(-2px,-3px);box-shadow:8px 9px 0 var(--town-shadow)}
.town-card{position:relative;background:#fff9e9;border:2.5px solid var(--town-line);border-radius:10px;padding:13px;box-shadow:3px 4px 0 #b8956d75;transition:transform .18s var(--town-ease),box-shadow .18s var(--town-ease)}
.town-card:hover{transform:translateY(-2px);box-shadow:3px 6px 0 #b8956d75}
.town-card--leaf{background:var(--town-lime)}.town-card--rose{background:#f9dad1}.town-card--sky{background:#dcf0ee}.town-card--butter{background:#fff1c0}
.town-card__eyebrow{color:var(--town-muted);font-size:11px}.town-card__number{font-weight:900;font-size:23px;line-height:1.3}
.town-bevel{box-shadow:inset 0 3px 0 #ffffffab,inset 0 -3px 0 #bc936349}
.town-inset{background:#fff3d3;border:2px solid #a68a64;box-shadow:inset 3px 3px 0 #b99a704a;border-radius:9px}
.town-outline-dashed{border:3px dashed #947e62;background:#d5edec;border-radius:12px;padding:14px}
.town-divider{height:4px;background:repeating-linear-gradient(90deg,#b5cd99 0 15px,#e8dfac 15px 23px);border-radius:8px;opacity:.7}
/* 贴纸、胶带、丝带、标题吊牌、票券 */
.town-sticker{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;background:#ffefc6;border:2px solid var(--town-ink);border-radius:9px;box-shadow:3px 3px 0 #a77750;font-weight:800;transform:rotate(-2deg)}
.town-sticker--pink{background:#f7c3ae;transform:rotate(2deg)}.town-sticker--green{background:#d5edbe;transform:rotate(-3deg)}
.town-washi{position:absolute;top:-11px;left:50%;width:72px;height:22px;transform:translateX(-50%) rotate(-4deg);background:#f7ce879e;border:1px solid #c9a16d66;backdrop-filter:blur(1px);z-index:4;clip-path:polygon(4% 0,96% 0,100% 100%,0 100%)}
.town-ribbon{display:inline-block;position:relative;background:var(--town-peach);padding:8px 18px;font-weight:900;border:2px solid var(--town-ink);box-shadow:3px 3px 0 #a47e53}
.town-ribbon::before,.town-ribbon::after{content:"";position:absolute;top:calc(100% - 2px);border-top:12px solid #d99080}.town-ribbon::before{left:-2px;border-right:16px solid transparent}.town-ribbon::after{right:-2px;border-left:16px solid transparent}
.town-bubble{position:relative;background:#fff9e8;border:2.5px solid var(--town-ink);border-radius:12px;padding:9px 12px;box-shadow:3px 4px 0 #a47756}
.town-bubble::after{content:"";position:absolute;bottom:-12px;left:22px;width:15px;height:15px;transform:rotate(45deg);background:#fff9e8;border-bottom:2.5px solid var(--town-ink);border-right:2.5px solid var(--town-ink)}
.town-ticket{background:#f8dcaa;border:2.5px solid var(--town-ink);padding:10px 14px;clip-path:polygon(0 0,100% 0,100% 40%,96% 50%,100% 60%,100% 100%,0 100%,0 60%,4% 50%,0 40%)}
.town-corner-flower::before,.town-corner-flower::after{content:"✿";position:absolute;font-size:26px;color:#efbf73;opacity:.9;pointer-events:none}.town-corner-flower::before{top:-16px;left:-10px}.town-corner-flower::after{bottom:-16px;right:-10px;color:#9ac58d}
/* 按钮、徽章、数据条 */
.town-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:37px;padding:7px 13px;border:2.5px solid var(--town-ink);border-radius:9px;background:#ffe8ac;box-shadow:3px 4px 0 #a87a55;color:var(--town-ink);font-weight:800;text-decoration:none;white-space:nowrap;transition:transform .13s,box-shadow .13s,background-color .13s}
.town-btn:hover{transform:translateY(-2px);box-shadow:3px 6px 0 #a87a55;background:#fff0c4}.town-btn:active{transform:translate(2px,3px);box-shadow:1px 1px 0 #a87a55}
.town-btn--green{background:#bbdfa9}.town-btn--pink{background:#f7c1ad}.town-btn--blue{background:#bfe3e9}.town-btn--sm{padding:4px 9px;min-height:29px;font-size:11px;border-width:2px}
.town-pill{display:inline-flex;align-items:center;gap:5px;border:2px solid #7d6142;background:#fff2ce;border-radius:8px;padding:5px 9px;font-size:11px;font-weight:900}
.town-pill--green{background:#d4edbc}.town-pill--rose{background:#f9d9c9}
.town-iconbox{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border:2.5px solid var(--town-ink);border-radius:10px;background:#d8e9b8;box-shadow:3px 3px 0 #a67f57}
.town-progress{position:relative;overflow:hidden;height:17px;border:2.5px solid #746047;background:#fff4d8;box-shadow:inset 0 3px 0 #a17e4f50;border-radius:9px}
.town-progress>span{display:block;height:100%;width:var(--progress,0%);border-radius:7px;background:repeating-linear-gradient(90deg,#93bd76 0 12px,#afd197 12px 21px);border-right:2px solid #5f9d61;transition:width .5s var(--town-ease)}
.town-badge{display:inline-flex;align-items:center;gap:4px;background:#f6d98c;border:2px solid #8e6e49;border-radius:999px;font-size:11px;padding:3px 8px;font-weight:900}
.town-label{color:var(--town-muted);font-size:11px;font-weight:700}
.town-input{min-height:38px;width:100%;background:#fffbed;border:2px solid #ab906a;border-radius:9px;color:var(--town-ink);padding:7px 11px;outline:none}
.town-input:focus{border-color:#619d77;box-shadow:0 0 0 3px #b9ddad}
/* 动态装饰与反馈 */
.town-float{animation:town-float 4.2s ease-in-out infinite}.town-float--slow{animation-duration:6s}
.town-bob{animation:town-bob 2.4s ease-in-out infinite}
.town-wiggle:hover{animation:town-wiggle .55s ease-in-out}
.town-shine{position:relative;overflow:hidden}.town-shine::after{content:"";position:absolute;inset:-25%;width:32%;transform:rotate(28deg) translateX(-300%);background:linear-gradient(90deg,transparent,#fff7c88a,transparent);animation:town-shine 5s ease-in-out infinite;pointer-events:none}
.town-appear{animation:town-pop .35s var(--town-ease) both}
.town-complete{animation:town-collect .55s var(--town-ease) both}
.town-confetti{pointer-events:none;position:fixed;width:9px;height:14px;z-index:100;top:0;left:0;animation:town-confetti 850ms ease-out forwards}
.town-xp-fly{pointer-events:none;position:fixed;color:#669f52;font-size:19px;font-weight:900;z-index:110;animation:town-xp-up 1s ease-out forwards;text-shadow:0 2px #fff6d7}
@keyframes town-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
@keyframes town-bob{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(5deg)}}
@keyframes town-wiggle{0%,100%{transform:rotate(0)}25%{transform:rotate(-8deg)}75%{transform:rotate(8deg)}}
@keyframes town-twinkle{0%,100%{opacity:.18;transform:scale(.8) rotate(0)}50%{opacity:1;transform:scale(1.15) rotate(45deg)}}
@keyframes town-pop{from{opacity:0;transform:scale(.94) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}
@keyframes town-collect{40%{transform:scale(1.03)}100%{transform:scale(1)}}
@keyframes town-shine{0%,68%{transform:rotate(28deg) translateX(-300%)}94%,100%{transform:rotate(28deg) translateX(600%)}}
@keyframes town-confetti{from{opacity:1;transform:translate(0,0) rotate(0)}to{opacity:0;transform:translate(var(--dx,90px),var(--dy,-100px)) rotate(var(--spin,240deg))}}
@keyframes town-xp-up{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-75px)}}
/* 顶栏、侧栏、实际业务布局 */
.town-shell{max-width:1800px;margin:auto;min-height:100vh;display:grid;grid-template-columns:238px minmax(0,1fr)}
.town-sidebar{background:linear-gradient(180deg,#f9d997,#f6d18c);border-right:3px solid var(--town-ink);padding:23px 16px;display:flex;flex-direction:column;gap:22px;position:sticky;top:0;height:100vh;z-index:3;box-shadow:5px 0 0 #b27f4d22}
.town-brand{display:flex;align-items:center;gap:10px}.town-brand__title{font-size:24px;font-weight:1000;letter-spacing:.06em}.town-brand__sub{font-size:10px;color:#967757;letter-spacing:.08em}
.town-nav{display:flex;flex-direction:column;gap:5px}.town-nav__item{display:flex;align-items:center;gap:10px;width:100%;min-height:40px;padding:5px 10px;border:2px solid transparent;background:transparent;border-radius:9px;color:var(--town-ink);font-size:13px;font-weight:800;text-align:left;transition:background-color .18s,transform .18s}.town-nav__item .town-illus{width:25px;height:25px}.town-nav__item:hover{background:#fff3d47d;transform:translateX(2px)}.town-nav__item[aria-current="page"]{background:#fff6d9;border-color:#765c3a;box-shadow:3px 3px 0 #a98053}
.town-level{margin-top:auto;padding:12px;background:#fff3cf;border:2px solid #7f6647;border-radius:12px;box-shadow:3px 4px 0 #aa8155}.town-level strong{font-size:13px}.town-level__stats{display:flex;justify-content:space-between;gap:5px;margin-bottom:9px;font-size:11px}
.town-main{min-width:0;padding:25px clamp(15px,3.2vw,48px) 52px;background-color:#fff9eb;background-image:radial-gradient(#eacfa457 .8px,transparent .8px);background-size:22px 22px}
.town-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:20px}.town-heading{font-weight:1000;font-size:clamp(24px,2.5vw,34px);line-height:1.25;margin:5px 0}.town-overline{font-size:11px;color:var(--town-muted);font-weight:800;letter-spacing:.05em}
.town-layout{display:grid;gap:20px}.town-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.town-weather{display:flex;align-items:center;min-height:98px;gap:15px;background:#73af6f;color:#fff9dd;border:3px solid #5f4935;border-radius:13px;padding:15px 23px;box-shadow:5px 5px 0 #98744f;overflow:hidden;position:relative}
.town-weather::before{content:"";position:absolute;right:-30px;top:-75px;width:260px;height:200px;border:2px solid #cfe9b333;border-radius:50%}.town-weather::after{content:"✦  ✧  ✦";position:absolute;right:30px;top:18px;color:#d8eebe;font-size:18px;letter-spacing:25px;opacity:.9}
.town-weather__title{font-size:21px;font-weight:1000}.town-weather__desc{font-size:12px;opacity:.94;margin-top:4px}
.town-adventure{padding:19px;background:#ffe3a6;border:2.5px solid var(--town-ink);border-radius:12px;box-shadow:4px 5px 0 #ad8558}.town-adventure__head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;flex-wrap:wrap}.town-adventure__title{display:flex;align-items:center;gap:9px;font-size:17px;font-weight:1000}.town-adventure__subtitle{font-size:11px;color:#846c50;margin-top:3px}.town-rewards{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:12px}.town-reward{border:2px solid #75613f;border-radius:10px;background:#ddedbd;padding:9px;text-align:center;transition:transform .18s}.town-reward:hover{transform:translateY(-4px)}.town-reward .town-illus{width:43px;height:43px;display:block;margin:auto}.town-reward strong{display:block;font-size:12px}.town-reward small{font-size:10px;color:#89694b}.town-reward--locked{filter:saturate(.75);background:#ebdfba}
.town-columns{display:grid;grid-template-columns:minmax(0,1.22fr) minmax(280px,.8fr);gap:20px;align-items:start}.town-stack{display:grid;gap:20px}
.town-garden{position:relative;background:linear-gradient(#e2efbf 0 72%,#d9b48b 72% 74%,#b98d68 74% 100%);padding:17px 14px 18px;border:2.5px solid #6e5238;border-radius:12px;overflow:hidden}.town-garden__title{font-weight:1000;display:flex;align-items:center;gap:7px;margin-bottom:12px}.town-plants{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.town-plant{background:linear-gradient(180deg,#fff7e6 0 76%,#fae9cb 76%);border:2px solid #816849;border-radius:10px;min-height:152px;display:flex;align-items:center;flex-direction:column;padding:8px 6px 9px;justify-content:center;gap:3px;box-shadow:2px 3px 0 #94765390;transition:transform .18s}.town-plant:hover{transform:translateY(-3px)}.town-plant .town-illus{width:min(88px,90%);height:88px}.town-plant strong{font-size:12px}.town-plant small{font-size:10px;color:#967c61}.town-plant__water{display:flex;gap:4px}.town-plant__water span{width:8px;height:8px;border-radius:50%;border:1.5px solid #4f817b;background:#8dbfc7}
.town-task{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1.5px dashed #c8b596}.town-task:last-child{border-bottom:none}.town-task input[type=checkbox]{appearance:none;width:21px;height:21px;border:2px solid #846544;border-radius:5px;background:#fff9e3;flex:none;cursor:pointer;position:relative}.town-task input[type=checkbox]:checked{background:#8fc38a}.town-task input[type=checkbox]:checked::after{content:"✓";position:absolute;top:-4px;left:2px;color:#fff;font-size:20px;font-weight:900}.town-task__name{flex:1;font-weight:800}.town-task:has(input:checked) .town-task__name{text-decoration:line-through;color:#9b9b82}.town-task__xp{font-size:11px;color:#6b9b5f;font-weight:1000}
.town-small-avatar{width:47px;height:47px;display:grid;place-items:center;background:#ffd78a;border:2px solid #654e36;border-radius:12px;box-shadow:3px 3px #a37b50}
.town-companion{display:flex;gap:10px;align-items:center;background:linear-gradient(90deg,#d8edbb,#f5edcb);padding:13px;border:2px solid #7d6749;border-radius:10px}.town-companion .town-illus{width:53px;height:53px}.town-companion strong{display:block;margin-bottom:4px}
.town-chips{display:flex;gap:7px;flex-wrap:wrap}
.town-agent{position:fixed;left:0;top:0;right:auto;bottom:auto;z-index:960;display:flex;align-items:flex-end;gap:9px;
  transition:transform .28s cubic-bezier(.2,.8,.2,1),left .2s ease,top .2s ease}
/* 吸附态：半收进侧边，悬停滑出 */
.town-agent.docked-left{transform:translateX(-26%)}
.town-agent.docked-right{transform:translateX(30%)}
.town-agent.docked-left:hover,.town-agent.docked-right:hover,
.town-agent.docked-left:focus-within,.town-agent.docked-right:focus-within{transform:none}
/* 拖动中：取消过渡、显示抓手、暂停漂浮动画，手指/鼠标移动更跟手 */
.town-agent.dragging{transition:none;z-index:980;will-change:transform}
.town-agent.dragging .town-illus{animation:none!important}
.town-agent.dragging .town-agent__bubble{display:none}
.town-agent__launch{cursor:grab;touch-action:none}
.town-agent__launch:active{cursor:grabbing}
/* 气泡绝对定位挂在狐狸上方：不参与 flex 布局，展开/收起都不会移动小橘本体 */
.town-agent__bubble{position:absolute;left:0;bottom:calc(100% + 12px);width:max-content;max-width:236px;
  background:#fff1cd;border:2.5px solid #594630;border-radius:12px;padding:9px 13px 9px 11px;box-shadow:3px 4px 0 #a17a55;
  font-weight:900;font-size:12px;line-height:1.55;color:#4a3a28;text-align:left;z-index:1}
.town-agent__bubble[hidden]{display:none!important}
.town-agent__bubble.below{bottom:auto;top:calc(100% + 12px)}
.town-agent__text{display:block;padding-right:3px;overflow-wrap:anywhere}
.town-agent .town-agent__close{position:absolute;top:-10px;right:-10px;width:22px;height:22px;min-width:22px;min-height:22px;padding:0;margin:0;
  display:grid;place-items:center;border:2px solid #594630;border-radius:50%;background:#fff8e4;color:#594630;
  font:900 11px/1 system-ui,sans-serif;cursor:pointer;box-shadow:2px 2px 0 #a17a55;z-index:2}
.town-agent .town-agent__close:hover{background:#f6bc7d;border-color:#594630}
.town-agent .town-agent__close:focus-visible{outline:2px solid #2f6b45;outline-offset:2px}
/* 悬停出现「设置宠物」：点它跳到 我的 → 伙伴中心 */
.town-agent .town-agent__set{position:absolute;right:8px;bottom:calc(100% + 8px);white-space:nowrap;font-size:11px;font-weight:800;
  min-height:30px;min-width:0;padding:4px 10px;border-radius:9px;background:#fff8e4;color:#594630;
  opacity:0;pointer-events:none;transform:translateY(6px);transition:opacity .16s,transform .16s}
.town-agent:hover .town-agent__set,.town-agent:focus-within .town-agent__set{opacity:1;pointer-events:auto;transform:none}
.town-agent.docked-left .town-agent__set{right:auto;left:8px}
.town-agent.open .town-agent__set{opacity:0;pointer-events:none}
.town-agent__launch{height:74px;width:74px;padding:0;display:grid;place-items:center;border-radius:50%;background:#f6bc7d;border:4px solid var(--town-ink);box-shadow:5px 5px 0 #a17a55;transition:transform .2s}.town-agent__launch:hover{transform:translateY(-5px)}.town-agent__launch .town-illus{width:61px;height:61px}
.town-chat{position:fixed;right:22px;bottom:108px;width:min(370px,calc(100vw - 30px));max-height:70vh;z-index:25;display:none;flex-direction:column;background:#fff6db;border:3px solid #604931;border-radius:14px;box-shadow:7px 7px 0 #a77854;overflow:hidden}.town-chat[aria-hidden="false"]{display:flex;animation:town-pop .23s both}.town-chat__top{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 12px;background:#7fb678;border-bottom:3px solid #604931;color:#fff9e6;font-weight:900}.town-chat__messages{overflow-y:auto;min-height:145px;max-height:260px;padding:13px;display:grid;align-content:start;gap:9px}.town-chat__msg{border:2px solid #a18764;background:#e5edc4;padding:8px 10px;border-radius:11px;max-width:90%;font-size:12px}.town-chat__msg--me{margin-left:auto;background:#ffebbd}.town-chat__form{display:flex;gap:7px;border-top:2px solid #b59a76;padding:9px;background:#fff2d1}
.town-gift-float{position:absolute;right:-5px;top:-9px;transform:rotate(10deg)}.town-abs-sticker{position:absolute;top:-18px;right:20px;z-index:2;transform:rotate(11deg)}
/* 额外的卡通模块：数值印章、笔记纸、雨云、成长盆栽、游戏告示牌 */
.town-note{position:relative;background:#fff0b7;padding:17px 15px 16px;border:2.5px solid #74593d;border-radius:5px 12px 10px 9px;box-shadow:4px 4px 0 #b69668;transform:rotate(-1deg)}
.town-note::before{content:"";position:absolute;top:-10px;left:42%;width:58px;height:20px;background:#f3baa17f;transform:rotate(4deg)}
.town-sign{border:3px solid #735738;border-radius:13px;background:#dfedc3;padding:11px 14px;box-shadow:inset 0 0 0 4px #f9efd0,4px 4px 0 #ae8a58}
.town-stat-stamp{position:relative;display:flex;align-items:center;justify-content:center;width:64px;height:64px;border:3px dashed #c69474;border-radius:50%;background:#ffe8ca;transform:rotate(-10deg)}
.town-pixel-cloud{width:75px;height:28px;background:#fff7e6;box-shadow:15px -14px 0 #fff7e6,38px -6px 0 #fff7e6,4px 15px 0 #fff7e6;position:relative;border-radius:15px;opacity:.9}
.town-kawaii-face{position:relative}.town-kawaii-face::after{content:"ᴗ";position:absolute;bottom:9%;left:44%;color:#725640;font-size:18px}
.town-scene{position:relative;min-height:140px;overflow:hidden;background:linear-gradient(180deg,#bbe3eb 0 64%,#d4e7ad 64% 76%,#95c27d 76%);border:2.5px solid #725638;border-radius:12px}.town-scene__art{position:absolute;bottom:0;right:10%;width:160px;height:160px}.town-scene__cloud{position:absolute;left:8%;top:15%;opacity:.8}.town-scene__star{position:absolute;top:18%;right:8%}
.town-bunting{display:flex;gap:5px;overflow:hidden;height:29px}.town-bunting span{display:block;width:21px;height:26px;clip-path:polygon(0 0,100% 0,50% 100%);background:var(--town-peach);border-radius:3px}.town-bunting span:nth-child(3n+2){background:var(--town-honey)}.town-bunting span:nth-child(3n){background:var(--town-leaf)}
.town-wood{background:repeating-linear-gradient(0deg,#cfa579 0 18px,#c3996f 18px 21px);border:3px solid #806042;border-radius:10px}
/* 呼吸空间与可访问性 */
@media(max-width:1160px){.town-columns{grid-template-columns:minmax(0,1fr)}.town-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.town-shell{display:block}.town-sidebar{position:relative;height:auto;padding:12px;border-right:0;border-bottom:3px solid var(--town-ink);gap:8px}.town-brand__title{font-size:20px}.town-nav{flex-direction:row;overflow-x:auto;padding:5px 2px 8px}.town-nav__item{width:max-content;flex:none;min-height:35px;padding:4px 8px}.town-nav__item .town-illus{width:19px;height:19px}.town-level{display:none}.town-main{padding:16px 13px 90px}.town-header{align-items:start}.town-stats{gap:10px}.town-rewards{grid-template-columns:repeat(2,1fr)}.town-weather{padding:11px 14px}.town-weather__title{font-size:17px}.town-weather__desc{font-size:11px}.town-plant .town-illus{height:62px}.town-plant{min-height:128px}.town-agent__bubble{max-width:min(236px,calc(100vw - 24px))}}
@media(max-width:430px){.town-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.town-plants{gap:5px}.town-plant{padding:6px 3px}.town-plant strong{font-size:10px}.town-plant small{font-size:9px}.town-adventure{padding:12px}.town-header .town-pill{display:none}.town-panel__body{padding:11px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}

/* ==========================================================================
   桥接层：把「网络工程师学习题库」既有结构映射为日常小镇皮肤
   仅在 body[data-skin="town"] 下生效，不影响其它皮肤。
   ========================================================================== */
body[data-skin="town"]{
  --ink:#594630;--muted:#957b60;--line:#c8b596;--paper:#fff7e4;--surface:#fff9e9;
  --primary:#6f9d65;--primary-soft:#dfedbf;--amber:#e6a54f;--red:#d9705f;--green:#5f9d61;
  --radius:15px;
  color:var(--ink);
  /* 不覆盖字体：不同字体字宽不同会导致按钮宽度与其它皮肤不一致 */
  background-color:#fff9eb;
  background-image:radial-gradient(#eacfa457 .8px,transparent .8px);
  background-size:22px 22px;
  color-scheme:light;
}
body[data-skin="town"]::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:radial-gradient(ellipse 620px 520px at 92% 0%,rgba(246,213,143,.30),transparent 70%),
             radial-gradient(ellipse 560px 600px at 0% 96%,rgba(168,211,153,.28),transparent 70%)}
/* 顶栏：小屋 + 彩旗 + 木棕分隔 */
body[data-skin="town"] header,
body[data-skin="town"] .header{
  background:linear-gradient(180deg,#f9d997,#f6d18c);
  border:0;border-bottom:3px solid var(--town-ink,#594630);
  box-shadow:0 4px 0 rgba(168,122,85,.45);
  color:#594630;backdrop-filter:none;-webkit-backdrop-filter:none;
}
body[data-skin="town"] header b{color:#594630}
body[data-skin="town"] header .muted,body[data-skin="town"] header span{color:#967757}
/* 侧栏：游戏任务菜单 */
body[data-skin="town"] #nav,
body[data-skin="town"] .app-sidebar{
  background:linear-gradient(180deg,#f9d997,#f6d18c);
  border:0;border-right:3px solid var(--town-ink,#594630);
  box-shadow:5px 0 0 rgba(168,122,85,.3);
  color:#594630;backdrop-filter:none;-webkit-backdrop-filter:none;
}
body[data-skin="town"] #nav button,
body[data-skin="town"] .app-sidebar button{
  background:transparent;color:#594630;border:1px solid transparent;
  box-shadow:none;border-radius:9px;
}
body[data-skin="town"] #nav button:hover,
body[data-skin="town"] .app-sidebar button:hover{background:#fff3d47d;transform:translateX(2px)}
body[data-skin="town"] #nav button.active,
body[data-skin="town"] #nav button[aria-current="page"],
body[data-skin="town"] .app-sidebar button.active,
body[data-skin="town"] .app-sidebar button[aria-current="page"]{
  background:#fff6d9;border-color:#765c3a;color:#594630;box-shadow:0 0 0 1px #765c3a,3px 3px 0 #a98053;transform:none}
/* 主区域面板：厚描边 + 右下硬阴影 */
body[data-skin="town"] :is(.panel,.entry-card,.region-card,.paper-card,.case-card,.resume-card,.knowledge-controls,.obs-stage,.skin-dialog,.password-dialog,.answer-dialog,.town-panel){
  background:#fff9e9;border:1px solid var(--town-line,#6b553a);border-radius:14px;
  box-shadow:0 0 0 1.5px var(--town-line,#6b553a),4px 5px 0 rgba(168,122,85,.55);
  backdrop-filter:none;-webkit-backdrop-filter:none;
  color:#594630;transition:transform .18s var(--town-ease),box-shadow .18s var(--town-ease)
}
body[data-skin="town"] :is(.panel,.entry-card,.region-card,.paper-card,.case-card,.resume-card):hover{
  transform:translateY(-2px);box-shadow:0 0 0 1.5px var(--town-line,#6b553a),4px 7px 0 rgba(168,122,85,.55)
}
body[data-skin="town"] :is(h1,h2,h3,h4){color:#594630;letter-spacing:0}
body[data-skin="town"] :is(p,small,.muted,.page-heading p){color:#957b60}
body[data-skin="town"] .panel .panel,
body[data-skin="town"] .kp-card .rel-question,
body[data-skin="town"] .obs-stage .obs-side,
body[data-skin="town"] .obs-stage .obs-focus,
body[data-skin="town"] .obs-stage .obs-canvas-wrap{background:transparent;background-image:none;border:0;box-shadow:none}
/* 知识卡里的答题卡：给一块实底，避免一列数字“悬空”显得憋屈 */
body[data-skin="town"] .kp-card .rel-side{
  background:#fff3d4;border:1px solid var(--town-line,#6b553a);border-radius:12px;
  box-shadow:0 0 0 1.5px var(--town-line,#6b553a),3px 4px 0 rgba(168,122,85,.45)
}
body[data-skin="town"] .rel-side-count{background:#f0dcb2;color:#7a6247}
/* 按钮：厚描边 + 硬阴影 + 物理按压 */
/* 关键：border 宽度与其它皮肤保持一致（1px），厚度用 box-shadow 外扩模拟，
   这样按钮的位置与尺寸在所有皮肤下完全相同，只有观感不同。 */
body[data-skin="town"] button,
body[data-skin="town"] .town-btn{
  background:#ffe8ac;color:#594630;border:1px solid var(--town-ink,#594630);
  border-radius:9px;
  box-shadow:0 0 0 1.5px var(--town-ink,#594630),3px 4px 0 var(--town-shadow,#a87a55);
  /* 不覆盖 font-weight：字重会改变文字宽度，进而让按钮变宽、右对齐后整组位移 */
  backdrop-filter:none;-webkit-backdrop-filter:none;
  transition:transform .13s,box-shadow .13s,background-color .13s
}
body[data-skin="town"] button:disabled{opacity:.55}
body[data-skin="town"] button:not(:disabled):hover{background:#fff0c4;transform:translateY(-2px);box-shadow:0 0 0 1.5px var(--town-ink,#594630),3px 6px 0 var(--town-shadow,#a87a55)}
body[data-skin="town"] button:not(:disabled):active{transform:translate(2px,3px);box-shadow:0 0 0 1.5px var(--town-ink,#594630),1px 1px 0 var(--town-shadow,#a87a55)}
body[data-skin="town"] :is(.primary,.soft-btn,#nav button.active,.opt-chip.on,.rel-card-grid button.current,.answer-card-grid button.current){
  background:#bbdfa9;border-color:#594630;color:#3f6b38;box-shadow:0 0 0 1.5px var(--town-ink,#594630),3px 4px 0 var(--town-shadow,#a87a55)
}
body[data-skin="town"] :is(.primary,.soft-btn):hover{background:#a9d694}
body[data-skin="town"] input,body[data-skin="town"] select,body[data-skin="town"] textarea{
  background:#fffbed;color:#594630;border:1px solid #ab906a;border-radius:9px;
  box-shadow:0 0 0 1px #ab906a,inset 0 2px 0 rgba(155,120,72,.18);backdrop-filter:none;-webkit-backdrop-filter:none
}
body[data-skin="town"] input:focus,body[data-skin="town"] select:focus,body[data-skin="town"] textarea:focus{
  border-color:#619d77;box-shadow:0 0 0 1px #619d77,0 0 0 3px #b9ddad;outline:none
}
body[data-skin="town"] input::placeholder,body[data-skin="town"] textarea::placeholder{color:#b39a7c}
body[data-skin="town"] select option{background:#fff9e9;color:#594630}
body[data-skin="town"] :is(button,input,select,textarea,a):focus-visible{outline:3px solid #4b8bb5;outline-offset:2px}
/* 题干与选项：卡通描边，保持可读 */
body[data-skin="town"] .question-body{color:#4f3e2c}
body[data-skin="town"] :is(.choice,.opt,.option){
  background:#fffdf5;border:1px solid #cbb392;border-radius:10px;color:#594630;
  box-shadow:0 0 0 1px #cbb392
}
body[data-skin="town"] :is(.choice.correct,.opt.correct){border-color:#5f9d61;background:#eaf6e2}
body[data-skin="town"] :is(.choice.incorrect,.opt.incorrect){border-color:#d9705f;background:#fdeee9}
body[data-skin="town"] .analysis,body[data-skin="town"] .analysisHtml{
  background:#fdf6e2;border:1px solid #ddd0ae;border-radius:10px;color:#5b4834;
  box-shadow:0 0 0 1px #ddd0ae
}
body[data-skin="town"] .tag{
  background:#fff2ce;color:#7a5f3c;border:1px solid #d9c49b;border-radius:8px;
  box-shadow:0 0 0 1px #d9c49b
}
body[data-skin="town"] .tag.red{background:#fde3dd;color:#b04a3a;border-color:#eeb6a9}
body[data-skin="town"] .tag.green{background:#e0f0d5;color:#4c7a46;border-color:#b6d5a6}
/* 皮肤选择器里的预览色块 */
.skin-preview.town{background:linear-gradient(135deg,#fff7e4 0 52%,#f6d58f 52% 100%);border-color:#594630}
.skin-preview.town::after{content:"";position:absolute;right:5px;bottom:5px;width:12px;height:12px;border-radius:3px;
  background:no-repeat center/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 128 128'%3E%3Cuse href='town-sprites.svg#house'/%3E%3C/svg%3E")}
/* obsidian 图谱页：原样式硬编码了深色主题（白字 + #171c28 深底），
   在浅色小镇皮肤上会变成白字白底。这里整组覆盖为暖棕深色。 */
body[data-skin="town"] :is(.obs-toolbar strong,.obs-toolbar b){color:#4a3927}
body[data-skin="town"] :is(.obs-toolbar span,.obs-caption,.obs-chapter-select,.obs-legend,
  .obs-focus p,.obs-focus small,.obs-side small,.obs-tip){color:#7a6449}
body[data-skin="town"] :is(.obs-side,.obs-stage .obs-side){
  background:#fff9e9;border-left:1px solid #d8c7a4;color:#594630;
}
body[data-skin="town"] :is(.obs-side h3,.obs-side h4,.obs-focus h4){color:#4a3927}
body[data-skin="town"] .obs-area-list{color:#5f4a33}
body[data-skin="town"] .obs-area-row{border-bottom:1px dashed #ddd0b2;color:#5f4a33}
body[data-skin="town"] .obs-area-row b{color:#4a3927}
body[data-skin="town"] :is(.obs-zoom button,.obs-toolbar button,.obs-chapter-select select){
  background:#ffe8ac;color:#4a3927;border:1px solid #594630;
  box-shadow:0 0 0 1.5px #594630,2px 3px 0 rgba(168,122,85,.5);
}
body[data-skin="town"] :is(.obs-zoom button,.obs-toolbar button):hover{background:#fff0c4}
body[data-skin="town"] .obs-stage{border-color:#6b553a;background:#fff9e9}
body[data-skin="town"] .obs-tip{background:#fff3d3;border:1px solid #b99a70;color:#4a3927}

/* obsidian 图谱页：原样式硬编码了深色主题（白字 + #171c28 深底），
   在浅色小镇皮肤上会变成白字白底。这里整组覆盖为暖棕深色。 */
body[data-skin="town"] :is(.obs-toolbar strong,.obs-toolbar b){color:#4a3927}
body[data-skin="town"] :is(.obs-toolbar span,.obs-caption,.obs-chapter-select,.obs-legend,
  .obs-focus p,.obs-focus small,.obs-side small,.obs-tip){color:#7a6449}
body[data-skin="town"] :is(.obs-side,.obs-stage .obs-side){
  background:#fff9e9;border-left:1px solid #d8c7a4;color:#594630;
}
body[data-skin="town"] :is(.obs-side h3,.obs-side h4,.obs-focus h4){color:#4a3927}
body[data-skin="town"] .obs-area-list{color:#5f4a33}
body[data-skin="town"] .obs-area-row{border-bottom:1px dashed #ddd0b2;color:#5f4a33}
body[data-skin="town"] .obs-area-row b{color:#4a3927}
body[data-skin="town"] :is(.obs-zoom button,.obs-toolbar button,.obs-chapter-select select){
  background:#ffe8ac;color:#4a3927;border:1px solid #594630;
  box-shadow:0 0 0 1.5px #594630,2px 3px 0 rgba(168,122,85,.5);
}
body[data-skin="town"] :is(.obs-zoom button,.obs-toolbar button):hover{background:#fff0c4}
body[data-skin="town"] .obs-stage{border-color:#6b553a;background:#fff9e9}
body[data-skin="town"] .obs-tip{background:#fff3d3;border:1px solid #b99a70;color:#4a3927}

/* 进度条：浅色纸底上白 8% 完全看不见，改用米棕底 + 深绿进度 */
body[data-skin="town"] :is(.bar,.answer-progress,.mini-progress){
  background:#e2d2ae;border:1px solid #c9b68e;
  box-shadow:inset 0 1px 2px rgba(120,95,60,.28);border-radius:6px;overflow:hidden;
}
body[data-skin="town"] :is(.bar,.answer-progress,.mini-progress) > i{
  background:linear-gradient(180deg,#5f9350,#3f6f3a);
  border-radius:5px;box-shadow:inset 0 1px 0 rgba(255,255,255,.35);
}
body[data-skin="town"] .progress-line{color:#6b553a;font-weight:600}
body[data-skin="town"] .progress-line b{color:#4f3e2c}
/* 分区进度里的状态点/边框在浅底上也加深一档 */
body[data-skin="town"] :is(.region-card,.progress-card){border-color:#c9b68e;background:#fff9e9}
body[data-skin="town"] .region-status{font-weight:700}

/* 顶栏右侧一组（换肤 / 身份 / 退出）：明确靠右上，town 皮肤下加一枚插画 */
#skinSwitcher{display:inline-flex;align-items:center;gap:6px}
body[data-skin="town"] .user-pill .avatar{background:#ffe8ac;color:#594630;border:1px solid #594630;box-shadow:0 0 0 1px #594630;font-weight:800}
body[data-skin="town"] #shutdown{color:#957b60}

/* 卡片角落小花装饰：每个主要面板右上角一朵，不遮挡正文 */
body[data-skin="town"] .panel::after{
  content:"";position:absolute;top:8px;right:10px;width:20px;height:20px;pointer-events:none;opacity:.5;
  background:no-repeat center/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 128 128'%3E%3Cuse href='town-sprites.svg#corner-flower'/%3E%3C/svg%3E")
}
@media(max-width:900px){
}

/* 桥接层补充：产品内实际用到的 town 元素 */
/* 图标紧贴文字，不留空白占位：与文字的间距交给按钮自身的 gap */
/* 尺寸与原有 .nav-icon（20px 宽、17px 字号行盒约 28px 高）完全对齐，保证 5 套皮肤按钮高度一致 */
.town-nav-art{display:inline-flex;align-items:center;justify-content:center;width:20px;height:28px;flex:0 0 20px}
/* town 皮肤下侧栏按钮用自己的紧凑间距，不叠加原有 nav-icon 的宽度 */
.town-nav-art .town-illus{width:20px;height:20px;filter:drop-shadow(1px 1px 0 #7b543022)}
#nav button.active .town-nav-art .town-illus{filter:drop-shadow(1px 1px 0 #7b543055)}
/* 主视觉绝对定位在页头右侧空白处：不占文档流，标题与按钮位置与其它皮肤完全一致 */
body[data-skin="town"] .page-heading{position:relative}
.town-page-art{position:absolute;right:0;top:-6px;display:flex;align-items:center;gap:6px;flex-wrap:wrap;pointer-events:none;opacity:.95;max-width:46%}
.town-page-hero{width:56px;height:56px;filter:drop-shadow(2px 2px 0 #7b543030)}
.town-page-deco{width:24px;height:24px;opacity:.9}
.town-weather{margin:14px 0}
.town-weather .town-illus{width:52px;height:52px}
/* 伙伴中心：网格选宠，卡片与按钮等宽自适应 */
.pet-center__head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:14px}
.pet-center__head h2{font-size:18px}
.pet-center__head p{margin-top:4px;font-size:12px;line-height:1.7;max-width:56ch}
.pet-center__head>button{flex:none;min-width:112px}
.pet-center__now{display:flex;align-items:center;gap:12px;padding:12px 14px;background:#fff3d4;border:1px solid #6b553a;border-radius:12px;box-shadow:0 0 0 1.5px #6b553a,2px 3px 0 rgba(168,122,85,.4);margin-bottom:14px}
.pet-center__avatar{width:44px;height:44px;flex:none;display:grid;place-items:center;background:#ffe8ac;border:1px solid #6b553a;border-radius:10px;box-shadow:0 0 0 1.5px #6b553a}
.pet-center__now>div{min-width:0}
.pet-center__now b{font-size:14px;color:#594630}
.pet-center__tone{margin-left:8px;font-size:11px;font-weight:800;color:#3f6b38;background:#dff0cf;border:1px solid #8fbf7a;border-radius:999px;padding:1px 8px;vertical-align:2px}
.pet-center__now p{margin-top:4px;font-size:12px;line-height:1.7;color:#7a6247}
.pet-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:9px;max-height:min(46vh,380px);overflow-y:auto;padding:2px}
.pet-cell{display:flex;flex-direction:column;align-items:center;gap:5px;padding:8px 4px 7px;min-height:78px;border-radius:11px;background:#fff9e9;border:1px solid #6b553a;box-shadow:0 0 0 1.5px #6b553a,2px 3px 0 rgba(168,122,85,.45)}
.pet-cell__art{display:block;line-height:0}
.pet-cell__name{font-size:11px;font-weight:800;color:#594630;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pet-cell.on{background:#bbdfa9;color:#3f6b38}
.pet-cell.on .pet-cell__name{color:#3f6b38}
.pet-cell:hover{background:#fff3d4}
.pet-center--flash{animation:petFlash 1.3s ease-out}
@keyframes petFlash{0%,100%{box-shadow:0 0 0 1.5px #6b553a,4px 5px 0 rgba(168,122,85,.55)}35%{box-shadow:0 0 0 3px #7fb678,4px 5px 0 rgba(168,122,85,.55)}}
/* 闲置插画的角落装饰：绝对定位在面板空白处，不参与布局、不遮挡正文 */
body[data-skin="town"] #app{position:relative}
.town-corner-decor{position:fixed;right:0;bottom:0;width:340px;height:300px;pointer-events:none;z-index:0}
.town-corner{position:absolute;display:block;line-height:0;pointer-events:none}
.town-corner .town-illus{width:100%;height:100%}
/* 围绕悬浮狐狸助手成簇分布，留出助手本体的空间（右下 74px 方块） */
.town-corner--0{right:96px;bottom:44px;width:34px;height:34px;opacity:.2;transform:rotate(-8deg)}
.town-corner--1{right:22px;bottom:118px;width:42px;height:42px;opacity:.4;transform:rotate(7deg)}
.town-corner--2{right:150px;bottom:22px;width:46px;height:46px;opacity:.16;transform:rotate(5deg)}
.town-corner--3{right:204px;bottom:70px;width:38px;height:38px;opacity:.14;transform:rotate(-6deg)}
body:not([data-skin="town"]) .town-corner-decor{display:none!important}
@media(max-width:760px){.town-corner--2,.town-corner--3{display:none}}

/* 非 town 皮肤下彻底隐藏 town 专属 DOM */
body:not([data-skin="town"]) :is(.town-page-art,.town-nav-art,.town-weather,.town-agent,.pet-center){display:none!important}

@media(prefers-reduced-motion:reduce){
  body[data-skin="town"] button:not(:disabled):hover{transform:none}
  body[data-skin="town"] :is(.panel,.entry-card,.region-card,.paper-card,.case-card,.resume-card):hover{transform:none}
}

/* 伙伴中心：窄屏时标题与按钮各自成行，网格更紧凑 */
@media(max-width:560px){
  .pet-center__head{flex-direction:column;align-items:stretch;gap:10px}
  .pet-center__head>button{width:100%}
  .pet-center__now{padding:10px 11px;gap:10px}
  .pet-grid{grid-template-columns:repeat(auto-fill,minmax(72px,1fr));max-height:min(42vh,320px)}
}

/* 随手记事本：自由摆放的伙伴旁边弹出 */
.town-memo{position:fixed;z-index:950;width:min(320px,calc(100vw - 24px));padding:12px;display:flex;flex-direction:column;gap:8px;
  background:#fff9e9;border:1px solid #6b553a;border-radius:14px;
  box-shadow:0 0 0 1.5px #6b553a,5px 6px 0 rgba(168,122,85,.5);color:#594630}
.town-memo[hidden]{display:none!important}
.town-memo__head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.town-memo__who{display:flex;align-items:center;gap:7px;min-width:0}
.town-memo__who b{font-size:13px;font-weight:900;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.town-memo .town-memo__close{position:static;width:22px;height:22px;min-width:22px;min-height:22px;padding:0;margin:0;display:grid;place-items:center;
  border:1.5px solid #6b553a;border-radius:50%;background:#fff8e4;color:#594630;font:900 11px/1 system-ui,sans-serif;cursor:pointer;box-shadow:none;flex:none}
.town-memo .town-memo__close:hover{background:#f6bc7d;transform:none}
.town-memo__stat{margin:0;font-size:11px;color:#957b60;line-height:1.5}
.town-memo__text{width:100%;min-height:150px;max-height:40vh;resize:vertical;border:1px solid #c9b28c;border-radius:10px;
  background:#fffdf3;color:#4a3a28;font-size:13px;line-height:1.75;padding:10px 11px;font-family:inherit}
.town-memo__text:focus{outline:none;border-color:#7fb678;box-shadow:0 0 0 2px rgba(127,182,120,.35)}
.town-memo__foot{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11px;color:#957b60}
body:not([data-skin="town"]) .town-memo{display:none!important}
.town-memo .town-memo__lib{border:0;background:transparent;color:#3f6b38;font-size:11px;font-weight:900;text-decoration:underline;
  min-height:0;min-width:0;padding:0 4px;box-shadow:none;margin-left:auto}
.town-memo .town-memo__lib:hover{background:transparent;transform:none;color:#2f5b2a}
.town-memo__foot #townMemoCount{margin-left:8px}
