/* LoveNode theme — soft, warm, rounded. Colors are tokens; dark mode redefines them. */
:root{
  --ink:#2b1b2e; --ink2:#5a4660; --muted:#8a7590;
  --paper:#fff6f9; --paper2:#ffeef4; --card:#fff; --line:#f0dce6;
  --brand:#d6336c; --brand-2:#ef5f93; --brand-ink:#fff; --lav:#f1e7ff; --lav-ink:#6b2fa0;
  --grad:linear-gradient(135deg,#ff6f9f 0%,#e2439d 55%,#b53fc4 100%);
  --signal:#ffc247; --signal-ink:#3a2500; --mint:#1fa58a; --danger:#c0243b; --heart:#e0245e;
  --r:20px; --r-sm:14px; --shadow:0 1px 2px rgba(120,40,80,.06),0 10px 28px rgba(190,60,110,.10);
  --font:ui-rounded,"SF Pro Rounded","Nunito","Quicksand","Segoe UI Variable Text","Segoe UI",system-ui,-apple-system,Roboto,"Noto Sans",sans-serif;
  font-family:var(--font);
}
@media (prefers-color-scheme:dark){:root{
  --ink:#f8ecf5; --ink2:#d9c6d8; --muted:#b19bb4; --paper:#1a1020; --paper2:#22152a; --card:#27192f; --line:#3f2b49;
  --brand:#ff7aa8; --brand-2:#ff9bbf; --brand-ink:#2a0f1c; --lav:#32204a; --lav-ink:#d9bdff; --danger:#ff8a95; --heart:#ff6f9f;
  --shadow:0 1px 2px rgba(0,0,0,.4),0 10px 28px rgba(0,0,0,.28)}}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:84px}
