:root{--ink:#17202d;--muted:#667386;--line:#dce5ee;--paper:#f6f8fb;--panel:#fff;--teal:#00a896;--teal-soft:#ddf8f4;--coral:#ff6b57;--coral-soft:#ffe8e4;--sun:#f7c948;--sun-soft:#fff4cf;--blue:#3867ff;--blue-soft:#e8edff;--green:#42b883;--green-soft:#e2f6ec;--shadow:0 18px 42px #17202d1a;--radius:8px;--font:"Microsoft JhengHei", "PingFang TC", "Noto Sans TC", Arial, sans-serif}*{box-sizing:border-box}body{min-height:100vh;color:var(--ink);font-family:var(--font);background:linear-gradient(135deg, #00a8961a, transparent 30%), linear-gradient(225deg, #3867ff14, transparent 32%), var(--paper);-webkit-font-smoothing:antialiased;margin:0}#root{width:100%;min-height:100vh}button,input,textarea,select{font:inherit}button{cursor:pointer}h1,h2,h3,h4,h5,h6,p{margin:0}a{color:inherit;text-decoration:none}svg{stroke-width:2.2px;flex:none;width:18px;height:18px}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-thumb{background:var(--line);border-radius:6px}::-webkit-scrollbar-thumb:hover{background:#b8c4d3}::-webkit-scrollbar-track{background:0 0}.shell{grid-template-columns:256px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{border-right:1px solid var(--line);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#ffffffeb;grid-template-rows:auto auto minmax(0,1fr) auto;gap:14px;height:100vh;min-height:0;padding:18px 16px;display:grid;position:sticky;top:0}.brand{letter-spacing:0;align-items:center;gap:10px;min-height:44px;font-size:22px;font-weight:950;display:flex}.brand-mark{color:#fff;background:conic-gradient(from 220deg, var(--teal), var(--sun), var(--coral), var(--blue), var(--teal));border-radius:var(--radius);flex-shrink:0;place-items:center;width:38px;height:38px;font-size:18px;display:grid;box-shadow:0 12px 24px #00a89638}.page-mini{border:1px solid var(--line);border-radius:var(--radius);text-align:left;cursor:pointer;background:#fff;flex-shrink:0;grid-template-columns:46px 1fr;align-items:center;gap:10px;width:100%;padding:10px 12px;transition:border-color .15s,box-shadow .15s;display:grid;box-shadow:0 10px 24px #17202d0f}.page-mini:hover{border-color:#b8c4d3;box-shadow:0 12px 28px #17202d1a}.page-mini.active{border-color:var(--teal);box-shadow:0 10px 24px #00a8962e}.nav{scrollbar-width:thin;scrollbar-color:var(--line) transparent;align-content:start;gap:4px;min-height:0;margin:0 -6px;padding:4px 6px;display:grid;overflow:hidden auto}.nav::-webkit-scrollbar{width:6px}.nav::-webkit-scrollbar-thumb{background:var(--line);border-radius:6px}.nav::-webkit-scrollbar-thumb:hover{background:#b8c4d3}.nav::-webkit-scrollbar-track{background:0 0}.nav a,.nav button{min-height:40px;color:var(--muted);border-radius:var(--radius);text-align:left;background:0 0;border:0;flex-shrink:0;align-items:center;gap:10px;padding:8px 11px;font-size:14px;font-weight:900;text-decoration:none;transition:color .15s,background .15s;display:flex}.nav a.active,.nav button.active{color:#fff;background:var(--ink);box-shadow:0 12px 24px #17202d2e}.nav a:hover:not(.active),.nav button:hover:not(.active){color:var(--ink);background:var(--paper)}.avatar{object-fit:cover;border-radius:var(--radius);border:2px solid #fff;flex-shrink:0;width:42px;height:42px;box-shadow:0 8px 18px #17202d24}.avatar.large{border-radius:14px;width:96px;height:96px}.avatar.small{width:34px;height:34px}.avatar.medium{border-radius:14px;width:56px;height:56px}.avatar-placeholder{background:var(--teal-soft);color:var(--teal);place-items:center;font-size:16px;font-weight:950;display:grid}.person{gap:3px;min-width:0;display:grid}.person strong{overflow-wrap:anywhere;font-size:14px}.person span,.muted{color:var(--muted);font-size:12px;font-weight:750;line-height:1.4}.Tomioospace{min-width:0}.topbar{z-index:5;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#f6f8fbeb;border-bottom:1px solid #dce5eeeb;grid-template-columns:minmax(260px,1fr) auto;align-items:center;gap:16px;min-height:76px;padding:16px 84px 16px 28px;display:grid;position:sticky;top:0}@media (width<=720px){.topbar{padding-right:64px}}.eyebrow{color:var(--teal);text-transform:uppercase;font-size:12px;font-weight:950}.page-title{gap:3px;min-width:0;display:grid}.page-title h1{letter-spacing:0;overflow-wrap:anywhere;font-size:24px;line-height:1.15}.top-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.content{width:min(1240px,100vw - 304px);margin:0 auto;padding:24px 28px 34px}.profile-layout,.detail-layout,.invite-layout{grid-template-columns:minmax(0,1fr) 300px;align-items:start;gap:24px;display:grid}@media (width<=1200px){.profile-layout,.detail-layout,.invite-layout{grid-template-columns:minmax(0,1fr)}}.rail>*{min-width:0;max-width:100%;overflow:hidden}.stack,.rail{align-content:start;gap:18px;min-width:0;display:grid}.panel,.profile-hero,.activity-card,.badge-card,.good-card,.challenge-card,.detail-card,.invite-card,.setting-row{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius)}.panel,.detail-card,.invite-card{gap:14px;padding:16px;display:grid;box-shadow:0 12px 30px #17202d12}.panel-head{justify-content:space-between;align-items:center;gap:14px;min-width:0;display:flex}.panel-title{gap:3px;min-width:0;display:grid}.panel-title h2{letter-spacing:0;font-size:18px;line-height:1.2}.panel-title p{color:var(--muted);font-size:12px;font-weight:750;line-height:1.4}.profile-hero{box-shadow:var(--shadow);overflow:hidden}.cover{color:#fff;isolation:isolate;background:#101927;min-height:240px;position:relative}.cover img{object-fit:cover;opacity:.72;z-index:-2;width:100%;height:100%;position:absolute;inset:0}.cover:after{content:"";z-index:-1;background:linear-gradient(90deg,#101927e6,#1019276b 62%,#1019271f);position:absolute;inset:0}.cover-content{gap:18px;width:min(620px,78%);padding:28px;display:grid}.profile-row{grid-template-columns:106px 1fr;align-items:end;gap:16px;display:grid}.profile-copy{gap:8px;min-width:0;display:grid}.actions .profile-action-avatar{object-fit:cover;color:#fff;text-align:center;vertical-align:middle;opacity:1;z-index:auto;background:#ffffff29;border:2px solid #ffffffd9;border-radius:12px;flex-shrink:0;width:64px;height:64px;font-size:24px;font-weight:950;line-height:60px;display:none;position:static;inset:auto;box-shadow:0 4px 10px #00000040}@media (width>=769px){.profile-row{grid-template-columns:1fr}.profile-row>.avatar.large{display:none}.actions .profile-action-avatar{display:inline-block}}.profile-copy h2{letter-spacing:0;overflow-wrap:anywhere;font-size:34px;line-height:1.08}.profile-copy p{color:#ffffffd1;font-size:14px;line-height:1.6}.pill{border-radius:var(--radius);overflow-wrap:anywhere;white-space:nowrap;align-items:center;gap:6px;min-height:28px;padding:5px 8px;font-size:12px;font-weight:900;line-height:1.2;display:inline-flex}.pill.teal{color:#006a5f;background:var(--teal-soft)}.pill.coral{color:#a33121;background:var(--coral-soft)}.pill.sun{color:#7b5600;background:var(--sun-soft)}.pill.blue{color:#1b3bbd;background:var(--blue-soft)}.pill.green{color:#236b45;background:var(--green-soft)}.pill.gray{color:var(--muted);background:var(--line)}.pill-row,.actions,.meta,.comment-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.action-btn,.filter-btn{min-height:40px;color:var(--ink);border:1px solid var(--line);border-radius:var(--radius);white-space:nowrap;cursor:pointer;background:#fff;justify-content:center;align-items:center;gap:7px;padding:9px 12px;font-size:13px;font-weight:950;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.action-btn:hover,.filter-btn:hover{background:var(--paper);border-color:#b8c4d3}.action-btn.primary,.filter-btn.active{color:#fff;background:var(--ink);border-color:var(--ink)}.action-btn.teal{color:#fff;background:var(--teal);border-color:var(--teal)}.action-btn.coral{color:#fff;background:var(--coral);border-color:var(--coral)}.icon-btn{width:44px;height:44px;color:var(--ink);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;background:#fff;place-items:center;transition:background .15s,border-color .15s;display:grid;position:relative;box-shadow:0 8px 20px #17202d0d}.icon-btn:hover{background:var(--paper);border-color:#b8c4d3}.dot{background:var(--coral);border:2px solid #fff;border-radius:50%;width:8px;height:8px;position:absolute;top:10px;right:10px}.stats-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.stat-card{border:1px solid var(--line);border-radius:var(--radius);background:#fff;gap:6px;min-height:86px;padding:12px;display:grid;box-shadow:0 8px 20px #17202d0d}.stat-card strong{font-size:24px;line-height:1}.stat-card span{color:var(--muted);font-size:12px;font-weight:850;line-height:1.35}.activity-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.activity-card{grid-template-rows:auto minmax(0,1fr);display:grid;overflow:hidden;box-shadow:0 10px 24px #17202d0f}.activity-media,.detail-media{background:#dce4ed;position:relative;overflow:hidden}.activity-media{aspect-ratio:16/10}.detail-media{aspect-ratio:16/9;border-radius:var(--radius)}.activity-media img,.detail-media img{object-fit:cover;width:100%;height:100%;display:block}.media-type{color:#fff;border-radius:var(--radius);background:#17202dbd;align-items:center;gap:6px;min-height:28px;padding:5px 8px;font-size:12px;font-weight:950;display:inline-flex;position:absolute;top:10px;left:10px}.play-button{color:#fff;pointer-events:none;place-items:center;display:grid;position:absolute;inset:0}.play-button span{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#17202dbd;border:1px solid #fff3;border-radius:50%;place-items:center;width:58px;height:58px;display:grid}.activity-body,.badge-card,.good-card,.challenge-card{gap:12px;padding:14px;display:grid}.activity-body h3{letter-spacing:0;overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:2.44em;font-size:18px;line-height:1.22;display:-webkit-box;overflow:hidden}.activity-body p{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:46.2px;font-size:14px;line-height:1.65;display:-webkit-box;overflow:hidden}.activity-body .card-actions,.activity-body>.action-btn{align-self:end;margin-top:auto}.meta{color:var(--muted);font-size:12px;font-weight:800}.card-actions{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.card-actions .action-btn{min-width:0;padding:8px;font-size:12px}.badge-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.badge-card{text-align:left;min-height:136px;box-shadow:0 8px 18px #17202d0d}.badge-icon{border-radius:10px;flex-shrink:0;place-items:center;width:48px;height:48px;display:grid}.badge-card strong{font-size:15px;line-height:1.25}.badge-card p{color:var(--muted);font-size:13px;line-height:1.5}.challenge-top{grid-template-columns:44px minmax(0,1fr) auto;align-items:center;column-gap:12px;display:grid}.challenge-top .badge-icon{border-radius:9px;justify-self:center;width:36px;height:36px}.challenge-top .badge-icon svg{width:20px;height:20px}.challenge-meta-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.challenge-meta{border:1px solid var(--line);border-radius:var(--radius);background:#f7f9fb;gap:5px;min-height:72px;padding:11px;display:grid}.challenge-meta strong{font-size:13px;line-height:1.3}.challenge-meta span{color:var(--muted);font-size:12px;font-weight:800;line-height:1.35}.proof-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.proof-tile{aspect-ratio:1;border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;background:#f7f9fb;position:relative;overflow:hidden}.proof-tile img,.proof-tile video{object-fit:cover;width:100%;height:100%;display:block}.proof-tile.add{color:var(--muted);text-align:center;background:var(--paper);cursor:pointer;border-style:dashed;place-items:center;gap:8px;padding:12px;font-size:12px;font-weight:900;transition:background .15s,color .15s;display:grid}.proof-tile.add:hover{background:var(--teal-soft);color:var(--teal);border-color:var(--teal)}.proof-label{color:#fff;border-radius:var(--radius);background:#17202dc2;align-items:center;gap:5px;min-height:26px;padding:4px 7px;font-size:11px;font-weight:950;display:inline-flex;position:absolute;top:8px;left:8px}.challenge-actions{border-top:1px solid var(--line);flex-wrap:wrap;gap:8px;margin-top:4px;padding:12px 16px 14px;display:flex}.challenge-card-creator{border-color:var(--teal);box-shadow:0 0 0 2px var(--teal-soft), 0 8px 24px #00a8961a}.good-list,.challenge-list,.setting-list,.comment-list{gap:10px;display:grid}.good-card,.challenge-card,.setting-row,.comment-card{gap:8px;padding:12px;display:grid}.good-top,.comment-row{grid-template-columns:38px 1fr auto;align-items:center;gap:10px;display:grid}.good-card strong{font-size:15px;line-height:1.25}.good-card p,.panel p{color:var(--muted);font-size:14px;line-height:1.65}.setting-row{grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:8px;padding:12px;display:grid}.setting-row .badge-icon{border-radius:9px;justify-self:center;width:40px;height:40px}.setting-row .badge-icon svg{width:20px;height:20px}.progress{background:#edf2f6;border-radius:8px;height:8px;overflow:hidden}.progress span{background:linear-gradient(90deg, var(--teal), var(--sun));border-radius:inherit;height:100%;display:block}.skill-rows{gap:8px;display:grid}.skill-row{grid-template-columns:78px minmax(0,1fr) 36px;align-items:center;gap:10px;display:grid}.skill-row span:first-child{color:var(--ink);font-size:13px;font-weight:900}.skill-row .bar{background:#edf2f6;border-radius:8px;height:8px;position:relative;overflow:hidden}.skill-row .fill{background:linear-gradient(90deg, var(--teal), var(--sun));border-radius:inherit;height:100%}.skill-row .skill-value{color:var(--muted);text-align:right;font-size:12px;font-weight:900}.endorse-list{gap:8px;display:grid}.endorse-tag{border:1px solid var(--line);border-radius:var(--radius);background:#fff;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 12px;display:grid}.endorse-tag .endorse-icon{border-radius:8px;place-items:center;width:28px;height:28px;font-size:11px;display:grid}.endorse-tag .endorse-text strong{font-size:13px;font-weight:950;display:block}.endorse-tag .endorse-text span{color:var(--muted);font-size:12px;font-weight:800}.endorse-count{color:var(--muted);font-size:12px;font-weight:900}.invite-box{border:1px solid var(--line);border-radius:var(--radius);background:#f7f9fb;grid-template-columns:1fr auto;align-items:center;gap:8px;padding:10px;display:grid}.invite-box code{color:var(--ink);overflow-wrap:anywhere;font-size:12px}.my-invite-code-block{background:var(--ink);border-radius:var(--radius);gap:8px;padding:14px 16px;display:grid}.my-invite-code-label{color:#fff9;align-items:center;gap:6px;font-size:12px;font-weight:800;display:flex}.my-invite-code-row{justify-content:space-between;align-items:center;gap:10px;display:flex}.my-invite-code-value{letter-spacing:3px;color:#fff;font-family:monospace;font-size:26px;font-weight:950}.qr{background:linear-gradient(90deg, var(--ink) 10px, transparent 10px) 0 0 / 24px 24px, linear-gradient(var(--ink) 10px, transparent 10px) 0 0 / 24px 24px, #fff;border-radius:var(--radius);border:10px solid #fff;place-items:center;width:148px;height:148px;display:grid;box-shadow:0 12px 28px #17202d1a}.detail-copy{gap:12px;display:grid}.detail-copy h2{letter-spacing:0;overflow-wrap:anywhere;font-size:18px;line-height:1.22}.detail-copy p{color:var(--muted);font-size:14px;line-height:1.65}.timeline{gap:10px;display:grid}.timeline-item{grid-template-columns:28px 1fr;align-items:start;gap:10px;display:grid}.timeline-dot{width:28px;height:28px;color:var(--teal);background:var(--teal-soft);border-radius:50%;place-items:center;display:grid}.visitor-frame{border:1px solid var(--line);border-radius:var(--radius);background:#fff;gap:12px;padding:14px;display:grid;box-shadow:0 12px 30px #17202d12}.visitor-frame h3{font-size:16px}.visitor-frame p{color:var(--muted);font-size:14px;line-height:1.65}.invite-task-list{gap:12px;display:grid}.invite-task-card{border:1px solid var(--sun-soft);border-radius:var(--radius);background:linear-gradient(#f7c9481f,#fff 80%);gap:12px;padding:14px;display:grid;box-shadow:0 12px 26px #f7c94814}.invite-task-card .invite-top{grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:12px;display:grid}.invite-task-card .invite-from{color:var(--muted);align-items:center;gap:6px;font-size:12px;font-weight:850;display:flex}.invite-task-card h3{font-size:16px;line-height:1.25}.invite-task-card .invite-meta{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.invite-task-card .invite-meta>div{border:1px solid var(--sun-soft);border-radius:var(--radius);background:#ffffffd9;gap:4px;padding:10px 12px;display:grid}.invite-task-card .invite-meta strong{font-size:13px}.invite-task-card .invite-meta span{color:var(--muted);font-size:12px;font-weight:800}.invite-task-card .invite-actions{flex-wrap:wrap;gap:8px;display:flex}.invite-task-card .invite-actions .action-btn{flex:auto;min-width:120px}.invite-empty{color:var(--muted);border:1.5px dashed var(--line);border-radius:var(--radius);text-align:center;background:#f7f9fb;justify-items:center;gap:6px;padding:24px 16px;display:grid}.auth-screen{z-index:50;background:radial-gradient(circle at 18% 22%,#00a89629,#0000 38%),radial-gradient(circle at 82% 78%,#3867ff24,#0000 42%),linear-gradient(135deg,#0e1929,#1a2840);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex;position:fixed;inset:0;overflow-y:auto}.auth-card{background:#fff;border-radius:14px;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0;width:min(980px,100%);animation:.22s ease-out authIn;display:grid;overflow:hidden;box-shadow:0 36px 80px #080c1480}@keyframes authIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.auth-aside{color:#fff;isolation:isolate;background:radial-gradient(circle at 80% 0,#f7c94866,#0000 55%),radial-gradient(circle at 0 100%,#00a89680,#0000 55%),linear-gradient(135deg,#101926,#1c2944);align-content:space-between;gap:24px;padding:36px 32px;display:grid;position:relative}.auth-aside-brand{align-items:center;gap:12px;font-size:28px;font-weight:950;display:flex}.auth-aside-brand .brand-mark{border-radius:12px;width:48px;height:48px;font-size:22px}.auth-aside h2{letter-spacing:-.005em;font-size:28px;line-height:1.18}.auth-aside p{color:#ffffffdb;font-size:14px;line-height:1.7}.auth-feature-row{gap:12px;display:grid}.auth-feature{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffff14;border:1px solid #ffffff1f;border-radius:12px;grid-template-columns:36px minmax(0,1fr);align-items:center;gap:12px;padding:12px 14px;display:grid}.auth-feature .auth-icon{background:#ffffff29;border-radius:10px;place-items:center;width:36px;height:36px;display:grid}.auth-feature strong{font-size:14px;font-weight:950;display:block}.auth-feature span{color:#ffffffc7;font-size:12px;font-weight:800}.auth-main{align-content:start;gap:14px;padding:36px 36px 32px;display:grid}.auth-main h2{font-size:24px;line-height:1.15}.auth-main .lead{color:var(--muted);font-size:13px;font-weight:800}.auth-main .form-field{gap:6px}.auth-main .form-label{font-size:12px}.password-input{position:relative}.password-input input{padding-right:70px}.password-toggle{color:var(--muted);border:1px solid var(--line);cursor:pointer;background:#f3f6fa;border-radius:6px;padding:6px 10px;font-size:12px;font-weight:900;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.auth-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.auth-link{color:var(--ink);cursor:pointer;background:0 0;border:0;padding:0;font-size:13px;font-weight:900;text-decoration:none}.auth-link:hover{text-decoration:underline}.auth-submit{width:100%;min-height:46px;font-size:14px}.auth-divider{color:var(--muted);justify-content:center;align-items:center;margin:4px 0;font-size:12px;font-weight:900;display:flex;position:relative}.auth-divider:before,.auth-divider:after{content:"";background:var(--line);flex:1;height:1px}.auth-divider span{padding:0 14px}.auth-bottom{color:var(--muted);text-align:center;margin-top:4px;font-size:13px;font-weight:800}.auth-bottom .auth-link{color:var(--teal);margin-left:4px}.auth-success{background:var(--teal-soft);border-radius:var(--radius);text-align:center;justify-items:center;gap:10px;padding:18px;display:grid}.auth-success svg{color:#006a5f;width:28px;height:28px}.auth-success strong{color:#006a5f;font-size:15px}.form-field{gap:8px;display:grid}.form-label{color:var(--ink);align-items:center;gap:6px;font-size:13px;font-weight:950;display:flex}.text-input,.text-area{width:100%;color:var(--ink);border:1px solid var(--line);border-radius:var(--radius);background:#fff;outline:none;padding:11px 13px;font-size:14px;transition:border-color .15s,box-shadow .15s;box-shadow:0 4px 12px #17202d0a}.text-input:focus,.text-area:focus{border-color:var(--ink);box-shadow:0 0 0 3px #17202d14}.text-input.error{border-color:var(--coral)}.text-area{resize:vertical;min-height:110px;line-height:1.6}.spinner{border:2px solid #ffffff59;border-top-color:#fff;border-radius:50%;flex-shrink:0;width:16px;height:16px;animation:.7s linear infinite spin;display:inline-block}.spinner--dark{border-color:#17202d33;border-top-color:var(--ink)}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{border-radius:var(--radius);background:linear-gradient(90deg,#e8ecf1 25%,#f0f3f7 50%,#e8ecf1 75%) 0 0/200% 100%;animation:1.4s infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.toast-container{z-index:9999;pointer-events:none;gap:8px;display:grid;position:fixed;bottom:24px;right:24px}.toast{background:var(--ink);color:#fff;border-radius:var(--radius);box-shadow:var(--shadow);pointer-events:auto;align-items:center;gap:10px;min-width:220px;padding:12px 16px;font-size:13px;font-weight:800;animation:.25s toast-in;display:flex}.toast--success{background:var(--teal)}.toast--error{background:var(--coral)}@keyframes toast-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.empty-state{text-align:center;color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:48px 24px;display:flex}.empty-state__icon{opacity:.5;font-size:36px}.empty-state__title{color:var(--ink);font-size:15px;font-weight:900}.empty-state__desc{max-width:280px;color:var(--muted);font-size:13px;line-height:1.6}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.form-error{color:var(--coral);font-size:12px;font-weight:700}.form-hint{color:var(--muted);font-size:12px}.form-hint--success{color:var(--teal)}.topbar{grid-template-columns:minmax(260px,1fr) minmax(200px,380px) auto}.topbar-search{min-width:0;position:relative}.search-trigger{width:100%;min-height:44px;color:var(--muted);border:1px solid var(--line);border-radius:var(--radius);text-align:left;cursor:pointer;background:#fff;align-items:center;gap:10px;padding:0 14px 0 42px;font-size:14px;transition:border-color .15s;display:flex;position:relative;box-shadow:0 8px 20px #17202d0d}.search-trigger:hover{border-color:#b8c4d3}.search-trigger .search-placeholder{white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.search-shortcut{color:var(--muted);border:1px solid var(--line);background:#f3f6fa;border-radius:6px;flex:none;padding:2px 8px;font-size:11px;font-weight:900}.sidebar-toggle{width:28px;height:28px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;transition:background .15s,color .15s;display:flex}.sidebar-toggle:hover{background:var(--line);color:var(--ink)}.sidebar-toggle svg{stroke-width:1.8px;width:18px;height:18px}.shell.sidebar-collapsed{grid-template-columns:68px minmax(0,1fr)}.shell.sidebar-collapsed .sidebar{padding:18px 10px}.shell.sidebar-collapsed .brand{justify-content:center}.shell.sidebar-collapsed .brand span{display:none}.shell.sidebar-collapsed .sidebar-toggle{margin-left:0}.shell.sidebar-collapsed .page-mini,.shell.sidebar-collapsed .nav span,.shell.sidebar-collapsed .version-card,.shell.sidebar-collapsed .outgoing-widget{display:none}.shell.sidebar-collapsed .nav a,.shell.sidebar-collapsed .nav button{justify-content:center;width:100%;min-width:0;padding:8px}.shell.sidebar-collapsed .sidebar .action-btn{gap:0;min-width:0;min-height:36px;padding:8px;font-size:0!important}.shell.sidebar-collapsed .sidebar .action-btn svg{flex-shrink:0;width:14px;height:14px}.shell.sidebar-collapsed .content{width:min(100%,100vw - 68px)}.version-card{color:#fff;background:var(--ink);border-radius:var(--radius);box-shadow:var(--shadow);flex-shrink:0;gap:8px;padding:12px;display:grid}.version-card span{color:#ffffffb8;font-size:12px;font-weight:800;line-height:1.45}.version-card strong{font-size:16px;line-height:1.25}.version-card .progress{background:#ffffff2e}.outgoing-widget{background:var(--ink);border-radius:var(--radius);box-shadow:var(--shadow);color:#fff;flex-shrink:0;gap:8px;padding:12px;display:grid}.outgoing-widget-head{color:#ffffffb3;justify-content:space-between;align-items:center;font-size:12px;font-weight:900;display:flex}.outgoing-widget-head span{align-items:center;gap:5px;display:flex}.outgoing-widget-head svg{width:13px;height:13px}.outgoing-widget-more{color:#fffc;cursor:pointer;background:#ffffff1f;border:0;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:900;transition:background .15s}.outgoing-widget-more:hover{background:#ffffff38}.outgoing-widget-collapse{color:#ffffff80;cursor:pointer;background:0 0;border:0;border-radius:4px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;transition:background .15s,transform .2s;display:flex}.outgoing-widget-collapse:hover{color:#fff;background:#ffffff1f}.outgoing-widget-collapse svg{stroke-width:2.2px;width:13px;height:13px}.outgoing-widget.collapsed .outgoing-widget-collapse{transform:rotate(-90deg)}.outgoing-widget-body{opacity:1;gap:8px;max-height:400px;transition:max-height .25s,opacity .2s;display:grid;overflow:hidden}.outgoing-widget.collapsed .outgoing-widget-body{opacity:0;pointer-events:none;max-height:0}.outgoing-widget-item{gap:8px;display:grid}.outgoing-widget-item-header{border-radius:6px;justify-content:space-between;align-items:flex-start;gap:6px;padding:4px;transition:background .15s;display:flex}.outgoing-widget-item-header:hover{background:#ffffff1a}.outgoing-widget-item-title{color:#fff;font-size:13px;font-weight:900}.outgoing-widget-item-sub{color:#ffffff80;margin-top:2px;font-size:11px}.outgoing-widget-photo-viewer{grid-template-columns:26px 1fr 26px;align-items:center;gap:4px;display:grid}.outgoing-widget-photo{border-radius:6px;height:96px;overflow:hidden}.outgoing-widget-photo img{object-fit:cover;width:100%;height:100%;display:block}.outgoing-photo-nav{color:#fffc;cursor:pointer;background:#ffffff1f;border:0;border-radius:5px;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;transition:background .15s;display:flex}.outgoing-photo-nav:hover:not(:disabled){background:#ffffff40}.outgoing-photo-nav:disabled{opacity:.25;cursor:default}.outgoing-photo-nav svg{stroke-width:2.2px;width:14px;height:14px}.outgoing-photo-counter{text-align:center;color:#ffffff73;font-size:11px;font-weight:800}.outgoing-widget-empty{color:#ffffff59;background:#ffffff0d;border:1px dashed #ffffff26;border-radius:6px;justify-content:center;align-items:center;gap:6px;height:80px;font-size:12px;font-weight:800;display:flex}.outgoing-widget-complete{color:#16a34a;background:#4ade8024;border:1px solid #4ade8052;border-radius:999px;justify-content:center;align-self:center;align-items:center;gap:4px;width:fit-content;margin:6px auto 0;padding:4px 10px;font-size:11px;font-weight:800;display:inline-flex}.outgoing-widget-empty svg{width:16px;height:16px}.outgoing-widget-complete svg{width:12px;height:12px}.outgoing-widget-dots{justify-content:center;gap:5px;min-height:10px;display:flex}.outgoing-dot{cursor:pointer;background:#ffffff40;border:0;border-radius:50%;width:6px;height:6px;padding:0;transition:background .15s,transform .15s}.outgoing-dot.active{background:#ffffffd9;transform:scale(1.25)}.outgoing-modal-row{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);grid-template-columns:1fr auto;align-items:center;gap:12px;padding:12px 14px;display:grid}.outgoing-modal-row strong{font-size:14px;font-weight:950;display:block}.outgoing-modal-row span{color:var(--muted);font-size:12px}.outgoing-challenge-card{cursor:pointer;border:1px solid var(--line);text-align:left;background:var(--paper);border-radius:12px;width:100%;height:140px;padding:0;transition:transform .15s,box-shadow .15s;display:block;position:relative;overflow:hidden;box-shadow:0 4px 12px #17202d0f}.outgoing-challenge-card:hover{transform:translateY(-2px);box-shadow:0 10px 22px #17202d1f}.outgoing-card-bg{background-position:50%;background-repeat:no-repeat;background-size:cover;position:absolute;inset:0}.outgoing-card-bg-empty{color:var(--muted);background:linear-gradient(135deg,#f3f6fa,#e6ecf4);flex-direction:column;justify-content:center;align-items:center;gap:6px;font-size:12px;font-weight:700;display:flex;position:absolute;inset:0}.outgoing-card-bg-done{background:linear-gradient(135deg, var(--teal-soft), #e0fff9);color:#006a5f;flex-direction:column;justify-content:center;align-items:center;gap:6px;font-size:13px;font-weight:800;display:flex;position:absolute;inset:0}.outgoing-card-overlay{background:linear-gradient(#00000040 0%,#00000073 45%,#000000d9 100%),#0003;position:absolute;inset:0}.outgoing-card-info{z-index:1;justify-content:space-between;align-items:flex-end;gap:8px;display:flex;position:absolute;bottom:10px;left:10px;right:10px}.outgoing-card-info>div{flex:auto;min-width:0}.outgoing-card-title{color:#fff;text-shadow:0 1px 2px #00000080;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:900;overflow:hidden}.outgoing-card-sub{color:#ffffffd9;text-shadow:0 1px 2px #00000080;text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:11px;overflow:hidden}:is(.outgoing-challenge-card:has(.outgoing-card-bg-empty) .outgoing-card-title,.outgoing-challenge-card:has(.outgoing-card-bg-done) .outgoing-card-title){color:var(--ink);text-shadow:none}:is(.outgoing-challenge-card:has(.outgoing-card-bg-empty) .outgoing-card-sub,.outgoing-challenge-card:has(.outgoing-card-bg-done) .outgoing-card-sub){color:var(--muted);text-shadow:none}.challenge-bookmarked-from{color:var(--muted);grid-column:1/-1;align-items:center;gap:6px;margin-bottom:6px;font-size:12px;display:flex}.challenge-bookmarked-from strong{color:var(--ink)}.bookmarked-from{color:var(--muted);align-items:center;gap:6px;margin-bottom:4px;font-size:12px;display:flex}.bookmarked-from strong{color:var(--ink)}.btn-complete-challenge{background:var(--teal);color:#fff;border-color:var(--teal);justify-content:center;width:100%;padding:12px;font-size:15px;font-weight:950}.btn-complete-challenge:hover{background:#008a7c;border-color:#008a7c}.btn-complete-challenge svg{width:18px;height:18px}.carousel{gap:14px;display:grid;position:relative}.carousel-viewport{border-radius:var(--radius);position:relative;overflow:hidden}.carousel-track{scroll-snap-type:x mandatory;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none;gap:14px;padding:2px;display:flex;overflow-x:auto}.carousel-track::-webkit-scrollbar{display:none}.carousel-slide{scroll-snap-align:start;flex:0 0 100%;min-width:0}.carousel-controls{align-items:center;gap:6px;display:inline-flex}.carousel-arrow{width:38px;height:38px;color:var(--ink);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;background:#fff;place-items:center;transition:background .15s;display:grid;box-shadow:0 6px 14px #17202d0f}.carousel-arrow:hover{background:var(--paper)}.carousel-arrow:disabled{color:#b6c1d0;cursor:not-allowed;opacity:.55;box-shadow:none}.carousel-footer{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.carousel-dots{align-items:center;gap:6px;display:inline-flex}.carousel-dot{background:var(--line);cursor:pointer;border:0;border-radius:50%;width:8px;height:8px;padding:0;transition:width .2s,background .2s}.carousel-dot.active{background:var(--ink);border-radius:4px;width:24px}.carousel-counter{color:var(--muted);letter-spacing:.04em;font-size:12px;font-weight:850}.profile-tabs{border-top:1px solid var(--line);background:#fff;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;padding:12px;display:grid}.profile-tabs button{min-height:42px;color:var(--muted);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;background:#f7f9fb;font-size:13px;font-weight:900;transition:background .15s,color .15s}.profile-tabs button.active{color:#fff;background:var(--ink);border-color:var(--ink)}.modal-overlay{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:30;background:#1019278c;justify-content:center;align-items:center;padding:24px;display:none;position:fixed;inset:0}.modal-overlay.show{display:flex}.modal.album-photo-modal{grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1fr) 360px;min-height:0;display:grid}.album-photo-modal-side{border-left:1px solid var(--line);min-height:0}.album-photo-comments-toggle,.album-photo-comments-close,.album-photo-like-toggle{display:none}@media (width<=768px){.modal.album-photo-modal{grid-template-rows:minmax(0,1fr);grid-template-columns:1fr}.album-photo-modal-side{border-left:none;border-top:1px solid var(--line);z-index:4;background:#fff;border-top-left-radius:16px;border-top-right-radius:16px;grid-template-rows:40px auto minmax(0,1fr);height:72%;transition:transform .25s;position:absolute;bottom:0;left:0;right:0;transform:translateY(100%);box-shadow:0 -10px 24px #00000029}.modal.album-photo-modal.mobile-comments-open .album-photo-modal-side{transform:translateY(0)}.album-photo-like-toggle{color:#fff;cursor:pointer;z-index:3;background:#0000008c;border:0;border-radius:50%;place-items:center;width:44px;height:44px;display:grid;position:absolute;bottom:16px;right:70px}.album-photo-like-count{color:#fff;text-align:center;box-sizing:content-box;background:#ef4444;border:1.5px solid #0009;border-radius:9px;min-width:18px;height:18px;padding:0 5px;font-size:11px;font-weight:800;line-height:18px;position:absolute;top:-4px;right:-4px}.album-photo-comments-toggle{color:#fff;cursor:pointer;z-index:3;background:#0000008c;border:0;border-radius:50%;place-items:center;width:44px;height:44px;display:grid;position:absolute;bottom:16px;right:16px}.album-photo-comments-count{background:var(--coral,#ef4444);color:#fff;text-align:center;box-sizing:content-box;border:1.5px solid #0009;border-radius:9px;min-width:18px;height:18px;padding:0 5px;font-size:11px;font-weight:800;line-height:18px;position:absolute;top:-4px;right:-4px}.album-photo-comments-close{width:44px;height:36px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:999px;place-items:center;margin:6px auto 0;display:grid}.album-photo-comments-close:hover{background:var(--paper);color:var(--ink)}}@keyframes modalIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.modal{border-radius:var(--radius);background:#fff;grid-template-rows:auto minmax(0,1fr) auto;width:min(720px,100%);max-height:min(720px,100vh - 48px);animation:.18s ease-out modalIn;display:grid;overflow:hidden;box-shadow:0 28px 60px #10192752}.modal.modal-wide{width:min(1080px,100%);max-height:min(92vh,920px)}.modal-head,.modal-foot{background:#fff;align-items:center;gap:12px;padding:16px 20px;display:flex}.modal-head{border-bottom:1px solid var(--line);justify-content:space-between}.modal-foot{border-top:1px solid var(--line);background:#fbfcfe;flex-wrap:wrap;justify-content:flex-end}.modal-body{gap:16px;padding:18px 20px 22px;display:grid;overflow-y:auto}.upload-zone{color:var(--muted);border:1.5px dashed var(--line);border-radius:var(--radius);text-align:center;cursor:pointer;background:#f7f9fb;justify-items:center;gap:10px;padding:22px 16px;transition:background .15s,border-color .15s;display:grid}.upload-zone:hover,.upload-zone.is-dragover{background:var(--teal-soft);border-color:var(--teal)}.upload-zone strong{color:var(--ink);font-size:15px}.upload-zone span{font-size:12px;font-weight:800;line-height:1.5}.upload-preview{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.upload-tile{border:1px solid var(--line);border-radius:var(--radius);background:#f7f9fb;min-height:92px;position:relative;overflow:hidden}.upload-tile img{object-fit:cover;width:100%;height:100%;display:block}.remove-tile{color:#fff;cursor:pointer;background:#17202db8;border:0;border-radius:50%;place-items:center;width:28px;height:28px;margin:0;padding:0;line-height:0;display:grid;position:absolute;top:6px;right:6px}.remove-tile svg{stroke-width:2.4px;width:14px;height:14px;display:block}.icon-picker{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);flex-wrap:wrap;gap:6px;margin-top:8px;padding:10px;display:flex}.icon-picker-btn{border:1.5px solid var(--line);width:36px;height:36px;color:var(--muted);cursor:pointer;background:#fff;border-radius:8px;place-items:center;transition:border-color .12s,color .12s,background .12s;display:grid}.icon-picker-btn:hover{border-color:var(--teal);color:var(--teal)}.icon-picker-btn.active{background:var(--ink);border-color:var(--ink);color:#fff;box-shadow:0 4px 10px #17202d2e}.tag-chip{color:var(--ink);border:1px solid var(--line);cursor:pointer;background:#f3f6fa;border-radius:999px;align-items:center;gap:5px;padding:6px 10px;font-size:12px;font-weight:900;transition:background .15s,color .15s;display:inline-flex}.tag-chip.coral{background:var(--coral-soft);color:#a33121;border-color:#0000}.tag-chip.teal{background:var(--teal-soft);color:#006a5f;border-color:#0000}.tag-chip.sun{background:var(--sun-soft);color:#7b5600;border-color:#0000}.tag-chip.blue{background:var(--blue-soft);color:#1b3bbd;border-color:#0000}.tag-chip.active,.tag-chip.active.coral,.tag-chip.active.teal,.tag-chip.active.sun,.tag-chip.active.blue{color:#fff;background:var(--ink);border-color:var(--ink);box-shadow:0 0 0 2px var(--ink) inset, 0 2px 6px #17202d2e;font-weight:900}.tag-chip.active:before{content:"✓";margin-right:2px;font-weight:900}.visibility-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.visibility-option{color:var(--ink);border:1px solid var(--line);border-radius:var(--radius);text-align:left;cursor:pointer;background:#f7f9fb;gap:4px;padding:12px;transition:background .15s,border-color .15s,color .15s;display:grid}.visibility-option:hover{background:#eef2f6}.visibility-option.active{color:#fff;background:var(--ink);border-color:var(--ink)}.visibility-option strong{font-size:14px;font-weight:950}.visibility-option span{opacity:.92;font-size:12px;font-weight:750;line-height:1.4}.proof-options{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.proof-option{color:var(--ink);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;background:#f7f9fb;justify-items:center;gap:6px;padding:14px 8px;font-size:13px;font-weight:900;transition:background .15s,color .15s;display:grid}.proof-option.active{color:#fff;background:var(--teal);border-color:var(--teal)}.difficulty-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.diff-option{color:var(--ink);border:1px solid var(--line);border-radius:var(--radius);text-align:left;cursor:pointer;background:#f7f9fb;justify-items:start;gap:4px;padding:12px;transition:background .15s,color .15s;display:grid}.diff-option strong{font-size:14px;font-weight:950}.diff-option span{color:var(--muted);font-size:12px;font-weight:800}.diff-option.active{color:#fff;background:var(--coral);border-color:var(--coral)}.diff-option.active span{color:#ffffffd9}.badge-pickers{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.badge-pick{color:var(--ink);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;background:#f7f9fb;justify-items:center;gap:6px;padding:12px 8px;font-size:13px;font-weight:900;transition:background .15s,color .15s;display:grid}.badge-pick .badge-icon{width:40px;height:40px}.badge-pick.active{color:#fff;background:var(--ink);border-color:var(--ink)}.prefix-input{border:1px solid var(--line);border-radius:var(--radius);background:#fff;grid-template-columns:auto minmax(0,1fr);align-items:stretch;display:grid;overflow:hidden;box-shadow:0 4px 12px #17202d0a}.prefix-label{color:var(--muted);border-right:1px solid var(--line);background:#f3f6fa;place-items:center;padding:0 12px;font-size:13px;font-weight:900;display:grid}.prefix-input .text-input{box-shadow:none;border:0;border-radius:0}.prefix-input:focus-within{border-color:var(--ink);box-shadow:0 0 0 3px #17202d14}.profile-edit-cover{aspect-ratio:16/6;border-radius:var(--radius);border:1px solid var(--line);background:#dce4ed;position:relative;overflow:hidden}.profile-edit-avatar{border:1px solid var(--line);border-radius:var(--radius);background:#f7f9fb;grid-template-columns:80px minmax(0,1fr);align-items:center;gap:14px;padding:14px;display:grid}.friend-row{flex-wrap:wrap;gap:6px;display:flex}.friend-chip{color:var(--ink);border:1px solid var(--line);cursor:pointer;background:#f3f6fa;border-radius:999px;align-items:center;gap:6px;padding:4px 10px 4px 4px;font-size:13px;font-weight:900;transition:background .15s,color .15s;display:inline-flex}.friend-chip .avatar.small{border-radius:50%;width:24px;height:24px}.friend-chip.active{color:#fff;background:var(--ink);border-color:var(--ink)}.meta-inputs{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.notif-backdrop{z-index:24;background:0 0;display:none;position:fixed;inset:0}.notif-backdrop.show{display:block}.notif-panel{border:1px solid var(--line);border-radius:var(--radius);z-index:25;background:#fff;flex-direction:column;width:min(420px,100vw - 32px);max-height:calc(100vh - 110px);animation:.18s ease-out notifIn;display:none;position:fixed;top:78px;right:28px;overflow:hidden;box-shadow:0 26px 60px #17202d38}.notif-panel.show{display:flex}@keyframes notifIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.notif-head{border-bottom:1px solid var(--line);background:#fff;justify-content:space-between;align-items:center;gap:10px;padding:14px 16px;display:flex}.notif-tabs{flex-wrap:wrap;gap:6px;padding:10px 14px 0;display:flex}.notif-tab{color:var(--muted);border:1px solid var(--line);cursor:pointer;background:#f3f6fa;border-radius:999px;flex:none;padding:7px 12px;font-size:12px;font-weight:900;transition:background .15s,color .15s}.notif-tab.active{color:#fff;background:var(--ink);border-color:var(--ink)}.notif-list{gap:0;padding:6px 0;display:grid;overflow-y:auto}.notif-item{border-top:1px solid #0000;border-bottom:1px solid var(--line);cursor:pointer;background:#fff;grid-template-columns:38px minmax(0,1fr) 8px;gap:12px;padding:12px 16px;transition:background .15s;display:grid}.notif-item:last-child{border-bottom:0}.notif-item.unread{background:#f4f9ff}.notif-item:hover{background:#eef2f7}.notif-body{gap:6px;min-width:0;display:grid}.notif-meta{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.notif-meta strong{font-size:14px;font-weight:950}.notif-time{color:var(--muted);font-size:12px;font-weight:800}.notif-text{color:var(--ink);overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:13px;line-height:1.55;display:-webkit-box;overflow:hidden}.notif-target{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;background:#f3f6fa;border-radius:6px;align-items:center;gap:6px;max-width:100%;padding:5px 9px;font-size:12px;font-weight:850;display:inline-flex;overflow:hidden}.notif-target svg{width:14px;height:14px}.notif-actions{flex-wrap:wrap;gap:6px;margin-top:2px;display:flex}.notif-actions .action-btn{min-height:32px;padding:6px 10px;font-size:12px}.notif-dot{background:var(--coral);border-radius:50%;align-self:start;width:8px;height:8px;margin-top:6px}.notif-item:not(.unread) .notif-dot{visibility:hidden}.notif-foot{border-top:1px solid var(--line);background:#fbfcfe;flex-wrap:wrap;justify-content:space-between;gap:8px;padding:12px 14px;display:flex}.lightbox-overlay{z-index:40;background:#080c14f0;justify-content:center;align-items:center;padding:32px;display:none;position:fixed;inset:0}.lightbox-overlay.show{animation:.18s ease-out lightboxFade;display:flex}@keyframes lightboxFade{0%{opacity:0}to{opacity:1}}.lightbox{grid-template-rows:minmax(0,1fr) auto;gap:14px;width:min(1100px,100%);max-height:100%;display:grid;position:relative}.lightbox-counter{letter-spacing:.04em;background:#ffffff1f;border-radius:999px;align-items:center;gap:8px;padding:6px 12px;display:inline-flex}.lightbox-close{color:#fff;cursor:pointer;background:#ffffff24;border:0;border-radius:50%;place-items:center;width:40px;height:40px;padding:0;line-height:0;transition:background .15s;display:grid}.lightbox-close:hover{background:#ffffff42}.lightbox-stage{-webkit-user-select:none;user-select:none;place-items:center;min-height:0;max-height:calc(100vh - 160px);display:grid;position:relative}.lightbox-stage img,.lightbox-stage video{object-fit:contain;border-radius:var(--radius);background:#1a2333;max-width:100%;max-height:calc(100vh - 160px);box-shadow:0 26px 60px #00000080}.lightbox-arrow{color:#fff;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);cursor:pointer;background:#ffffff29;border:0;border-radius:50%;place-items:center;width:50px;height:50px;padding:0;line-height:0;transition:background .15s;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.lightbox-arrow:hover:not(:disabled){background:#ffffff47}.lightbox-arrow svg{stroke-width:2.4px;width:22px;height:22px;display:block}.lightbox-arrow.prev{left:-8px}.lightbox-arrow.next{right:-8px}.lightbox-arrow:disabled{cursor:not-allowed;opacity:.32}.lightbox-thumbs{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.lightbox-thumb{border-radius:var(--radius);cursor:pointer;background:#ffffff1f;border:2px solid #0000;width:56px;height:56px;padding:0;transition:border-color .15s,transform .15s;overflow:hidden}.lightbox-thumb img{object-fit:cover;width:100%;height:100%;display:block}.lightbox-thumb.active{border-color:#fff;transform:scale(1.05)}.proof-tile.is-zoomable,.activity-media.is-zoomable,.detail-media.is-zoomable{cursor:zoom-in}.activity-media.is-zoomable img,.detail-media.is-zoomable img{transition:transform .25s}.activity-media.is-zoomable:hover img,.detail-media.is-zoomable:hover img{transform:scale(1.02)}.friend-list{gap:10px;display:grid}.friend-card{border:1px solid var(--line);border-radius:var(--radius);background:#fff;grid-template-columns:56px minmax(0,1fr) auto;align-items:center;gap:14px;padding:14px;display:grid;position:relative;box-shadow:0 6px 18px #17202d0d}.friend-info{gap:4px;min-width:0;display:grid}.friend-info strong{font-size:15px;font-weight:950}.friend-info .friend-school{color:var(--muted);font-size:12px;font-weight:850}.friend-info .friend-tags{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.friend-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:inline-flex}.friend-actions .action-btn{min-height:32px;padding:6px 10px;font-size:12px}.friend-card-menu{position:absolute;top:12px;right:12px}.friend-card-menu-trigger{width:28px;height:28px;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;place-items:center;display:grid}.friend-card-menu-trigger:hover{background:var(--paper);color:var(--ink);border-color:var(--line)}.friend-card-menu-popup{border:1px solid var(--line);border-radius:var(--radius);z-index:10;background:#fff;min-width:140px;padding:4px;position:absolute;top:32px;right:0;box-shadow:0 12px 28px #17202d1f}.friend-card-menu-item{width:100%;color:var(--ink);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;gap:8px;padding:8px 10px;font-size:13px;font-weight:700;display:flex}.friend-card-menu-item:hover{background:var(--paper)}.friend-card-menu-item.danger{color:var(--coral)}.friend-card-menu-item.danger:hover{background:var(--coral-soft)}.friend-card--blocked{opacity:.65;filter:grayscale(.4)}.album-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.album-card{border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;background:#fff;grid-template-rows:auto auto;gap:0;transition:transform .15s,box-shadow .15s;display:grid;overflow:hidden;box-shadow:0 10px 24px #17202d0f}.album-card:hover{transform:translateY(-2px);box-shadow:0 16px 32px #17202d1f}.album-cover{background:var(--paper,#f3f4f6);height:160px;display:block;position:relative;overflow:hidden}.album-cover img{object-fit:cover;width:100%;height:100%;display:block}.album-detail-grid>*{min-width:0}.album-cover .album-type{color:#fff;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:1;background:#17202db8;border-radius:999px;align-items:center;gap:4px;padding:3px 8px;font-size:11px;font-weight:950;display:inline-flex;position:absolute;top:10px;left:10px}.album-body{gap:4px;padding:12px 14px 14px;display:grid}.album-body strong{font-size:15px;font-weight:950}.album-body span{color:var(--muted);font-size:12px;font-weight:850}.album-create{aspect-ratio:16/11;color:var(--muted);border:1.5px dashed var(--line);border-radius:var(--radius);text-align:center;cursor:pointer;background:#f7f9fb;place-items:center;gap:6px;padding:14px;transition:background .15s,color .15s;display:grid}.album-create:hover{color:var(--ink);background:#eef2f7}.album-create svg{width:28px;height:28px}.album-cover-single{color:#ffffffdb;background:#1a2333;place-items:center;height:160px;font-size:14px;font-weight:900;display:grid;position:relative;overflow:hidden}.album-cover-text{color:#fff;text-align:center;background:linear-gradient(135deg,#1c2944,#2b3955);place-items:center;height:160px;padding:16px;font-size:13px;line-height:1.6;display:grid;position:relative;overflow:hidden}.album-detail-grid{grid-template-columns:repeat(3,1fr);gap:3px;display:grid}.album-detail-tile{aspect-ratio:1;cursor:pointer;background:#dce4ed;overflow:hidden}.album-detail-tile img{object-fit:cover;width:100%;height:100%;transition:transform .2s;display:block}.album-detail-tile:hover img{transform:scale(1.05)}.photo-comment-body{grid-template-columns:minmax(0,1.4fr) 320px;min-height:0;display:grid;overflow:hidden}.photo-comment-left{background:#0d1421;place-items:center;min-height:280px;display:grid;position:relative;overflow:hidden}.photo-comment-left img{object-fit:contain;width:100%;height:100%;max-height:calc(90vh - 64px);display:block}.photo-nav-btn{color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:2;background:#ffffff26;border:none;border-radius:50%;place-items:center;width:40px;height:40px;transition:background .15s;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.photo-nav-btn:hover{background:#ffffff52}.photo-nav-btn svg{width:20px;height:20px}.photo-nav-btn.prev{left:12px}.photo-nav-btn.next{right:12px}.photo-nav-btn:disabled{opacity:.25;cursor:default}.photo-comment-right{border-left:1px solid var(--line);grid-template-rows:minmax(0,1fr) auto;display:grid;overflow:hidden}.photo-comment-list{align-content:start;gap:10px;padding:16px;display:grid;overflow-y:auto}.photo-comment-footer{border-top:1px solid var(--line);background:#fff;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:8px;padding:12px 16px;display:grid}.settings-section{scroll-margin-top:96px}.settings-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;padding:14px 0;display:grid}.settings-row:last-child{border-bottom:0}.settings-row-text{gap:4px;display:grid}.settings-row-text strong{font-size:14px;font-weight:950}.settings-row-text span{color:var(--muted);font-size:12px;font-weight:800;line-height:1.5}.settings-rail{border:1px solid var(--line);border-radius:var(--radius);background:#fff;gap:6px;padding:12px;display:grid;position:sticky;top:96px;box-shadow:0 8px 20px #17202d0d}.settings-rail h3{letter-spacing:.06em;color:var(--muted);text-transform:uppercase;padding:6px 8px;font-size:12px;font-weight:950}.settings-rail button{color:var(--muted);border-radius:var(--radius);text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;padding:9px 11px;font-size:13px;font-weight:900;transition:background .15s,color .15s;display:flex}.settings-rail button:hover{color:var(--ink);background:#f3f6fa}.settings-rail button.active{color:#fff;background:var(--ink)}.settings-rail button svg{width:16px;height:16px}.toggle{flex:none;width:46px;height:26px;display:inline-block;position:relative}.toggle input{opacity:0;width:0;height:0}.toggle-slider{cursor:pointer;background:#cbd5e1;border-radius:13px;transition:background .2s;position:absolute;inset:0}.toggle-slider:before{content:"";background:#fff;border-radius:50%;width:20px;height:20px;transition:transform .2s;position:absolute;top:3px;left:3px;box-shadow:0 2px 6px #17202d2e}.toggle input:checked+.toggle-slider{background:var(--ink)}.toggle input:checked+.toggle-slider:before{transform:translate(20px)}.toggle input:disabled+.toggle-slider{opacity:.5;cursor:not-allowed}.select-pill{color:var(--ink);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;background:#f3f6fa;align-items:center;gap:6px;padding:6px 10px;font-size:13px;font-weight:900;display:inline-flex}.select-pill select{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;outline:none}.danger-card{border:1px solid var(--coral-soft);background:linear-gradient(#ff6b570f,#fff)}.danger-card h2{color:#a33121}.danger-action{color:#fff;background:var(--coral);border-color:var(--coral)}.block-empty{color:var(--muted);border:1.5px dashed var(--line);border-radius:var(--radius);text-align:center;background:#f7f9fb;justify-items:center;gap:6px;padding:24px 16px;display:grid}.challenge-thread-body{grid-template-columns:1fr 340px;gap:0;min-height:0;max-height:calc(85vh - 70px);display:grid;position:relative}.challenge-thread-left{border-right:1px solid var(--line);align-content:start;gap:16px;padding:20px 20px 20px 24px;display:grid;overflow-y:auto}.challenge-thread-right{grid-template-rows:auto minmax(0,1fr) auto;display:grid;overflow:hidden}.challenge-thread-comments{align-content:start;gap:12px;padding:14px 20px;display:grid;overflow-y:auto}.challenge-thread-input{border-top:1px solid var(--line);gap:8px;padding:12px 20px 16px;display:grid}.challenge-thread-comments-toggle,.challenge-thread-comments-close{display:none}@media (width<=768px){.challenge-thread-body{grid-template-columns:1fr}.challenge-thread-left{border-right:none}.challenge-thread-right{border-top:1px solid var(--line);z-index:4;background:#fff;grid-template-rows:40px auto minmax(0,1fr) auto;height:100%;transition:transform .25s;position:absolute;inset:0;transform:translateY(100%);box-shadow:0 -10px 24px #00000029}.challenge-thread-body.mobile-comments-open .challenge-thread-right{transform:translateY(0)}.challenge-thread-comments-toggle{background:var(--coral,#ef4444);color:#fff;cursor:pointer;z-index:3;border:0;border-radius:50%;place-items:center;width:48px;height:48px;display:grid;position:absolute;bottom:16px;right:16px;box-shadow:0 6px 14px #0000002e}.challenge-thread-comments-count{color:#fff;text-align:center;box-sizing:content-box;background:#1f2937;border:1.5px solid #fff;border-radius:9px;min-width:18px;height:18px;padding:0 5px;font-size:11px;font-weight:800;line-height:18px;position:absolute;top:-4px;right:-4px}.challenge-thread-comments-close{width:44px;height:36px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:999px;place-items:center;margin:6px auto 0;display:grid}.challenge-thread-comments-close:hover{background:var(--paper);color:var(--ink)}}.activity-detail-body{grid-template-columns:minmax(0,2fr) minmax(280px,1fr);gap:0;min-height:0;padding:0;display:grid;overflow:hidden}.activity-detail-left{background:#0d1421;flex-direction:column;min-width:0;display:flex}.activity-detail-content-overlay{color:#fff;text-shadow:0 1px 2px #00000073;z-index:3;cursor:default;scrollbar-width:thin;scrollbar-color:#fff6 transparent;background:linear-gradient(#00000059 0%,#000000ad 40%,#000000d1 100%);flex-direction:column;gap:6px;max-height:100%;padding:36px 22px 18px;font-size:14px;line-height:1.6;transition:transform .22s;display:flex;position:absolute;bottom:0;left:0;right:0;overflow-y:auto;transform:translateY(0)}.activity-detail-content-overlay.hidden{pointer-events:none;transform:translateY(100%)}.activity-detail-content-handle{color:#fff;cursor:pointer;z-index:4;background:#0000008c;border:0;border-radius:999px;place-items:center;width:36px;height:28px;display:grid;position:absolute;top:12px;left:50%;transform:translate(-50%)}.activity-detail-content-handle svg{width:16px;height:16px}.activity-detail-content-handle:hover{background:#000000bf}.activity-detail-content-overlay::-webkit-scrollbar{width:6px}.activity-detail-content-overlay::-webkit-scrollbar-thumb{background:#ffffff59;border-radius:3px}.activity-detail-content-overlay::-webkit-scrollbar-thumb:hover{background:#ffffff8c}.activity-detail-content-overlay.expanded{background:linear-gradient(#000000c7 0%,#000000e6 40%,#000000f2 100%)}.activity-detail-content-overlay .overlay-title{color:#fff;margin:0;font-size:18px;font-weight:900;line-height:1.3}.activity-detail-content-overlay .clamp-2{-webkit-line-clamp:2;line-clamp:2;text-overflow:ellipsis;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.activity-detail-content-overlay .content-toggle-btn{color:#fff;cursor:pointer;opacity:.9;background:0 0;border:0;margin-top:6px;padding:0;font-size:13px;font-weight:800;text-decoration:underline}.activity-detail-content-overlay .content-toggle-btn:hover{opacity:1}.activity-detail-media{background:#0d1421;place-items:center;min-height:320px;display:grid;position:relative;overflow:hidden}.activity-detail-media img,.activity-detail-media video{object-fit:contain;width:100%;height:100%;max-height:80vh;display:block}.activity-detail-text{align-content:start;gap:12px;max-height:min(80vh,740px);padding:20px 22px;display:grid;position:relative;overflow-y:auto}.activity-detail-close-desktop{width:26px;height:26px;color:var(--muted);cursor:pointer;z-index:2;background:0 0;border:0;border-radius:6px;place-items:center;padding:0;display:grid;position:absolute;top:8px;right:8px}.activity-detail-close-mobile,.activity-detail-comments-toggle,.activity-detail-like-toggle,.activity-detail-comments-close{display:none}.activity-detail-text h2{font-size:22px;line-height:1.22}.activity-detail-comments{border-top:1px solid var(--line);gap:10px;margin-top:4px;padding-top:6px;display:grid}.activity-detail-actions{flex-wrap:wrap;gap:6px;display:flex}.activity-detail-actions .action-btn{flex:auto}.search-panel{gap:18px;display:grid}.search-big{position:relative}.search-big svg{color:var(--muted);pointer-events:none;width:22px;height:22px;position:absolute;top:50%;left:16px;transform:translateY(-50%)}.search-big input{width:100%;min-height:56px;color:var(--ink);border:1px solid var(--line);border-radius:var(--radius);background:#fff;outline:none;padding:12px 46px 12px 52px;font-size:16px;font-weight:900;box-shadow:0 12px 26px #17202d0f}.search-big input:focus{border-color:var(--ink);box-shadow:0 0 0 3px #17202d14}.search-section{gap:10px;display:grid}.search-section h3{letter-spacing:.02em;color:var(--ink);font-size:14px;font-weight:950}.search-tabs{flex-wrap:wrap;gap:6px;display:flex}.search-result-list{gap:10px;display:grid}.search-result-item{border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;background:#fff;grid-template-columns:44px minmax(0,1fr) auto;gap:12px;padding:12px;transition:background .15s;display:grid}.search-result-item:hover{background:#f7f9fb}.search-empty{color:var(--muted);border:1.5px dashed var(--line);border-radius:var(--radius);text-align:center;background:#f7f9fb;justify-items:center;gap:8px;padding:32px 20px;display:grid}.search-empty svg{width:32px;height:32px}.quick-btn{min-height:40px;color:var(--ink);border:1px solid var(--line);border-radius:var(--radius);white-space:nowrap;cursor:pointer;background:#fff;justify-content:center;align-items:center;gap:7px;padding:9px 12px;font-size:13px;font-weight:950;transition:background .15s,border-color .15s;display:inline-flex}.quick-btn:hover{background:var(--paper);border-color:#b8c4d3}@media (width<=760px){.auth-card{grid-template-columns:1fr}.auth-aside{display:none}.auth-main{padding:24px 22px}}@media (width<=720px){.invite-task-card .invite-meta{grid-template-columns:1fr}.challenge-meta-grid,.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.activity-grid{grid-template-columns:1fr}.badge-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.modal{max-height:calc(100vh - 32px)}.visibility-row{grid-template-columns:1fr}.upload-preview{grid-template-columns:repeat(3,minmax(0,1fr))}.meta-inputs{grid-template-columns:1fr}.proof-options,.badge-pickers,.difficulty-row{grid-template-columns:repeat(2,minmax(0,1fr))}.lightbox-overlay{padding:16px}.lightbox-arrow{width:42px;height:42px}.lightbox-arrow.prev{left:4px}.lightbox-arrow.next{right:4px}.notif-panel{width:auto;max-height:70vh;inset:auto 16px 16px}.friend-card{grid-template-columns:56px minmax(0,1fr)}.friend-actions{grid-column:1/-1;justify-content:flex-start}.album-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.topbar{grid-template-columns:1fr auto}.topbar-search{display:none}}@media (width<=820px){.photo-comment-body{grid-template-rows:auto minmax(0,1fr);grid-template-columns:1fr;max-height:90vh;overflow-y:auto}.photo-comment-left{aspect-ratio:4/3;min-height:0}.photo-comment-right{max-height:50vh}.activity-detail-body{grid-template-columns:1fr;max-height:90vh;overflow-y:auto}.activity-detail-media{aspect-ratio:16/10;min-height:0}.activity-detail-text{max-height:none;overflow-y:visible}}@media (width<=1180px){.settings-rail{position:relative;top:auto}}@media (width<=560px){.album-grid{grid-template-columns:1fr}}.tag-row{flex-wrap:wrap;gap:6px;display:flex}.upload-buttons{flex-wrap:wrap;justify-content:center;gap:8px;display:inline-flex}.upload-tile .upload-tag{color:#fff;background:#17202dbf;border-radius:6px;align-items:center;gap:4px;padding:3px 6px;font-size:11px;font-weight:950;display:inline-flex;position:absolute;bottom:6px;left:6px}.avatar-drop{background:#1a2333;border:3px solid #fff;border-radius:14px;width:80px;height:80px;position:relative;overflow:hidden;box-shadow:0 8px 18px #17202d24}.avatar-drop img{object-fit:cover;width:80px;height:80px;display:block}.avatar-meta{gap:4px;min-width:0;display:grid}.avatar-meta strong{font-size:15px;line-height:1.2}.avatar-meta .muted{font-size:12px}.avatar-actions{flex-wrap:wrap;gap:6px;margin-top:4px;display:inline-flex}.avatar-actions .action-btn{min-height:34px;padding:6px 10px;font-size:12px}.floating-bell{z-index:26;border:1px solid var(--line);width:40px;height:40px;color:var(--ink);cursor:pointer;background:#fff;border-radius:12px;place-items:center;transition:transform .15s,box-shadow .15s;display:grid;position:fixed;top:16px;right:28px;box-shadow:0 6px 14px #17202d14}.floating-bell:hover{transform:translateY(-1px);box-shadow:0 10px 20px #17202d1f}.floating-bell-dot{background:var(--coral);border:2px solid #fff;border-radius:50%;width:8px;height:8px;position:absolute;top:8px;right:8px}@media (width<=720px){.floating-bell{width:36px;height:36px;top:12px;right:12px}}.floating-chat-launcher{z-index:27;background:var(--teal);color:#fff;cursor:pointer;border:0;border-radius:50%;place-items:center;width:54px;height:54px;transition:transform .15s,box-shadow .15s;display:grid;position:fixed;bottom:24px;right:28px;box-shadow:0 8px 20px #006a5f52}.floating-chat-launcher:hover{transform:translateY(-2px);box-shadow:0 12px 28px #006a5f66}.floating-chat-launcher:focus-visible{outline:2px solid var(--teal);outline-offset:3px}.floating-chat-badge{background:var(--coral);color:#fff;border:2px solid #fff;border-radius:999px;place-items:center;min-width:20px;height:20px;padding:0 6px;font-size:11px;font-weight:900;line-height:1;display:grid;position:absolute;top:-2px;right:-2px}.floating-chat-backdrop{z-index:26;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#00000073;animation:.16s ease-out floating-chat-backdrop-in;position:fixed;inset:0}@keyframes floating-chat-backdrop-in{0%{opacity:0}to{opacity:1}}.floating-chat-panel{z-index:28;border:1px solid var(--line);background:#fff;border-radius:14px;flex-direction:column;width:320px;max-height:460px;animation:.16s ease-out floating-chat-panel-in;display:flex;position:fixed;bottom:90px;right:28px;overflow:hidden;box-shadow:0 18px 40px #17202d2e}@keyframes floating-chat-panel-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.floating-chat-panel-head{background:var(--teal-soft);color:var(--ink);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:12px 16px;font-size:14px;display:flex}.floating-chat-panel-close{cursor:pointer;width:28px;height:28px;color:var(--muted);background:0 0;border:0;border-radius:8px;place-items:center;display:grid}.floating-chat-panel-close:hover{color:var(--ink);background:#0000000f}.floating-chat-panel-body{flex:1;padding:6px;overflow-y:auto}.floating-chat-panel-loading{text-align:center;color:var(--muted);padding:24px 12px;font-size:13px}.floating-chat-panel-empty{color:var(--muted);text-align:center;flex-direction:column;align-items:center;gap:8px;padding:32px 16px;font-size:13px;display:flex}.floating-chat-friend-list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.floating-chat-friend-item{cursor:pointer;text-align:left;background:0 0;border:0;border-radius:8px;align-items:center;gap:10px;width:100%;padding:8px 12px;display:flex}.floating-chat-friend-item:hover{background:var(--teal-soft)}.floating-chat-friend-item:disabled{opacity:.5;cursor:wait}.floating-chat-friend-item img,.floating-chat-friend-avatar-placeholder{object-fit:cover;border-radius:50%;flex-shrink:0;width:36px;height:36px}.floating-chat-friend-avatar-placeholder{background:var(--teal-soft);color:var(--teal);border:2px solid var(--line);place-items:center;font-size:14px;font-weight:900;display:grid}.floating-chat-friend-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.floating-chat-friend-info strong{color:var(--ink);white-space:nowrap;text-overflow:ellipsis;font-size:13px;overflow:hidden}.floating-chat-friend-info span{color:var(--muted);font-size:11px}@media (width<=720px){.floating-chat-launcher{width:48px;height:48px;bottom:16px;right:16px}.floating-chat-panel{width:calc(100vw - 32px);max-width:320px;bottom:76px;right:16px}}.image-editor{border-radius:var(--radius);border:1px solid var(--line);cursor:grab;-webkit-user-select:none;user-select:none;background:#f0f3f7;position:relative;overflow:hidden}.image-editor:active{cursor:grabbing}.image-editor img{object-fit:cover;transform-origin:50%;pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.image-editor--empty{cursor:default;justify-content:center;align-items:center;display:flex}.image-editor__hint{color:var(--muted);text-align:center;pointer-events:none;flex-direction:column;align-items:center;gap:8px;font-size:13px;font-weight:700;display:flex}.image-editor-controls{align-items:center;gap:10px;margin-top:10px;display:flex}.image-editor-zoom{accent-color:var(--teal);flex:1}.media-count{color:#fff;pointer-events:none;z-index:2;background:#0009;border-radius:6px;align-items:center;gap:4px;padding:4px 8px;font-size:12px;font-weight:700;display:inline-flex;position:absolute;top:10px;right:10px}.chat-page{grid-template-columns:320px minmax(0,1fr);height:calc(100vh - 76px);display:grid;overflow:hidden}.chat-page-list{border-right:1px solid var(--line);background:var(--panel);flex-direction:column;display:flex;overflow:hidden auto}.conversation-item{border-bottom:1px solid var(--line);cursor:pointer;color:inherit;grid-template-columns:40px minmax(0,1fr) auto;align-items:center;gap:10px;padding:12px 14px;text-decoration:none;transition:background .13s;display:grid}.conversation-item:hover{background:var(--paper)}.conversation-item.active{background:var(--teal-soft);border-left:3px solid var(--teal);padding-left:11px}.conversation-item .conv-avatar{object-fit:cover;border:2px solid var(--line);background:var(--teal-soft);width:40px;height:40px;color:var(--teal);border-radius:50%;flex-shrink:0;place-items:center;font-size:15px;font-weight:950;display:grid}.conversation-item .conv-body{gap:2px;min-width:0;display:grid}.conversation-item .conv-name{color:var(--ink);white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:900;overflow:hidden}.conversation-item .last-message{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:750;overflow:hidden}.conversation-item .meta{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:4px;display:flex}.conversation-item .meta .conv-time{color:var(--muted);white-space:nowrap;font-size:11px;font-weight:800}.unread-badge{background:var(--coral);color:#fff;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 5px;font-size:11px;font-weight:950;line-height:1;display:inline-flex}.conversation-page{background:var(--paper);flex-direction:column;height:100vh;min-height:0;display:flex}.chat-page .conversation-page{height:100%}.conversation-header{background:var(--panel);border-bottom:1px solid var(--line);flex-shrink:0;align-items:center;gap:10px;padding:12px 16px;display:flex}.conversation-header .conv-header-avatar{object-fit:cover;border:2px solid var(--line);background:var(--teal-soft);width:36px;height:36px;color:var(--teal);border-radius:50%;flex-shrink:0;place-items:center;font-size:13px;font-weight:950;display:grid}.conversation-header .conv-header-profile-link{min-width:0;color:inherit;border-radius:10px;flex:1;align-items:center;gap:12px;margin:-4px -8px;padding:4px 8px;text-decoration:none;transition:background .12s;display:flex}.conversation-header .conv-header-profile-link:hover{background:var(--paper)}.conversation-header .conv-header-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.conversation-header .conv-header-name{color:var(--ink);white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:950;overflow:hidden}.conversation-header .conv-status{color:var(--muted);align-items:center;gap:5px;font-size:11px;font-weight:800;display:flex}.conversation-header .conv-status-dot{background:var(--green);border-radius:50%;flex-shrink:0;width:7px;height:7px}.conversation-header .conv-back-btn{border:1px solid var(--line);border-radius:var(--radius);width:32px;height:32px;color:var(--ink);cursor:pointer;background:0 0;flex-shrink:0;justify-content:center;align-items:center;transition:background .13s;display:flex}.conversation-header .conv-back-btn:hover{background:var(--paper)}.message-list{flex-direction:column-reverse;flex:1;gap:4px;min-height:0;padding:16px 16px 8px;display:flex;overflow-y:auto}.message-list>.message-bubble+.message-bubble{margin-top:2px}.message-list>.message-bubble.outgoing+.message-bubble.incoming,.message-list>.message-bubble.incoming+.message-bubble.outgoing{margin-top:8px}.message-bubble{word-break:break-word;border-radius:16px;flex-direction:column;flex-shrink:0;max-width:75%;padding:10px 14px;display:flex}.message-bubble.outgoing{background:var(--teal-soft);border-bottom-right-radius:4px;align-self:flex-end}.message-bubble.incoming{background:var(--panel);border:1px solid var(--line);border-bottom-left-radius:4px;align-self:flex-start}.message-bubble .body{color:var(--ink);white-space:pre-wrap;word-break:break-word;font-size:14px;line-height:1.55}.message-bubble .meta{color:var(--muted);flex-wrap:nowrap;align-items:center;gap:5px;margin-top:4px;font-size:11px;font-weight:800;display:flex}.message-bubble.outgoing .meta{justify-content:flex-end}.message-bubble.incoming .meta{justify-content:flex-start}.message-bubble .read-indicator{color:var(--muted);font-size:11px;font-weight:800;display:none}.message-bubble.outgoing .read-indicator{display:inline}.typing-indicator{background:var(--panel);border:1px solid var(--line);border-radius:16px 16px 16px 4px;flex-shrink:0;align-self:flex-start;align-items:center;gap:6px;padding:8px 14px;display:flex}.typing-indicator .dot{background:var(--muted);border-radius:50%;width:7px;height:7px;animation:1.2s ease-in-out infinite typingBounce}.typing-indicator .dot:first-child{animation-delay:0s}.typing-indicator .dot:nth-child(2){animation-delay:.2s}.typing-indicator .dot:nth-child(3){animation-delay:.4s}@keyframes typingBounce{0%,60%,to{opacity:.55;transform:translateY(0)}30%{opacity:1;transform:translateY(-5px)}}.message-composer{background:var(--panel);border-top:1px solid var(--line);flex-shrink:0;grid-template-columns:minmax(0,1fr) auto;align-items:flex-end;gap:8px;padding:10px 14px 12px;display:grid}.message-composer textarea{width:100%;min-height:42px;max-height:160px;color:var(--ink);background:var(--paper);border:1px solid var(--line);resize:none;box-shadow:none;field-sizing:content;border-radius:20px;outline:none;padding:10px 13px;font-size:14px;line-height:1.5;transition:border-color .15s;overflow-y:auto}.message-composer textarea:focus{border-color:var(--teal);box-shadow:0 0 0 3px #00a8961f}.message-composer textarea::placeholder{color:var(--muted);font-weight:750}.message-composer .send-btn{background:var(--teal);color:#fff;cursor:pointer;border:0;border-radius:50%;flex-shrink:0;place-items:center;width:42px;height:42px;transition:background .15s,opacity .15s;display:grid}.message-composer .send-btn:hover:not(:disabled){background:#008a7c}.message-composer .send-btn:disabled{opacity:.5;cursor:not-allowed}.message-composer .send-btn svg{stroke-width:2.2px;width:18px;height:18px}.message-composer .char-count{color:var(--muted);text-align:right;grid-column:1/-1;margin-top:-4px;font-size:11px;font-weight:800}.message-composer .char-count.warn{color:var(--coral)}.new-message-banner{background:var(--ink);color:#fff;cursor:pointer;z-index:5;border:0;border-radius:999px;align-items:center;gap:6px;padding:6px 14px;font-size:13px;font-weight:900;transition:background .15s;display:inline-flex;position:absolute;bottom:80px;left:50%;transform:translate(-50%);box-shadow:0 8px 20px #17202d33}.new-message-banner:hover{background:#2b3955}.new-message-banner svg{stroke-width:2.4px;width:14px;height:14px}@media (width<=768px){.chat-page{grid-template-columns:1fr;height:calc(100vh - 76px)}.chat-page .chat-page-list{display:flex}.chat-page .conversation-page,.chat-page.mobile-conversation-open .chat-page-list{display:none}.chat-page.mobile-conversation-open .conversation-page,.conversation-header .conv-back-btn{display:flex}.message-bubble{max-width:88%}}.mobile-nav-bar{display:none}@media (width<=768px){.shell{grid-template-columns:1fr}.sidebar{display:none}.content{width:100%;padding:16px 16px calc(72px + env(safe-area-inset-bottom,0px))}.profile-layout,.detail-layout,.invite-layout{grid-template-columns:1fr}.album-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.album-detail-grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px}.album-grid>.album-card,.album-grid>.album-create{min-width:0}.album-cover{width:100%}.album-cover img{max-width:100%}.topbar{padding-left:16px;padding-right:64px}.mobile-nav-bar{z-index:50;background:var(--panel);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom,0px);border-top-left-radius:18px;border-top-right-radius:18px;transition:transform .22s;display:block;position:fixed;bottom:0;left:0;right:0;overflow:hidden;transform:translateY(0);box-shadow:0 -4px 12px #0000000a}.mobile-nav-bar.is-hidden{transform:translateY(100%)}.mobile-nav-scroller{scrollbar-width:none;-webkit-overflow-scrolling:touch;touch-action:pan-x;align-items:stretch;gap:2px;display:flex;overflow:auto hidden;-webkit-mask-image:linear-gradient(90deg,#0000 0,#000 12px calc(100% - 12px),#0000 100%);mask-image:linear-gradient(90deg,#0000 0,#000 12px calc(100% - 12px),#0000 100%)}.mobile-nav-scroller::-webkit-scrollbar{display:none}.mobile-nav-item{min-width:56px;color:var(--muted);flex-direction:column;flex:none;justify-content:center;align-items:center;gap:4px;padding:8px 10px 6px;font-size:11px;font-weight:700;text-decoration:none;transition:color .15s;display:flex}.mobile-nav-item:hover{color:var(--ink)}.mobile-nav-item.active{color:var(--teal)}.mobile-nav-icon{justify-content:center;align-items:center;width:22px;height:22px;display:inline-flex;position:relative}.mobile-nav-icon svg{stroke-width:2px;width:22px;height:22px}.mobile-nav-label{white-space:nowrap;line-height:1}.mobile-nav-badge{background:var(--coral,#ef4444);color:#fff;text-align:center;border:1.5px solid var(--panel);box-sizing:content-box;border-radius:8px;min-width:16px;height:16px;padding:0 4px;font-size:10px;font-weight:800;line-height:16px;position:absolute;top:-4px;right:-8px}.chat-page{height:calc(100vh - 76px - 72px - env(safe-area-inset-bottom,0px))}:is(body:has(.modal-overlay.show) .mobile-nav-bar,body:has(.lightbox-overlay.show) .mobile-nav-bar,body:has(.fullscreen-viewer) .mobile-nav-bar){display:none}.activity-detail-body{height:min(92vh,900px);position:relative;grid-template-columns:1fr!important;max-height:none!important;overflow:hidden!important}.activity-detail-media{aspect-ratio:auto;height:100%;min-height:0}.activity-detail-text{background:var(--paper,#fff);border-top:1px solid var(--line);z-index:4;border-top-left-radius:16px;border-top-right-radius:16px;height:72%;max-height:none;padding-top:44px;transition:transform .25s;position:absolute;bottom:0;left:0;right:0;overflow-y:auto;transform:translateY(100%);box-shadow:0 -10px 24px #00000029}.activity-detail-body.mobile-comments-open .activity-detail-text{transform:translateY(0)}.activity-detail-body.mobile-comments-open .activity-detail-comments-toggle,.activity-detail-body.mobile-comments-open .activity-detail-like-toggle,.activity-detail-body.mobile-comments-open .activity-detail-close-mobile,.activity-detail-close-desktop{display:none}.activity-detail-close-mobile{color:#fff;cursor:pointer;z-index:5;background:#00000073;border:0;border-radius:50%;place-items:center;width:36px;height:36px;display:grid;position:absolute;top:12px;right:12px}.activity-detail-close-mobile svg{width:18px;height:18px}.activity-detail-like-toggle{color:#fff;cursor:pointer;z-index:5;background:#0000008c;border:0;border-radius:50%;place-items:center;width:44px;height:44px;display:grid;position:absolute;bottom:16px;right:70px}.activity-detail-like-toggle svg{width:20px;height:20px}.activity-detail-like-count{color:#fff;text-align:center;box-sizing:content-box;background:#ef4444;border:1.5px solid #0009;border-radius:9px;min-width:18px;height:18px;padding:0 5px;font-size:11px;font-weight:800;line-height:18px;position:absolute;top:-4px;right:-4px}.activity-detail-comments-toggle{color:#fff;cursor:pointer;z-index:5;background:#0000008c;border:0;border-radius:50%;place-items:center;width:44px;height:44px;display:grid;position:absolute;bottom:16px;right:16px}.activity-detail-comments-toggle svg{width:20px;height:20px}.activity-detail-comments-count{background:var(--coral,#ef4444);color:#fff;text-align:center;box-sizing:content-box;border:1.5px solid #0009;border-radius:9px;min-width:18px;height:18px;padding:0 5px;font-size:11px;font-weight:800;line-height:18px;position:absolute;top:-4px;right:-4px}.activity-detail-comments-close{width:44px;height:32px;color:var(--muted);cursor:pointer;z-index:5;background:0 0;border:0;border-radius:999px;place-items:center;display:grid;position:absolute;top:6px;left:50%;transform:translate(-50%)}.activity-detail-comments-close svg{width:22px;height:22px}}