body{margin:0;background:var(--paper);background-image:radial-gradient(900px 420px at 85% -10%,var(--paper2),transparent 70%);color:var(--ink);line-height:1.5;-webkit-text-size-adjust:100%;min-height:100vh}
a{color:var(--brand)}
h1{font-size:1.7rem;margin:.3em 0 .6em;letter-spacing:-.01em;line-height:1.2;font-weight:800}
h2{font-size:1.1rem;margin:0 0 .6em;display:flex;align-items:center;gap:.45rem;font-weight:700}h2 small{color:var(--muted);font-weight:500}
main{max-width:780px;margin:0 auto;padding:1.2rem 1rem 3rem}main.wide{max-width:1120px}main.narrow{max-width:560px}
.sr,.skip{position:absolute;left:-9999px}.skip:focus{left:1rem;top:1rem;z-index:100;background:var(--card);padding:.6rem 1rem;border-radius:12px}
.hide{display:none!important}.hp{position:absolute;left:-9999px;height:0;opacity:0}.grow{flex:1}.center{text-align:center}
:focus-visible{outline:3px solid var(--signal);outline-offset:2px}
.ic{flex:none;vertical-align:-4px}
/* ---- header ---- */
.top{display:flex;align-items:center;gap:.8rem;padding:.5rem 1rem;background:color-mix(in srgb,var(--card) 88%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;padding-top:calc(.5rem + env(safe-area-inset-top))}
.brand{display:flex;align-items:center;gap:.5rem;font-weight:800;font-size:1.25rem;text-decoration:none;color:var(--ink);letter-spacing:-.02em}.logo{color:var(--brand)}
.topnav{display:flex;gap:.1rem;margin-left:.5rem}.topnav a{display:flex;align-items:center;gap:.4rem;padding:.5rem .8rem;border-radius:999px;text-decoration:none;color:var(--ink2);font-weight:600}
.topnav a:hover{background:var(--paper2)}.topnav a[aria-current]{background:var(--grad);color:#fff}
.lang a{padding:.2rem .35rem;text-decoration:none;color:var(--muted);font-size:.82rem}.lang a[aria-current]{color:var(--ink);font-weight:800}
.usermenu{position:relative}.usermenu summary{list-style:none;cursor:pointer;padding:.4rem;border-radius:999px;display:flex}.usermenu summary::-webkit-details-marker{display:none}.usermenu summary:hover{background:var(--paper2)}
.dropdown{position:absolute;right:0;top:2.7rem;background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--shadow);min-width:210px;padding:.35rem;z-index:30}
.dropdown a,.dropdown button{display:flex;gap:.5rem;align-items:center;width:100%;padding:.6rem .75rem;border:0;background:none;color:var(--ink);text-decoration:none;border-radius:10px;font:inherit;cursor:pointer;text-align:left}.dropdown a:hover,.dropdown button:hover{background:var(--paper2)}
.badge{display:inline-block;min-width:1.35em;padding:0 .42em;border-radius:1em;background:var(--signal);color:var(--signal-ink);font-size:.72rem;font-weight:800;text-align:center;line-height:1.55}
/* ---- buttons / forms ---- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;border:1.5px solid var(--line);background:var(--card);color:var(--ink);padding:.6rem 1.1rem;min-height:44px;border-radius:999px;font:inherit;font-weight:700;cursor:pointer;text-decoration:none;line-height:1.2}
.btn:hover{border-color:var(--brand)}.btn.primary{background:var(--grad);border-color:transparent;color:#fff;box-shadow:0 6px 16px rgba(214,51,108,.28)}.btn.primary:hover{filter:brightness(1.05)}
.btn.signal{background:var(--signal);border-color:var(--signal);color:var(--signal-ink)}.btn.danger{border-color:var(--danger);color:var(--danger)}
.btn.sm{padding:.3rem .8rem;min-height:36px;font-size:.88rem}.btn.big{padding:.85rem 1.5rem;font-size:1.05rem;min-height:52px}.btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}
.btn.on,.qlike-inline.on{color:var(--heart);border-color:var(--heart)}.qlike-inline.on svg{fill:var(--heart)}
.btn.cool{opacity:.75}
.link{background:none;border:0;padding:0;color:var(--brand);cursor:pointer;font:inherit;text-decoration:underline}.link.danger,.danger{color:var(--danger)}form.inline{display:inline}
form.busy .btn[type=submit]{opacity:.6;pointer-events:none}form.busy .btn[type=submit]::after{content:"";width:1em;height:1em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.form{display:flex;flex-direction:column;gap:.95rem}.two{display:grid;grid-template-columns:1fr 1fr;gap:.8rem}@media(max-width:520px){.two{grid-template-columns:1fr}}
label{display:flex;flex-direction:column;gap:.3rem;font-size:.92rem;font-weight:600}label small,.fl small{font-weight:400;color:var(--muted)}label.check,label.radio{flex-direction:row;align-items:center;gap:.55rem;font-weight:500}
.req{color:var(--danger);font-style:normal}
input,select,textarea{font:inherit;font-weight:400;color:inherit;background:var(--card);border:1.5px solid var(--line);border-radius:14px;padding:.65rem .8rem;max-width:100%;width:100%;min-height:46px}
input:focus,select:focus,textarea:focus{border-color:var(--brand);outline:none;box-shadow:0 0 0 4px color-mix(in srgb,var(--brand) 18%,transparent)}
input[type=checkbox],input[type=radio]{width:auto;min-height:0;accent-color:var(--brand)}textarea{resize:vertical}
small,.sub{color:var(--muted);font-size:.85rem}fieldset{border:1.5px solid var(--line);border-radius:var(--r-sm);margin:0;padding:.6rem .8rem}legend{font-size:.9rem;font-weight:700;padding:0 .3rem}
.seg{display:block;border:0;padding:0}.seg legend{padding:0 0 .35rem;font-weight:600}.seg .radio{display:inline-flex;margin:0 .3rem .3rem 0;position:relative}
.seg .radio input{position:absolute;opacity:0}.seg .radio span{display:inline-block;padding:.5rem 1rem;border:1.5px solid var(--line);border-radius:999px;background:var(--card);cursor:pointer}
.seg .radio input:checked+span{background:var(--grad);border-color:transparent;color:#fff}.seg .radio input:focus-visible+span{outline:3px solid var(--signal)}
.chips{display:block;border:0;padding:0}.chips legend{padding:0 0 .35rem;font-weight:600}.chip{display:inline-flex;margin:0 .35rem .35rem 0;position:relative}.chip input{position:absolute;opacity:0}
.chip span{display:inline-block;padding:.4rem .9rem;border:1.5px solid var(--line);border-radius:999px;background:var(--card);cursor:pointer;font-size:.9rem}
.chip input:checked+span{background:var(--lav);border-color:var(--lav-ink);color:var(--lav-ink);font-weight:700}.chip input:focus-visible+span{outline:3px solid var(--signal)}
.range{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}.range input{width:6rem}
.switch{flex-direction:row;align-items:center;gap:.8rem;font-weight:500;cursor:pointer}.switch input{position:absolute;opacity:0}.switch .slider{flex:none;width:46px;height:26px;border-radius:99px;background:var(--line);position:relative;transition:background .2s}
.switch .slider::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .2s}.switch input:checked+.slider{background:var(--brand)}.switch input:checked+.slider::after{transform:translateX(20px)}.switch input:focus-visible+.slider{outline:3px solid var(--signal)}
.notice{padding:.75rem 1rem;border-radius:var(--r-sm);background:var(--card);border-left:5px solid var(--mint);box-shadow:var(--shadow);margin:.5rem 0}.notice.err{border-color:var(--danger)}
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1.1rem 1.2rem;margin:0 0 1rem;box-shadow:var(--shadow)}
.card-form{background:var(--card);padding:1.3rem;border-radius:var(--r);border:1px solid var(--line);box-shadow:var(--shadow)}
.lead{color:var(--ink2);font-size:1.05rem}.empty{color:var(--muted)}.empty-box{color:var(--muted);text-align:center;padding:2.5rem 1rem;background:var(--card);border:1.5px dashed var(--line);border-radius:var(--r)}
/* ---- place picker ---- */
.place{display:grid;grid-template-columns:1fr 1fr;gap:.8rem}.place .suggest-wrap{grid-column:1/-1}@media(max-width:420px){.place{grid-template-columns:1fr}}
.suggest-wrap{position:relative}.suggest{position:absolute;z-index:15;top:100%;left:0;right:0;margin:3px 0 0;padding:.3rem;list-style:none;background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--shadow);max-height:280px;overflow:auto}
.suggest li{padding:.55rem .65rem;border-radius:10px;cursor:pointer;display:flex;justify-content:space-between;gap:.6rem}.suggest li small{color:var(--muted)}.suggest li[aria-selected=true],.suggest li:hover{background:var(--paper2)}
/* ---- landing ---- */
.hero{display:grid;grid-template-columns:1.1fr 1fr;gap:2.5rem;align-items:start;padding:1.5rem 0;position:relative}@media(max-width:860px){.hero{grid-template-columns:1fr}}
.hero::before{content:"";position:absolute;z-index:-1;left:-10%;top:-10%;width:60%;height:70%;background:radial-gradient(closest-side,rgba(255,111,159,.25),transparent);filter:blur(10px)}
.hero h1{font-size:2.8rem;line-height:1.08;max-width:15ch;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}@media(max-width:520px){.hero h1{font-size:2.1rem}}
.ticks{list-style:none;padding:0;margin:1.2rem 0;display:grid;gap:.6rem}.ticks li{display:flex;gap:.6rem;align-items:center}.ticks .ic{color:#fff;background:var(--grad);border-radius:50%;padding:4px;width:24px;height:24px}
.hero-form h2{font-size:1.3rem}.hearts{display:flex;gap:.3rem;color:var(--brand);margin-bottom:.4rem}
/* ---- dashboard ---- */
.dash{display:grid;grid-template-columns:1.2fr 1fr;gap:1rem}@media(max-width:760px){.dash{grid-template-columns:1fr}}
.greet h1{margin-top:0}.stats{display:flex;gap:1.4rem;flex-wrap:wrap}.stats a{text-decoration:none;color:var(--ink);display:flex;flex-direction:column}.stats b{font-size:1.7rem;line-height:1.1;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}.stats span{color:var(--muted);font-size:.85rem}
progress{width:100%;height:12px;border-radius:99px;overflow:hidden;appearance:none;border:0;background:var(--line)}
progress::-webkit-progress-bar{background:var(--line)}progress::-webkit-progress-value{background:var(--grad);border-radius:99px}progress::-moz-progress-bar{background:var(--brand)}
.meter-row{display:flex;justify-content:space-between;gap:1rem;margin-bottom:.5rem;flex-wrap:wrap}.todo{list-style:none;padding:0;margin:.8rem 0 0;display:flex;gap:.5rem;flex-wrap:wrap}.todo a{display:inline-flex;gap:.3rem;align-items:center;padding:.35rem .8rem;border:1.5px dashed var(--brand);border-radius:999px;text-decoration:none;font-size:.88rem}
.sec-head{display:flex;justify-content:space-between;align-items:baseline;margin:1.5rem 0 .7rem}.sec-head h2{margin:0}
/* ---- cards ---- */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(172px,1fr));gap:.9rem}@media(max-width:420px){.grid{grid-template-columns:repeat(2,1fr);gap:.6rem}}
.ucard{position:relative;border-radius:var(--r);overflow:hidden;background:var(--card);box-shadow:var(--shadow);aspect-ratio:3/4}.ucard.is-me{outline:3px solid var(--signal);outline-offset:-3px}
.ucard-link{display:block;width:100%;height:100%;color:#fff;text-decoration:none;position:relative}
.ucard .ph{width:100%;height:100%;object-fit:cover;display:block;transition:transform .35s}.ucard:hover .ph{transform:scale(1.04)}
.ucard-meta{position:absolute;left:0;right:0;bottom:0;padding:2.6rem .75rem .65rem;background:linear-gradient(transparent,rgba(60,10,45,.86));display:flex;flex-direction:column;line-height:1.3}.ucard-meta strong{font-size:1.02rem}.ucard-meta span{font-size:.8rem;opacity:.92;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bump-time{display:inline-flex;align-items:center;gap:.25rem;margin-top:.25rem;color:#ffe08a;font-weight:700;font-size:.74rem}.bump-time .ic{width:13px;height:13px}
.me-badge{position:absolute;top:.55rem;left:.55rem;background:var(--signal);color:var(--signal-ink);font-weight:800;font-size:.72rem;padding:.1rem .65rem;border-radius:99px;z-index:1}
.dot{display:inline-block;width:.62em;height:.62em;border-radius:50%;background:var(--mint);vertical-align:middle;flex:none}.ucard .dot{position:absolute;top:.7rem;left:.7rem;box-shadow:0 0 0 2px #fff}.me-badge+.dot{left:auto;right:.7rem}
.qlike{position:absolute;top:.45rem;right:.45rem;width:40px;height:40px;border-radius:50%;border:0;background:rgba(255,255,255,.94);color:var(--brand);cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px rgba(0,0,0,.18)}.qlike.on{color:var(--heart)}.qlike.on svg{fill:var(--heart)}
.ph-empty{display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--paper2),var(--lav));color:var(--brand);font-weight:800;font-size:2.4rem}
.ph.sm{width:46px;height:46px;border-radius:50%;object-fit:cover;font-size:1rem;flex:none}.ph.huge{width:240px;height:320px;border-radius:var(--r)}
/* ---- feed strip (on every page) ---- */
.strip{max-width:1120px;margin:.6rem auto 0;padding:0 1rem}
.strip-box{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:.55rem .8rem .4rem}
.strip-head{display:flex;align-items:center;gap:.6rem;font-size:.82rem;color:var(--muted)}.strip-head strong{color:var(--ink);font-size:.9rem}.strip-head a:not(.strip-x){margin-left:auto;white-space:nowrap}.strip-x{background:none;border:0;color:var(--muted);cursor:pointer;font-size:1.1rem;padding:0 .2rem}
.strip-track{display:flex;gap:.9rem;overflow-x:auto;scroll-snap-type:x proximity;padding:.5rem .1rem .4rem;scrollbar-width:thin}
.strip-item{flex:none;width:76px;text-align:center;text-decoration:none;color:var(--ink);scroll-snap-align:start;display:flex;flex-direction:column;align-items:center;gap:.15rem}
.ring{display:block;padding:3px;border-radius:50%;background:var(--grad)}.ring .ph{display:block;width:62px;height:62px;border-radius:50%;object-fit:cover;border:3px solid var(--card)}.ring .ph-empty{font-size:1.4rem}
.strip-item .nm{font-size:.76rem;font-weight:700;max-width:76px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.strip-item .cap{font-size:.68rem;color:var(--muted);max-width:76px;line-height:1.25;max-height:2.5em;overflow:hidden}
.strip-add .ring{background:none;border:2px dashed var(--brand);padding:0;display:flex;align-items:center;justify-content:center;width:68px;height:68px;color:var(--brand)}.strip-add .ring svg{width:26px;height:26px}
.strip-item.mine .ring{background:var(--signal)}
/* ---- feed page ---- */
.feed-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:.9rem}@media(max-width:420px){.feed-grid{grid-template-columns:1fr}}
.fcard{display:flex;gap:.9rem;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:.75rem;box-shadow:var(--shadow)}
.fphoto{position:relative;flex:none;width:100px;height:126px;border-radius:16px;overflow:hidden;display:block}.fphoto .ph{width:100%;height:100%;object-fit:cover;font-size:1.6rem}.fphoto .dot{position:absolute;top:6px;left:6px;box-shadow:0 0 0 2px #fff}
.fbody{display:flex;flex-direction:column;gap:.25rem;min-width:0;flex:1}.fname{color:var(--ink);text-decoration:none}.ftext{margin:.2rem 0;overflow-wrap:anywhere}.factions{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:auto}
.compose .pickphoto{display:flex;gap:.5rem;flex-wrap:wrap;border:0;padding:0}.pickphoto label{position:relative}.pickphoto input{position:absolute;opacity:0}.pickphoto img{width:70px;height:90px;object-fit:cover;border-radius:12px;border:3px solid transparent;display:block}.pickphoto input:checked+img{border-color:var(--brand)}.pickphoto input:focus-visible+img{outline:3px solid var(--signal)}
.row-actions{display:flex;gap:.8rem;align-items:center;flex-wrap:wrap}
/* ---- search ---- */
.filters{display:flex;gap:.8rem;flex-wrap:wrap;align-items:flex-end}.filters>label{min-width:130px}.filters .age span{display:flex;gap:.3rem;align-items:center}.filters input[type=number]{width:5rem}
.more-filters{flex-basis:100%}.more-filters summary{cursor:pointer;color:var(--brand);font-weight:700}.morebox{display:flex;flex-direction:column;gap:1rem;margin-top:.8rem}.place-box{display:flex;flex-direction:column;gap:.5rem}
.pager{display:flex;gap:1rem;margin:1.2rem 0;justify-content:center}.tabs{display:flex;gap:.35rem;margin:0 0 1rem;flex-wrap:wrap}.tabs a{padding:.4rem 1rem;border:1.5px solid var(--line);border-radius:999px;text-decoration:none;background:var(--card);color:var(--ink);font-weight:600}.tabs a[aria-current]{background:var(--grad);color:#fff;border-color:transparent}
.tabs .badge{margin-left:.3rem}
/* ---- profile view ---- */
.profile{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1.4rem;align-items:start}@media(max-width:800px){.profile{grid-template-columns:1fr}}
.pmain{display:block;width:100%;padding:0;border:0;border-radius:var(--r);overflow:hidden;cursor:zoom-in;background:var(--line);aspect-ratio:4/5;box-shadow:var(--shadow)}.pmain img{width:100%;height:100%;object-fit:cover;display:block}.pmain.empty{display:flex;align-items:center;justify-content:center;cursor:default}
.thumbs{display:flex;gap:.5rem;margin-top:.6rem;flex-wrap:wrap}.thumb{padding:0;border:3px solid transparent;border-radius:14px;overflow:hidden;width:66px;height:66px;cursor:pointer;background:none}.thumb img{width:100%;height:100%;object-fit:cover;display:block}.thumb.on{border-color:var(--brand)}
.pinfo h1{margin:0 0 .2rem}.status{margin:.1rem 0;color:var(--muted);font-size:.9rem}.status .dot{background:var(--line)}.status.on{color:var(--mint)}.status.on .dot{background:var(--mint)}
.where{margin:.2rem 0 .6rem}.about{white-space:pre-wrap;margin:.8rem 0}.tags span{display:inline-block;background:var(--lav);color:var(--lav-ink);padding:.15rem .8rem;border-radius:999px;margin:0 .3rem .3rem 0;font-size:.85rem;font-weight:600}
.bumpnote{display:inline-flex;gap:.3rem;align-items:center;background:color-mix(in srgb,var(--signal) 25%,transparent);color:var(--ink);padding:.15rem .7rem;border-radius:99px;font-size:.82rem;font-weight:600}
.actions{display:flex;gap:.6rem;margin:1rem 0}.more-actions{margin-top:.8rem}.more-actions summary{cursor:pointer;color:var(--muted)}.more-actions form{margin-top:.6rem}
.psecs{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1rem;margin-top:1.2rem}.psec{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1rem 1.2rem;box-shadow:var(--shadow)}.psec h2{border-bottom:1px solid var(--line);padding-bottom:.45rem}
.psec dl{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:.45rem 1rem;margin:0}.psec dt{color:var(--muted);font-size:.9rem}.psec dd{margin:0;overflow-wrap:anywhere}
.lightbox{position:fixed;inset:0;z-index:100;background:rgba(25,6,25,.93);display:flex;align-items:center;justify-content:center}.lightbox img{max-width:94vw;max-height:88vh;border-radius:14px}.lightbox button{position:absolute;background:rgba(255,255,255,.16);color:#fff;border:0;border-radius:50%;width:46px;height:46px;font-size:1.4rem;cursor:pointer}
.lightbox .lb-x{top:max(1rem,env(safe-area-inset-top));right:1rem}.lightbox .lb-p{left:1rem}.lightbox .lb-n{right:1rem}
/* ---- edit profile ---- */
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:.65rem}
.gitem{position:relative;margin:0;aspect-ratio:3/4;border-radius:16px;overflow:hidden;background:var(--paper2)}.gitem>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.gitem.is-main{outline:3px solid var(--signal);outline-offset:-3px}
.gitem .tag{position:absolute;top:.4rem;left:.4rem;background:var(--signal);color:var(--signal-ink);border-radius:99px;padding:.05rem .55rem;font-size:.7rem;font-weight:800}
.gtools{position:absolute;left:0;right:0;bottom:0;display:flex;justify-content:space-between;gap:.3rem;padding:1.6rem .4rem .4rem;background:linear-gradient(transparent,rgba(60,10,45,.75))}
.gtools form{display:flex}.gbtn{width:34px;height:34px;border-radius:50%;border:0;background:rgba(255,255,255,.95);color:var(--brand);cursor:pointer;display:flex;align-items:center;justify-content:center}.gbtn.del{color:var(--danger)}
.gitem.add{background:none}.gitem.add .dropzone{position:absolute;inset:0;display:flex;flex-direction:column;gap:.3rem;align-items:center;justify-content:center;border:2px dashed var(--brand);border-radius:16px;color:var(--brand);cursor:pointer;text-align:center;font-size:.85rem;padding:.4rem;font-weight:700}
.group{padding:0}.group>summary{list-style:none;cursor:pointer;padding:1rem 1.2rem}.group>summary::-webkit-details-marker{display:none}.group>summary h2{margin:0}.group>summary h2::after{content:"▾";margin-left:auto;color:var(--muted)}.group[open]>summary h2::after{content:"▴"}.group>.form{padding:0 1.2rem 1.2rem}
.sticky-save{position:sticky;bottom:calc(68px + env(safe-area-inset-bottom));padding:.7rem 0;background:linear-gradient(transparent,var(--paper) 45%);text-align:center;z-index:5}@media(min-width:861px){.sticky-save{bottom:0}}
.numhint{font-weight:400;color:var(--muted);font-size:.8rem}
/* ---- misc ---- */
.menu-list{list-style:none;padding:0;margin:0;display:grid;gap:.55rem}.menu-list a,.menu-list button{display:flex;gap:.7rem;align-items:center;width:100%;padding:.95rem 1.1rem;background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);color:var(--ink);text-decoration:none;font:inherit;font-weight:600;cursor:pointer;min-height:52px}
.inline-form{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center;margin:.4rem 0}.inline-form input,.inline-form select{width:auto;flex:1;min-width:120px}
.kv{display:grid;grid-template-columns:max-content 1fr;gap:.4rem 1.5rem}.kv dd{margin:0;font-weight:700}.scroll{overflow-x:auto}table{border-collapse:collapse;width:100%}th,td{text-align:left;padding:.5rem .6rem;border-bottom:1px solid var(--line);font-size:.9rem}tr.off{opacity:.5}
.acts{display:flex;gap:.7rem;flex-wrap:wrap;align-items:center}.reports li.done{opacity:.55}.reports{padding-left:1.2rem}
.foot{display:flex;gap:1rem;justify-content:center;padding:1.5rem 1rem 6rem;color:var(--muted);font-size:.85rem;flex-wrap:wrap}
.toasts{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(80px + env(safe-area-inset-bottom));z-index:60;display:flex;flex-direction:column;gap:.5rem;align-items:center;pointer-events:none}@media(min-width:861px){.toasts{bottom:1.5rem}}
.toast{background:var(--ink);color:var(--paper);padding:.7rem 1.1rem;border-radius:999px;box-shadow:var(--shadow);font-size:.92rem;font-weight:600}
/* ---- bottom tab bar (phones) ---- */
.tabbar{display:none}
@media(max-width:860px){
  .topnav,body.in .top .lang{display:none}.top{gap:.5rem}
  .tabbar{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:25;background:color-mix(in srgb,var(--card) 92%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--line);padding:.3rem .2rem calc(.3rem + env(safe-area-inset-bottom))}
  .tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;gap:.1rem;padding:.4rem .2rem;text-decoration:none;color:var(--muted);font-size:.7rem;font-weight:600;position:relative;border-radius:12px}.tabbar a[aria-current]{color:var(--brand)}
  .tabbar .badge{position:absolute;top:0;right:calc(50% - 24px)}
  main{padding-bottom:5.5rem}
}
.langrow{display:flex}.langrow .lang a{padding:.5rem 1rem;border:1.5px solid var(--line);border-radius:999px;background:var(--card);margin-right:.4rem;font-size:.9rem}
/* ---- chat ---- */
.inbox{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.55rem}.inbox a{display:flex;gap:.8rem;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:.75rem;text-decoration:none;color:var(--ink);box-shadow:var(--shadow)}
.inbox a>span:nth-child(2){flex:1;min-width:0}.inbox .sub{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.inbox a.unread{border-color:var(--brand)}.inbox time{font-size:.75rem;color:var(--muted)}
.chat{display:flex;flex-direction:column;height:calc(100dvh - 150px);min-height:380px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow)}@media(max-width:860px){.chat{height:calc(100dvh - 190px)}}
.chat-head{display:flex;align-items:center;gap:.8rem;padding:.6rem .9rem;border-bottom:1px solid var(--line)}.chat-head .who{flex:1;display:flex;align-items:center;gap:.6rem;text-decoration:none;color:var(--ink)}.back{text-decoration:none;font-size:1.3rem}
.chatmenu{position:relative}.chatmenu summary{cursor:pointer;font-size:1.4rem;list-style:none;padding:0 .4rem}.chatmenu form{position:absolute;right:0;top:2rem;z-index:3;background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);padding:.8rem;width:min(300px,80vw);display:flex;flex-direction:column;gap:.6rem;box-shadow:var(--shadow)}
.log{flex:1;overflow-y:auto;padding:.9rem;display:flex;flex-direction:column;gap:.5rem;background:var(--paper)}
.msg{max-width:min(78%,480px);padding:.5rem .8rem;border-radius:20px 20px 20px 6px;background:var(--card);border:1px solid var(--line);align-self:flex-start;overflow-wrap:anywhere}.msg.mine{align-self:flex-end;background:var(--grad);border-color:transparent;color:#fff;border-radius:20px 20px 6px 20px}
.msg p{margin:0;white-space:pre-wrap}.msg .meta{display:flex;gap:.4rem;justify-content:flex-end;font-size:.72rem;opacity:.8;align-items:center}.msg .x{background:none;border:0;cursor:pointer;color:inherit;opacity:0;padding:0;font-size:.8rem}.msg:hover .x,.msg .x:focus-visible{opacity:1}
@media(hover:none){.msg .x{opacity:.8}}
.mfile{margin:0 0 .3rem;position:relative}.mfile img{max-width:100%;max-height:300px;border-radius:14px;display:block}.mfile .x{position:absolute;top:4px;right:4px;background:rgba(0,0,0,.65);color:#fff;border-radius:50%;width:26px;height:26px;opacity:1;font-size:1rem;line-height:1}
.composer{border-top:1px solid var(--line);padding:.7rem;background:var(--card)}.composer .row{display:flex;gap:.5rem;align-items:flex-end}.composer textarea{flex:1;resize:none;max-height:9em;border-radius:22px}.attach{cursor:pointer;font-size:1.4rem;padding:.3rem;flex-direction:row}
.previews{display:flex;gap:.5rem;flex-wrap:wrap}.previews:not(:empty){margin-bottom:.5rem}.previews div{position:relative}.previews img{width:64px;height:64px;object-fit:cover;border-radius:12px}.previews button{position:absolute;top:-6px;right:-6px;border-radius:50%;border:0;width:22px;height:22px;cursor:pointer}
p.err{color:var(--danger);margin:.4rem 0 0}.pick{position:fixed;inset:auto 0 0 0;background:var(--card);border-top:1px solid var(--line);padding:1rem;display:flex;gap:.6rem;justify-content:center;flex-wrap:wrap;z-index:70}
@media(prefers-reduced-motion:no-preference){.btn{transition:transform .08s,filter .15s}.btn:active:not(:disabled){transform:translateY(1px)}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

.linkbox{word-break:break-all;font-size:.9rem}
fieldset legend+.two{margin-top:.2rem}
@media(max-width:520px){.strip-head span{display:none}}
