/* source: vendor/open-props.min.css */
:where(html){--font-sans:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif;--font-serif:ui-serif,serif;--font-mono:Dank Mono,Operator Mono,Inconsolata,Fira Mono,ui-monospace,SF Mono,Monaco,Droid Sans Mono,Source Code Pro,monospace;--font-weight-1:100;--font-weight-2:200;--font-weight-3:300;--font-weight-4:400;--font-weight-5:500;--font-weight-6:600;--font-weight-7:700;--font-weight-8:800;--font-weight-9:900;--font-lineheight-00:.95;--font-lineheight-0:1.1;--font-lineheight-1:1.25;--font-lineheight-2:1.375;--font-lineheight-3:1.5;--font-lineheight-4:1.75;--font-lineheight-5:2;--font-letterspacing-0:-.05em;--font-letterspacing-1:.025em;--font-letterspacing-2:.050em;--font-letterspacing-3:.075em;--font-letterspacing-4:.150em;--font-letterspacing-5:.500em;--font-letterspacing-6:.750em;--font-letterspacing-7:1em;--font-size-00:.5rem;--font-size-0:.75rem;--font-size-1:1rem;--font-size-2:1.1rem;--font-size-3:1.25rem;--font-size-4:1.5rem;--font-size-5:2rem;--font-size-6:2.5rem;--font-size-7:3rem;--font-size-8:3.5rem;--font-size-fluid-0:clamp(.75rem,2vw,1rem);--font-size-fluid-1:clamp(1rem,4vw,1.5rem);--font-size-fluid-2:clamp(1.5rem,6vw,2.5rem);--font-size-fluid-3:clamp(2rem,9vw,3.5rem);--size-000:-.5rem;--size-00:-.25rem;--size-1:.25rem;--size-2:.5rem;--size-3:1rem;--size-4:1.25rem;--size-5:1.5rem;--size-6:1.75rem;--size-7:2rem;--size-8:3rem;--size-9:4rem;--size-10:5rem;--size-11:7.5rem;--size-12:10rem;--size-13:15rem;--size-14:20rem;--size-15:30rem;--size-px-000:-8px;--size-px-00:-4px;--size-px-1:4px;--size-px-2:8px;--size-px-3:16px;--size-px-4:20px;--size-px-5:24px;--size-px-6:28px;--size-px-7:32px;--size-px-8:48px;--size-px-9:64px;--size-px-10:80px;--size-px-11:120px;--size-px-12:160px;--size-px-13:240px;--size-px-14:320px;--size-px-15:480px;--size-fluid-1:clamp(.5rem,1vw,1rem);--size-fluid-2:clamp(1rem,2vw,1.5rem);--size-fluid-3:clamp(1.5rem,3vw,2rem);--size-fluid-4:clamp(2rem,4vw,3rem);--size-fluid-5:clamp(4rem,5vw,5rem);--size-fluid-6:clamp(5rem,7vw,7.5rem);--size-fluid-7:clamp(7.5rem,10vw,10rem);--size-fluid-8:clamp(10rem,20vw,15rem);--size-fluid-9:clamp(15rem,30vw,20rem);--size-fluid-10:clamp(20rem,40vw,30rem);--size-content-1:20ch;--size-content-2:45ch;--size-content-3:60ch;--size-header-1:20ch;--size-header-2:25ch;--size-header-3:35ch;--size-xxs:240px;--size-xs:360px;--size-sm:480px;--size-md:768px;--size-lg:1024px;--size-xl:1440px;--size-xxl:1920px;--size-relative-000:-.5ch;--size-relative-00:-.25ch;--size-relative-1:.25ch;--size-relative-2:.5ch;--size-relative-3:1ch;--size-relative-4:1.25ch;--size-relative-5:1.5ch;--size-relative-6:1.75ch;--size-relative-7:2ch;--size-relative-8:3ch;--size-relative-9:4ch;--size-relative-10:5ch;--size-relative-11:7.5ch;--size-relative-12:10ch;--size-relative-13:15ch;--size-relative-14:20ch;--size-relative-15:30ch;--ease-1:cubic-bezier(.25,0,.5,1);--ease-2:cubic-bezier(.25,0,.4,1);--ease-3:cubic-bezier(.25,0,.3,1);--ease-4:cubic-bezier(.25,0,.2,1);--ease-5:cubic-bezier(.25,0,.1,1);--ease-in-1:cubic-bezier(.25,0,1,1);--ease-in-2:cubic-bezier(.50,0,1,1);--ease-in-3:cubic-bezier(.70,0,1,1);--ease-in-4:cubic-bezier(.90,0,1,1);--ease-in-5:cubic-bezier(1,0,1,1);--ease-out-1:cubic-bezier(0,0,.75,1);--ease-out-2:cubic-bezier(0,0,.50,1);--ease-out-3:cubic-bezier(0,0,.3,1);--ease-out-4:cubic-bezier(0,0,.1,1);--ease-out-5:cubic-bezier(0,0,0,1);--ease-in-out-1:cubic-bezier(.1,0,.9,1);--ease-in-out-2:cubic-bezier(.3,0,.7,1);--ease-in-out-3:cubic-bezier(.5,0,.5,1);--ease-in-out-4:cubic-bezier(.7,0,.3,1);--ease-in-out-5:cubic-bezier(.9,0,.1,1);--ease-elastic-out-1:cubic-bezier(.5,.75,.75,1.25);--ease-elastic-out-2:cubic-bezier(.5,1,.75,1.25);--ease-elastic-out-3:cubic-bezier(.5,1.25,.75,1.25);--ease-elastic-out-4:cubic-bezier(.5,1.5,.75,1.25);--ease-elastic-out-5:cubic-bezier(.5,1.75,.75,1.25);--ease-elastic-in-1:cubic-bezier(.5,-0.25,.75,1);--ease-elastic-in-2:cubic-bezier(.5,-0.50,.75,1);--ease-elastic-in-3:cubic-bezier(.5,-0.75,.75,1);--ease-elastic-in-4:cubic-bezier(.5,-1.00,.75,1);--ease-elastic-in-5:cubic-bezier(.5,-1.25,.75,1);--ease-elastic-in-out-1:cubic-bezier(.5,-.1,.1,1.5);--ease-elastic-in-out-2:cubic-bezier(.5,-.3,.1,1.5);--ease-elastic-in-out-3:cubic-bezier(.5,-.5,.1,1.5);--ease-elastic-in-out-4:cubic-bezier(.5,-.7,.1,1.5);--ease-elastic-in-out-5:cubic-bezier(.5,-.9,.1,1.5);--ease-step-1:steps(2);--ease-step-2:steps(3);--ease-step-3:steps(4);--ease-step-4:steps(7);--ease-step-5:steps(10);--ease-elastic-1:var(--ease-elastic-out-1);--ease-elastic-2:var(--ease-elastic-out-2);--ease-elastic-3:var(--ease-elastic-out-3);--ease-elastic-4:var(--ease-elastic-out-4);--ease-elastic-5:var(--ease-elastic-out-5);--ease-squish-1:var(--ease-elastic-in-out-1);--ease-squish-2:var(--ease-elastic-in-out-2);--ease-squish-3:var(--ease-elastic-in-out-3);--ease-squish-4:var(--ease-elastic-in-out-4);--ease-squish-5:var(--ease-elastic-in-out-5);--ease-spring-1:linear(0,0.006,0.025 2.8%,0.101 6.1%,0.539 18.9%,0.721 25.3%,0.849 31.5%,0.937 38.1%,0.968 41.8%,0.991 45.7%,1.006 50.1%,1.015 55%,1.017 63.9%,1.001);--ease-spring-2:linear(0,0.007,0.029 2.2%,0.118 4.7%,0.625 14.4%,0.826 19%,0.902,0.962,1.008 26.1%,1.041 28.7%,1.064 32.1%,1.07 36%,1.061 40.5%,1.015 53.4%,0.999 61.6%,0.995 71.2%,1);--ease-spring-3:linear(0,0.009,0.035 2.1%,0.141 4.4%,0.723 12.9%,0.938 16.7%,1.017,1.077,1.121,1.149 24.3%,1.159,1.163,1.161,1.154 29.9%,1.129 32.8%,1.051 39.6%,1.017 43.1%,0.991,0.977 51%,0.974 53.8%,0.975 57.1%,0.997 69.8%,1.003 76.9%,1);--ease-spring-4:linear(0,0.009,0.037 1.7%,0.153 3.6%,0.776 10.3%,1.001,1.142 16%,1.185,1.209 19%,1.215 19.9% 20.8%,1.199,1.165 25%,1.056 30.3%,1.008 33%,0.973,0.955 39.2%,0.953 41.1%,0.957 43.3%,0.998 53.3%,1.009 59.1% 63.7%,0.998 78.9%,1);--ease-spring-5:linear(0,0.01,0.04 1.6%,0.161 3.3%,0.816 9.4%,1.046,1.189 14.4%,1.231,1.254 17%,1.259,1.257 18.6%,1.236,1.194 22.3%,1.057 27%,0.999 29.4%,0.955 32.1%,0.942,0.935 34.9%,0.933,0.939 38.4%,1 47.3%,1.011,1.017 52.6%,1.016 56.4%,1 65.2%,0.996 70.2%,1.001 87.2%,1);--ease-bounce-1:linear(0,0.004,0.016,0.035,0.063,0.098,0.141,0.191,0.25,0.316,0.391 36.8%,0.563,0.766,1 58.8%,0.946,0.908 69.1%,0.895,0.885,0.879,0.878,0.879,0.885,0.895,0.908 89.7%,0.946,1);--ease-bounce-2:linear(0,0.004,0.016,0.035,0.063,0.098,0.141 15.1%,0.25,0.391,0.562,0.765,1,0.892 45.2%,0.849,0.815,0.788,0.769,0.757,0.753,0.757,0.769,0.788,0.815,0.85,0.892 75.2%,1 80.2%,0.973,0.954,0.943,0.939,0.943,0.954,0.973,1);--ease-bounce-3:linear(0,0.004,0.016,0.035,0.062,0.098,0.141 11.4%,0.25,0.39,0.562,0.764,1 30.3%,0.847 34.8%,0.787,0.737,0.699,0.672,0.655,0.65,0.656,0.672,0.699,0.738,0.787,0.847 61.7%,1 66.2%,0.946,0.908,0.885 74.2%,0.879,0.878,0.879,0.885 79.5%,0.908,0.946,1 87.4%,0.981,0.968,0.96,0.957,0.96,0.968,0.981,1);--ease-bounce-4:linear(0,0.004,0.016 3%,0.062,0.141,0.25,0.391,0.562 18.2%,1 24.3%,0.81,0.676 32.3%,0.629,0.595,0.575,0.568,0.575,0.595,0.629,0.676 48.2%,0.811,1 56.2%,0.918,0.86,0.825,0.814,0.825,0.86,0.918,1 77.2%,0.94 80.6%,0.925,0.92,0.925,0.94 87.5%,1 90.9%,0.974,0.965,0.974,1);--ease-bounce-5:linear(0,0.004,0.016 2.5%,0.063,0.141,0.25 10.1%,0.562,1 20.2%,0.783,0.627,0.534 30.9%,0.511,0.503,0.511,0.534 38%,0.627,0.782,1 48.7%,0.892,0.815,0.769 56.3%,0.757,0.753,0.757,0.769 61.3%,0.815,0.892,1 68.8%,0.908 72.4%,0.885,0.878,0.885,0.908 79.4%,1 83%,0.954 85.5%,0.943,0.939,0.943,0.954 90.5%,1 93%,0.977,0.97,0.977,1);--layer-1:1;--layer-2:2;--layer-3:3;--layer-4:4;--layer-5:5;--layer-important:2147483647;--shadow-color:220 3% 15%;--shadow-strength:1%;--inner-shadow-highlight:inset 0 -.5px 0 0 #fff,inset 0 .5px 0 0 rgba(0,0,0,.067);--shadow-1:0 1px 2px -1px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 9%));--shadow-2:0 3px 5px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 3%)),0 7px 14px -5px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 5%));--shadow-3:0 -1px 3px 0 hsl(var(--shadow-color)/calc(var(--shadow-strength) + 2%)),0 1px 2px -5px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 2%)),0 2px 5px -5px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 4%)),0 4px 12px -5px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 5%)),0 12px 15px -5px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 7%));--shadow-4:0 -2px 5px 0 hsl(var(--shadow-color)/calc(var(--shadow-strength) + 2%)),0 1px 1px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 3%)),0 2px 2px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 3%)),0 5px 5px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 4%)),0 9px 9px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 5%)),0 16px 16px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 6%));--shadow-5:0 -1px 2px 0 hsl(var(--shadow-color)/calc(var(--shadow-strength) + 2%)),0 2px 1px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 3%)),0 5px 5px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 3%)),0 10px 10px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 4%)),0 20px 20px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 5%)),0 40px 40px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 7%));--shadow-6:0 -1px 2px 0 hsl(var(--shadow-color)/calc(var(--shadow-strength) + 2%)),0 3px 2px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 3%)),0 7px 5px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 3%)),0 12px 10px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 4%)),0 22px 18px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 5%)),0 41px 33px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 6%)),0 100px 80px -2px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 7%));--inner-shadow-0:inset 0 0 0 1px hsl(var(--shadow-color)/calc(var(--shadow-strength) + 9%));--inner-shadow-1:inset 0 1px 2px 0 hsl(var(--shadow-color)/calc(var(--shadow-strength) + 9%)),var(--inner-shadow-highlight);--inner-shadow-2:inset 0 1px 4px 0 hsl(var(--shadow-color)/calc(var(--shadow-strength) + 9%)),var(--inner-shadow-highlight);--inner-shadow-3:inset 0 2px 8px 0 hsl(var(--shadow-color)/calc(var(--shadow-strength) + 9%)),var(--inner-shadow-highlight);--inner-shadow-4:inset 0 2px 14px 0 hsl(var(--shadow-color)/calc(var(--shadow-strength) + 9%)),var(--inner-shadow-highlight);--ratio-square:1;--ratio-landscape:4/3;--ratio-portrait:3/4;--ratio-widescreen:16/9;--ratio-ultrawide:18/5;--ratio-golden:1.6180/1;--gray-0:#f8f9fa;--gray-1:#f1f3f5;--gray-2:#e9ecef;--gray-3:#dee2e6;--gray-4:#ced4da;--gray-5:#adb5bd;--gray-6:#868e96;--gray-7:#495057;--gray-8:#343a40;--gray-9:#212529;--gray-10:#16191d;--gray-11:#0d0f12;--gray-12:#030507;--stone-0:#f8fafb;--stone-1:#f2f4f6;--stone-2:#ebedef;--stone-3:#e0e4e5;--stone-4:#d1d6d8;--stone-5:#b1b6b9;--stone-6:#979b9d;--stone-7:#7e8282;--stone-8:#666968;--stone-9:#50514f;--stone-10:#3a3a37;--stone-11:#252521;--stone-12:#121210;--red-0:#fff5f5;--red-1:#ffe3e3;--red-2:#ffc9c9;--red-3:#ffa8a8;--red-4:#ff8787;--red-5:#ff6b6b;--red-6:#fa5252;--red-7:#f03e3e;--red-8:#e03131;--red-9:#c92a2a;--red-10:#b02525;--red-11:#962020;--red-12:#7d1a1a;--pink-0:#fff0f6;--pink-1:#ffdeeb;--pink-2:#fcc2d7;--pink-3:#faa2c1;--pink-4:#f783ac;--pink-5:#f06595;--pink-6:#e64980;--pink-7:#d6336c;--pink-8:#c2255c;--pink-9:#a61e4d;--pink-10:#8c1941;--pink-11:#731536;--pink-12:#59102a;--purple-0:#f8f0fc;--purple-1:#f3d9fa;--purple-2:#eebefa;--purple-3:#e599f7;--purple-4:#da77f2;--purple-5:#cc5de8;--purple-6:#be4bdb;--purple-7:#ae3ec9;--purple-8:#9c36b5;--purple-9:#862e9c;--purple-10:#702682;--purple-11:#5a1e69;--purple-12:#44174f;--violet-0:#f3f0ff;--violet-1:#e5dbff;--violet-2:#d0bfff;--violet-3:#b197fc;--violet-4:#9775fa;--violet-5:#845ef7;--violet-6:#7950f2;--violet-7:#7048e8;--violet-8:#6741d9;--violet-9:#5f3dc4;--violet-10:#5235ab;--violet-11:#462d91;--violet-12:#3a2578;--indigo-0:#edf2ff;--indigo-1:#dbe4ff;--indigo-2:#bac8ff;--indigo-3:#91a7ff;--indigo-4:#748ffc;--indigo-5:#5c7cfa;--indigo-6:#4c6ef5;--indigo-7:#4263eb;--indigo-8:#3b5bdb;--indigo-9:#364fc7;--indigo-10:#2f44ad;--indigo-11:#283a94;--indigo-12:#21307a;--blue-0:#e7f5ff;--blue-1:#d0ebff;--blue-2:#a5d8ff;--blue-3:#74c0fc;--blue-4:#4dabf7;--blue-5:#339af0;--blue-6:#228be6;--blue-7:#1c7ed6;--blue-8:#1971c2;--blue-9:#1864ab;--blue-10:#145591;--blue-11:#114678;--blue-12:#0d375e;--cyan-0:#e3fafc;--cyan-1:#c5f6fa;--cyan-2:#99e9f2;--cyan-3:#66d9e8;--cyan-4:#3bc9db;--cyan-5:#22b8cf;--cyan-6:#15aabf;--cyan-7:#1098ad;--cyan-8:#0c8599;--cyan-9:#0b7285;--cyan-10:#095c6b;--cyan-11:#074652;--cyan-12:#053038;--teal-0:#e6fcf5;--teal-1:#c3fae8;--teal-2:#96f2d7;--teal-3:#63e6be;--teal-4:#38d9a9;--teal-5:#20c997;--teal-6:#12b886;--teal-7:#0ca678;--teal-8:#099268;--teal-9:#087f5b;--teal-10:#066649;--teal-11:#054d37;--teal-12:#033325;--green-0:#ebfbee;--green-1:#d3f9d8;--green-2:#b2f2bb;--green-3:#8ce99a;--green-4:#69db7c;--green-5:#51cf66;--green-6:#40c057;--green-7:#37b24d;--green-8:#2f9e44;--green-9:#2b8a3e;--green-10:#237032;--green-11:#1b5727;--green-12:#133d1b;--lime-0:#f4fce3;--lime-1:#e9fac8;--lime-2:#d8f5a2;--lime-3:#c0eb75;--lime-4:#a9e34b;--lime-5:#94d82d;--lime-6:#82c91e;--lime-7:#74b816;--lime-8:#66a80f;--lime-9:#5c940d;--lime-10:#4c7a0b;--lime-11:#3c6109;--lime-12:#2c4706;--yellow-0:#fff9db;--yellow-1:#fff3bf;--yellow-2:#ffec99;--yellow-3:#ffe066;--yellow-4:#ffd43b;--yellow-5:#fcc419;--yellow-6:#fab005;--yellow-7:#f59f00;--yellow-8:#f08c00;--yellow-9:#e67700;--yellow-10:#b35c00;--yellow-11:#804200;--yellow-12:#663500;--orange-0:#fff4e6;--orange-1:#ffe8cc;--orange-2:#ffd8a8;--orange-3:#ffc078;--orange-4:#ffa94d;--orange-5:#ff922b;--orange-6:#fd7e14;--orange-7:#f76707;--orange-8:#e8590c;--orange-9:#d9480f;--orange-10:#bf400d;--orange-11:#99330b;--orange-12:#802b09;--choco-0:#fff8dc;--choco-1:#fce1bc;--choco-2:#f7ca9e;--choco-3:#f1b280;--choco-4:#e99b62;--choco-5:#df8545;--choco-6:#d46e25;--choco-7:#bd5f1b;--choco-8:#a45117;--choco-9:#8a4513;--choco-10:#703a13;--choco-11:#572f12;--choco-12:#3d210d;--brown-0:#faf4eb;--brown-1:#ede0d1;--brown-2:#e0cab7;--brown-3:#d3b79e;--brown-4:#c5a285;--brown-5:#b78f6d;--brown-6:#a87c56;--brown-7:#956b47;--brown-8:#825b3a;--brown-9:#6f4b2d;--brown-10:#5e3a21;--brown-11:#4e2b15;--brown-12:#422412;--sand-0:#f8fafb;--sand-1:#e6e4dc;--sand-2:#d5cfbd;--sand-3:#c2b9a0;--sand-4:#aea58c;--sand-5:#9a9178;--sand-6:#867c65;--sand-7:#736a53;--sand-8:#5f5746;--sand-9:#4b4639;--sand-10:#38352d;--sand-11:#252521;--sand-12:#121210;--camo-0:#f9fbe7;--camo-1:#e8ed9c;--camo-2:#d2df4e;--camo-3:#c2ce34;--camo-4:#b5bb2e;--camo-5:#a7a827;--camo-6:#999621;--camo-7:#8c851c;--camo-8:#7e7416;--camo-9:#6d6414;--camo-10:#5d5411;--camo-11:#4d460e;--camo-12:#36300a;--jungle-0:#ecfeb0;--jungle-1:#def39a;--jungle-2:#d0e884;--jungle-3:#c2dd6e;--jungle-4:#b5d15b;--jungle-5:#a8c648;--jungle-6:#9bbb36;--jungle-7:#8fb024;--jungle-8:#84a513;--jungle-9:#7a9908;--jungle-10:#658006;--jungle-11:#516605;--jungle-12:#3d4d04;--gradient-1:linear-gradient(to bottom right,#1f005c,#5b0060,#870160,#ac255e,#ca485c,#e16b5c,#f39060,#ffb56b);--gradient-2:linear-gradient(to bottom right,#48005c,#8300e2,#a269ff);--gradient-3:radial-gradient(circle at top right,#0ff,rgba(0,255,255,0)),radial-gradient(circle at bottom left,#ff1492,rgba(255,20,146,0));--gradient-4:linear-gradient(to bottom right,#00f5a0,#00d9f5);--gradient-5:conic-gradient(from -270deg at 75% 110%,#f0f,#fffaf0);--gradient-6:conic-gradient(from -90deg at top left,#000,#fff);--gradient-7:linear-gradient(to bottom right,#72c6ef,#004e8f);--gradient-8:conic-gradient(from 90deg at 50% 0%,#111,50%,#222,#111);--gradient-9:conic-gradient(from .5turn at bottom center,#add8e6,#fff);--gradient-10:conic-gradient(from 90deg at 40% -25%,gold,#f79d03,#ee6907,#e6390a,#de0d0d,#d61039,#cf1261,#c71585,#cf1261,#d61039,#de0d0d,#ee6907,#f79d03,gold,gold,gold);--gradient-11:conic-gradient(at bottom left,#ff1493,cyan);--gradient-12:conic-gradient(from 90deg at 25% -10%,#ff4500,#d3f340,#7bee85,#afeeee,#7bee85);--gradient-13:radial-gradient(circle at 50% 200%,#000142,#3b0083,#b300c3,#ff059f,#ff4661,#ffad86,#fff3c7);--gradient-14:conic-gradient(at top right,lime,cyan);--gradient-15:linear-gradient(to bottom right,#c7d2fe,#fecaca,#fef3c7);--gradient-16:radial-gradient(circle at 50% -250%,#374151,#111827,#000);--gradient-17:conic-gradient(from -90deg at 50% -25%,blue,#8a2be2);--gradient-18:linear-gradient(0deg,rgba(255,0,0,.8),rgba(255,0,0,0) 75%),linear-gradient(60deg,rgba(255,255,0,.8),rgba(255,255,0,0) 75%),linear-gradient(120deg,rgba(0,255,0,.8),rgba(0,255,0,0) 75%),linear-gradient(180deg,rgba(0,255,255,.8),rgba(0,255,255,0) 75%),linear-gradient(240deg,rgba(0,0,255,.8),rgba(0,0,255,0) 75%),linear-gradient(300deg,rgba(255,0,255,.8),rgba(255,0,255,0) 75%);--gradient-19:linear-gradient(to bottom right,#ffe259,#ffa751);--gradient-20:conic-gradient(from -135deg at -10% center,orange,#ff7715,#ff522a,#ff3f47,#ff5482,#ff69b4);--gradient-21:conic-gradient(from -90deg at 25% 115%,red,#f06,#f0c,#c0f,#60f,#00f,#00f,#00f,#00f);--gradient-22:linear-gradient(to bottom right,#acb6e5,#86fde8);--gradient-23:linear-gradient(to bottom right,#536976,#292e49);--gradient-24:conic-gradient(from .5turn at 0% 0%,#00c476,10%,#82b0ff,90%,#00c476);--gradient-25:conic-gradient(at 125% 50%,#b78cf7,#ff7c94,#ffcf0d,#ff7c94,#b78cf7);--gradient-26:linear-gradient(to bottom right,#9796f0,#fbc7d4);--gradient-27:conic-gradient(from .5turn at bottom left,#ff1493,#639);--gradient-28:conic-gradient(from -90deg at 50% 105%,#fff,orchid);--gradient-29:radial-gradient(circle at top right,#bfb3ff,rgba(191,179,255,0)),radial-gradient(circle at bottom left,#86acf9,rgba(134,172,249,0));--gradient-30:radial-gradient(circle at top right,#00ff80,rgba(0,255,128,0)),radial-gradient(circle at bottom left,#adffd6,rgba(173,255,214,0));--noise-1:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.005' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)'/%3E%3C/svg%3E");--noise-2:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 300 300' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.05' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)'/%3E%3C/svg%3E");--noise-3:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.25' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)'/%3E%3C/svg%3E");--noise-4:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 2056 2056' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.5' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)'/%3E%3C/svg%3E");--noise-5:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 2056 2056' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.75' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)'/%3E%3C/svg%3E");--noise-filter-1:contrast(300%) brightness(100%);--noise-filter-2:contrast(200%) brightness(150%);--noise-filter-3:contrast(200%) brightness(250%);--noise-filter-4:contrast(200%) brightness(500%);--noise-filter-5:contrast(200%) brightness(1000%);--animation-fade-in:fade-in .5s var(--ease-3);--animation-fade-in-bloom:fade-in-bloom 2s var(--ease-3);--animation-fade-out:fade-out .5s var(--ease-3);--animation-fade-out-bloom:fade-out-bloom 2s var(--ease-3);--animation-scale-up:scale-up .5s var(--ease-3);--animation-scale-down:scale-down .5s var(--ease-3);--animation-slide-out-up:slide-out-up .5s var(--ease-3);--animation-slide-out-down:slide-out-down .5s var(--ease-3);--animation-slide-out-right:slide-out-right .5s var(--ease-3);--animation-slide-out-left:slide-out-left .5s var(--ease-3);--animation-slide-in-up:slide-in-up .5s var(--ease-3);--animation-slide-in-down:slide-in-down .5s var(--ease-3);--animation-slide-in-right:slide-in-right .5s var(--ease-3);--animation-slide-in-left:slide-in-left .5s var(--ease-3);--animation-shake-x:shake-x .75s var(--ease-out-5);--animation-shake-y:shake-y .75s var(--ease-out-5);--animation-shake-z:shake-z 1s var(--ease-in-out-3);--animation-spin:spin 2s linear infinite;--animation-ping:ping 5s var(--ease-out-3) infinite;--animation-blink:blink 1s var(--ease-out-3) infinite;--animation-float:float 3s var(--ease-in-out-3) infinite;--animation-bounce:bounce 2s var(--ease-squish-2) infinite;--animation-pulse:pulse 2s var(--ease-out-3) infinite;--border-size-1:1px;--border-size-2:2px;--border-size-3:5px;--border-size-4:10px;--border-size-5:25px;--radius-1:2px;--radius-2:5px;--radius-3:1rem;--radius-4:2rem;--radius-5:4rem;--radius-6:8rem;--radius-drawn-1:255px 15px 225px 15px/15px 225px 15px 255px;--radius-drawn-2:125px 10px 20px 185px/25px 205px 205px 25px;--radius-drawn-3:15px 255px 15px 225px/225px 15px 255px 15px;--radius-drawn-4:15px 25px 155px 25px/225px 150px 25px 115px;--radius-drawn-5:250px 25px 15px 20px/15px 80px 105px 115px;--radius-drawn-6:28px 100px 20px 15px/150px 30px 205px 225px;--radius-round:1e5px;--radius-blob-1:30% 70% 70% 30%/53% 30% 70% 47%;--radius-blob-2:53% 47% 34% 66%/63% 46% 54% 37%;--radius-blob-3:37% 63% 56% 44%/49% 56% 44% 51%;--radius-blob-4:63% 37% 37% 63%/43% 37% 63% 57%;--radius-blob-5:49% 51% 48% 52%/57% 44% 56% 43%;--radius-conditional-1:clamp(0px,calc(100vw - 100%) * 1e5,var(--radius-1));--radius-conditional-2:clamp(0px,calc(100vw - 100%) * 1e5,var(--radius-2));--radius-conditional-3:clamp(0px,calc(100vw - 100%) * 1e5,var(--radius-3));--radius-conditional-4:clamp(0px,calc(100vw - 100%) * 1e5,var(--radius-4));--radius-conditional-5:clamp(0px,calc(100vw - 100%) * 1e5,var(--radius-5));--radius-conditional-6:clamp(0px,calc(100vw - 100%) * 1e5,var(--radius-6))}@media (prefers-color-scheme:dark){:where(html){--shadow-color:220 40% 2%;--shadow-strength:25%;--inner-shadow-highlight:inset 0 -.5px 0 0 hsla(0,0%,100%,.067),inset 0 .5px 0 0 rgba(0,0,0,.467)}}@keyframes fade-in{to{opacity:1}}@keyframes fade-in-bloom{0%{filter:brightness(1) blur(20px);opacity:0}10%{filter:brightness(2) blur(10px);opacity:1}to{filter:brightness(1) blur(0);opacity:1}}@keyframes fade-out{to{opacity:0}}@keyframes fade-out-bloom{to{filter:brightness(1) blur(20px);opacity:0}10%{filter:brightness(2) blur(10px);opacity:1}0%{filter:brightness(1) blur(0);opacity:1}}@keyframes scale-up{to{transform:scale(1.25)}}@keyframes scale-down{to{transform:scale(.75)}}@keyframes slide-out-up{to{transform:translateY(-100%)}}@keyframes slide-out-down{to{transform:translateY(100%)}}@keyframes slide-out-right{to{transform:translateX(100%)}}@keyframes slide-out-left{to{transform:translateX(-100%)}}@keyframes slide-in-up{0%{transform:translateY(100%)}}@keyframes slide-in-down{0%{transform:translateY(-100%)}}@keyframes slide-in-right{0%{transform:translateX(-100%)}}@keyframes slide-in-left{0%{transform:translateX(100%)}}@keyframes shake-x{0%,to{transform:translateX(0)}20%{transform:translateX(-5%)}40%{transform:translateX(5%)}60%{transform:translateX(-5%)}80%{transform:translateX(5%)}}@keyframes shake-y{0%,to{transform:translateY(0)}20%{transform:translateY(-5%)}40%{transform:translateY(5%)}60%{transform:translateY(-5%)}80%{transform:translateY(5%)}}@keyframes shake-z{0%,to{transform:rotate(0deg)}20%{transform:rotate(-2deg)}40%{transform:rotate(2deg)}60%{transform:rotate(-2deg)}80%{transform:rotate(2deg)}}@keyframes spin{to{transform:rotate(1turn)}}@keyframes ping{90%,to{opacity:0;transform:scale(2)}}@keyframes blink{0%,to{opacity:1}50%{opacity:.5}}@keyframes float{50%{transform:translateY(-25%)}}@keyframes bounce{25%{transform:translateY(-20%)}40%{transform:translateY(-3%)}0%,60%,to{transform:translateY(0)}}@keyframes pulse{50%{transform:scale(.9)}}@media (prefers-color-scheme:dark){@keyframes fade-in-bloom{0%{filter:brightness(1) blur(20px);opacity:0}10%{filter:brightness(.5) blur(10px);opacity:1}to{filter:brightness(1) blur(0);opacity:1}}}@media (prefers-color-scheme:dark){@keyframes fade-out-bloom{to{filter:brightness(1) blur(20px);opacity:0}10%{filter:brightness(.5) blur(10px);opacity:1}0%{filter:brightness(1) blur(0);opacity:1}}}

/* source: css/style.css */
/* ============ 芙蓉律所掼蛋湖大校友会联赛数据查询平台 · 深海军蓝主题 ============ */
:root{
  --felt-900:#001040; --felt-700:#001040; --felt-600:#002080; --felt-100:#E8F0FB;
  /* v67 品牌色由绿改蓝（2026-09-14）：深海军蓝取自发起人宣传图
     server/test-results/human-trial/ad-sample.jpg，sharp 实测该图最深蓝 #03115a、
     主蓝带 #081868·#082888、亮蓝条纹 #1d80ea；与方案给定 #002080／#001040／#2f7fe0 同族。
     --ok-bg／--ok-ink 是「成功／已确认／已完成」的语义绿，按发起人取舍规则保留，与品牌蓝共存。 */
  --ok-bg:#E7F0E9; --ok-ink:#0F5132;
  --paper:#F1F4FA; --card:#FFFFFF;
  --ink:#1E2028; --ink-2:#5A6470; --ink-3:#5F6B7D;
  --line:#E1E6EE; --line-2:#CFD6E2;
  --red:#C4402F; --red-bg:#FBEDEA;
  --gold:#B8892F; --gold-bg:#F6EEDA; --gold-deep:#8F6A1F;
  --blue:#2B5D8A; --blue-bg:#E8F0F7;
  --radius:14px; --radius-s:10px;
  --body-bg:#DCE0E8; --card-soft:#FBFCFE; --seg-bg:#E8ECF4;
  --topbar-bg:rgba(241,244,250,.92); --tabbar-bg:rgba(255,255,255,.96);
  --felt-a:#002080; --felt-glow:rgba(184,137,47,.16); --shadow-c:10,18,44;
  --shadow:0 1px 2px rgba(var(--shadow-c),.05),0 4px 14px rgba(var(--shadow-c),.06);
  --body-tint:rgba(0,32,128,.10);
  --hero-bg:
    radial-gradient(90% 55% at 82% -8%, rgba(214,175,90,.28), transparent 62%),
    radial-gradient(120% 80% at 50% -25%, rgba(255,255,255,.12), transparent 55%),
    radial-gradient(150% 120% at 50% 125%, rgba(0,0,0,.35), transparent 62%),
    linear-gradient(168deg,#002080,#001560 55%,#000C33);
  --card-grad:linear-gradient(180deg,#FFFFFF,#F7F9FD);
  --card-line:rgba(0,32,128,.08);
  --btn-grad:linear-gradient(180deg,#002080,#001040);
  --btn-glow:0 4px 14px rgba(0,32,128,.35);
  --todo-bg:#FFFDF6;
  --tab-h:calc(56px + env(safe-area-inset-bottom,0px));
  --font-body:-apple-system,BlinkMacSystemFont,"PingFang SC","HarmonyOS Sans SC","MiSans","Microsoft YaHei",sans-serif;
  --font-disp:"Noto Serif SC","Songti SC","STSong","SimSun",serif;
  /* ---------- v66 版式令牌（第 2 批 c 段）：三种卡片定式与统一间距字号 ----------
     基准 Open Props（vendor 子集 --size-*/--font-size-*），fallback 为本主题原值：
     主卡=毡面品牌区（.home-hero/.login-hero，padding 20px+）；
     次卡=.card（14px，tight=12px）；列表行=.list .li（13px 14px）。 */
  --card-pad-main:var(--size-4,1.25rem);
  --card-pad-sub:calc(var(--size-3,1rem) - 2px);
  --card-row-pad:13px 14px;
  --fs-h1:var(--font-size-4,1.5rem);
  --fs-h2:17px; --fs-body:15px; --fs-small:12.5px; --fs-tiny:11.5px;
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{font-family:var(--font-body);background:var(--body-bg);color:var(--ink);font-size:15px;line-height:1.55;
  display:flex;justify-content:center}
#phone{width:100%;max-width:430px;min-height:100dvh;background:radial-gradient(900px 460px at 50% -8%, var(--body-tint), transparent 72%), var(--paper);display:flex;flex-direction:column;
  position:relative;box-shadow:0 0 0 1px rgba(0,0,0,.04),0 10px 40px rgba(8,16,40,.18)}
@media (min-width:520px){ body{padding:16px 0} #phone{min-height:calc(100dvh - 32px);border-radius:28px;overflow:hidden} }

#screen{flex:1;overflow-y:auto;overscroll-behavior:contain;padding-bottom:calc(var(--tab-h) + 16px)}
#screen.no-tab{padding-bottom:24px}

/* ---------- 顶栏 ---------- */
.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:10px;min-height:52px;
  padding:8px 14px;background:var(--topbar-bg);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.topbar .tb-title{font-size:17px;font-weight:700;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar.light{background:rgba(0,16,64,.92);color:#fff;border-bottom:none}
.topbar.light .tb-title{color:#fff}
.icon-btn{width:36px;height:36px;border:none;border-radius:10px;background:transparent;color:inherit;font-size:19px;
  display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none}
.icon-btn:active{background:rgba(0,0,0,.07)}
.light .icon-btn:active{background:rgba(255,255,255,.15)}
a{color:var(--felt-700)}

/* ---------- 毡面首屏 ---------- */
.felt{background:var(--hero-bg);
  color:#fff;position:relative;overflow:hidden}
.felt::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='0.6'/%3E%3C/svg%3E")}
.felt>*{position:relative;z-index:1}

/* ---------- 品牌区定式（v66：登录页与首页共享；金色黑桃标=毡面+牌的品牌语言） ----------
   v67（2026-09-14）平台改名「芙蓉律所掼蛋湖大校友会联赛数据查询平台」共 19 字，原 24px 衬线字号
   在 320/390 都会撑破视口。故：字号按宽度自适应（390 正常档、320 缩到最小档），
   一律 nowrap ＋ 省略号，完整名称放在 title 与 aria-label 里（读屏可读全，见 realm/views.js）。 */
.brand-mark{width:52px;height:52px;margin:0 auto 10px;border-radius:14px;background:rgba(255,255,255,.12);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.22);display:flex;align-items:center;justify-content:center}
.brand-mark .ico{width:28px;height:28px;color:#E8C878}
.brand-name{display:block;max-width:100%;font-family:var(--font-disp);font-size:14px;font-weight:800;
  letter-spacing:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (min-width:361px){ .brand-name{font-size:16px;letter-spacing:.01em} }
@media (min-width:430px){ .brand-name{font-size:17.5px;letter-spacing:.02em} }
.brand-tag{margin-top:6px;font-size:var(--fs-small);opacity:.85;letter-spacing:.02em}
.login-hero{padding:36px 20px 26px;text-align:center}
.home-hero{padding:26px 18px 24px;text-align:center}
.home-hero .hh-hello{font-family:var(--font-disp);font-size:var(--fs-h1);font-weight:800;letter-spacing:.04em}
.home-hero .brand-tag{margin-top:4px}
.hh-cta{display:flex;width:100%;min-height:48px;font-size:16px;margin-top:16px}
.hh-note{margin-top:8px;font-size:var(--fs-tiny);color:rgba(255,255,255,.78)}
.login-body{padding:16px 14px 8px}
.login-body .btn.block{min-height:48px;font-size:16px}

/* ---------- 排版工具 ---------- */
.pad{padding:0 14px}
.h1{font-size:var(--fs-h1);font-weight:800;letter-spacing:.5px}
.h2{font-size:var(--fs-h2);font-weight:700}
.sec{display:flex;align-items:baseline;justify-content:space-between;margin:20px 14px 10px}
.sec .h2::before{content:"";display:inline-block;width:4px;height:14px;border-radius:2px;background:var(--felt-600);margin-right:7px;vertical-align:-1px}
.sec a,.sec button{font-size:13px;color:var(--ink-3);background:none;border:none;cursor:pointer;font-family:inherit}
.muted{color:var(--ink-2)}.faint{color:var(--ink-3)}
.small{font-size:var(--fs-small)}.tiny{font-size:var(--fs-tiny)}
.disp{font-family:var(--font-disp)}
.row{display:flex;align-items:center;gap:8px}
.spread{display:flex;align-items:center;justify-content:space-between;gap:8px}
.mt8{margin-top:8px}.mt12{margin-top:12px}.mt16{margin-top:16px}
.hr{height:1px;background:var(--line);margin:12px 0}

/* ---------- 图标系统（v66：ICONS 工厂 · 单色 currentColor，尺寸/颜色随上下文） ---------- */
svg.ico{width:1em;height:1em;display:inline-block;flex:none;vertical-align:-.14em}
.li>.ico{width:20px;height:20px;color:var(--felt-600);align-self:center}
.btn .ico{width:16px;height:16px}
.btn.xs .ico{width:14px;height:14px}
.btn.sm .ico{width:15px;height:15px}
.fchip .ico{width:14px;height:14px;vertical-align:-.16em}
.empty .eico .ico{width:44px;height:44px;vertical-align:0}
#tabbar .tico .ico{width:22px;height:22px;vertical-align:0}

/* ---------- 卡片（v66 定式：主卡=毡面品牌区，次卡=.card，列表行=.list .li） ---------- */
.card{background:var(--card-grad);border-radius:var(--radius);
  box-shadow:inset 0 0 0 1px var(--card-line), var(--shadow-2, var(--shadow));padding:var(--card-pad-sub);margin:0 14px 12px}
.card.tight{padding:calc(var(--card-pad-sub) - 2px)}
.list{background:var(--card-grad);border-radius:var(--radius);
  box-shadow:inset 0 0 0 1px var(--card-line), var(--shadow-2, var(--shadow));margin:0 14px 12px;overflow:hidden}
.list .li{display:flex;align-items:center;gap:12px;padding:var(--card-row-pad);border-bottom:1px solid var(--line);cursor:pointer}
.list .li:last-child{border-bottom:none}
.list .li:active{background:#F6F8FC}
.li-main{flex:1;min-width:0}
.li-title{font-weight:600;font-size:var(--fs-body);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.li-sub{font-size:var(--fs-small);color:var(--ink-3);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chev{color:var(--line-2);flex:none}

/* ---------- 状态标签 ---------- */
/* .pill.green 是「成功／已签到／已结算／有效／启用中」的状态色，2026-09-14 品牌改蓝时刻意
   脱离品牌令牌 --felt-*，改走 --ok-bg／--ok-ink，避免状态语义被品牌色改动带走；
   类名保留 green 不改（realm/*.js 有 26 处按类名渲染，改类名要同时改业务代码与既有测试）。 */
.pill{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:600;padding:2px 8px;border-radius:99px;white-space:nowrap;flex:none}
.pill.green{background:var(--ok-bg);color:var(--ok-ink)}
.pill.gold{background:var(--gold-bg);color:var(--gold-deep)}
.pill.red{background:var(--red-bg);color:var(--red)}
.pill.blue{background:var(--blue-bg);color:var(--blue)}
.pill.gray{background:#EDF0F7;color:var(--ink-2)}
.dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}

/* ---------- 活动类型标签（P1-4：系统标签，克制样式，只用既有主题变量） ---------- */
.act-type{display:inline-flex;align-items:center;font-size:10.5px;font-weight:600;color:var(--felt-700);
  background:var(--felt-100);border-radius:5px;padding:1px 6px;white-space:nowrap;flex:none;vertical-align:2px}

/* ---------- 正式赛事（B9-S3：四色类型标签 + 签到通道出示件） ---------- */
.fe-tag{display:inline-flex;align-items:center;font-size:10.5px;font-weight:700;border-radius:5px;padding:1px 6px;
  white-space:nowrap;flex:none;vertical-align:2px}
.fe-tag.standard{background:var(--felt-100);color:var(--felt-700)}
.fe-tag.invite{background:var(--gold-bg);color:var(--gold-deep)}
.fe-tag.promo{background:var(--blue-bg);color:var(--blue)}
.fe-tag.trial{background:#EDF0F7;color:var(--ink-2)}
.fe-code{font-family:var(--font-disp);font-size:30px;font-weight:800;letter-spacing:.18em;text-align:center;padding:6px 0 2px;color:var(--gold-deep)}

/* ---------- 管理台完整名单展开 / 出示签到码弹层（P1-4） ---------- */
.roster-dt{margin-top:10px;border-top:1px solid var(--line)}
.roster-dt summary{font-size:13px;color:var(--felt-700);cursor:pointer;padding:8px 2px}
.ck-qr-box{display:flex;justify-content:center;padding:8px 0 2px}
.ck-qr-box svg{width:190px;height:auto}

/* ---------- 级牌角标（签名元素） ---------- */
.lvl-card{width:34px;height:44px;border-radius:6px;background:#fff;border:1px solid var(--line-2);
  box-shadow:0 2px 6px rgba(10,20,45,.14);display:flex;flex-direction:column;align-items:center;justify-content:center;
  flex:none;font-family:var(--font-disp);position:relative;overflow:hidden}
.lvl-card::before{content:"";position:absolute;inset:3px;border:1px solid rgba(0,0,0,.06);border-radius:4px}
.lvl-card .rk{font-size:17px;font-weight:800;line-height:1}
.lvl-card .st{font-size:13px;line-height:1.1}
.lvl-card.lv-exp .rk,.lvl-card.lv-exp .st{color:var(--red)}
.lvl-card.lv-std .rk,.lvl-card.lv-std .st{color:var(--ink)}
.lvl-card.lv-fin{background:linear-gradient(160deg,#001A4D,#001040);border-color:#000B2E}
.lvl-card.lv-fin .rk,.lvl-card.lv-fin .st{color:#E8C878}

/* ---------- 按钮 ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:none;border-radius:12px;cursor:pointer;
  font-family:inherit;font-size:15px;font-weight:600;padding:11px 18px;min-height:44px;background:var(--btn-grad);color:#fff;
  box-shadow:var(--btn-glow);transition:filter .15s, box-shadow .15s}
.btn:active{filter:brightness(1.12)}
.btn:disabled{background:#C4C9D6;color:#F1F4FA;cursor:not-allowed;filter:none}
.btn.block{display:flex;width:calc(100% - 28px);margin:14px auto}
.btn.ghost{background:transparent;color:var(--felt-700);box-shadow:inset 0 0 0 1.5px var(--felt-600)}
.btn.ghost:disabled{background:transparent;color:#B4BAC4;box-shadow:inset 0 0 0 1.5px #CBD2E0}
.btn.gold{background:linear-gradient(160deg,#C99B3F,#A87B24)}
.btn.danger{background:var(--red)}
.btn.danger-ghost{background:transparent;color:var(--red);box-shadow:inset 0 0 0 1.5px #E3B1A9}
.btn.sm{min-height:32px;padding:5px 12px;font-size:13px;border-radius:9px}
.btn.xs{min-height:26px;padding:2px 10px;font-size:12px;border-radius:8px}

/* ---------- 表单 ---------- */
.field{margin-bottom:14px}
.field label{display:block;font-size:13px;font-weight:600;color:var(--ink-2);margin-bottom:6px}
.input,select.input,textarea.input{width:100%;border:1.5px solid var(--line-2);border-radius:11px;background:var(--card);
  padding:11px 12px;font-size:15px;font-family:inherit;color:var(--ink);outline:none;appearance:none}
.input:focus{border-color:var(--felt-600);box-shadow:0 0 0 3px rgba(0,32,128,.12)}
.input::placeholder{color:#AEB4C0}
textarea.input{min-height:70px;resize:vertical}
.seg{display:flex;background:var(--seg-bg);border-radius:11px;padding:3px;gap:2px}
.seg button{flex:1;border:none;background:transparent;border-radius:9px;padding:8px 4px;font-size:13.5px;font-weight:600;
  color:var(--ink-2);cursor:pointer;font-family:inherit;min-height:36px}
.seg button.on{background:#fff;color:var(--felt-700);box-shadow:0 1px 4px rgba(10,20,45,.14)}
.check-row{display:flex;align-items:center;gap:10px;padding:11px 12px;border:1.5px solid var(--line-2);border-radius:11px;
  margin-bottom:8px;cursor:pointer;background:var(--card)}
.check-row.on{border-color:var(--felt-600);background:var(--felt-100)}
.check-row .tick{width:20px;height:20px;border-radius:50%;border:1.5px solid var(--line-2);flex:none;
  display:flex;align-items:center;justify-content:center;color:#fff;font-size:12px}
.check-row.on .tick{background:var(--felt-600);border-color:var(--felt-600)}

/* ---------- 赛事卡片 ---------- */
.ev-card{background:var(--card-grad);border-radius:var(--radius);box-shadow:inset 0 0 0 1px var(--card-line), var(--shadow-2, var(--shadow));margin:0 14px 12px;padding:13px 14px;
  display:flex;gap:12px;cursor:pointer;position:relative}
.ev-card:active{background:var(--card-soft)}
.ev-body{flex:1;min-width:0}
.ev-title{font-weight:700;font-size:15.5px;line-height:1.35}
.ev-meta{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:12.5px;color:var(--ink-3);margin-top:6px}
.ev-foot{display:flex;align-items:center;gap:8px;margin-top:8px}
.quota-bar{height:5px;border-radius:3px;background:var(--seg-bg);flex:1;overflow:hidden}
.quota-bar i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,#2f7fe0,#1f63c0)}
.quota-bar i.full{background:linear-gradient(90deg,#D08A35,#B8722A)}

/* ---------- 底部 TabBar ---------- */
#tabbar{position:sticky;bottom:0;z-index:30;display:flex;background:var(--tabbar-bg);backdrop-filter:blur(10px);
  border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom,0px);height:var(--tab-h)}
#tabbar.hidden{display:none}
#tabbar button{flex:1;border:none;background:none;cursor:pointer;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:2px;font-family:inherit;color:var(--ink-3);font-size:10.5px;position:relative}
#tabbar button .tico{font-size:20px;line-height:1}
#tabbar button.on{color:var(--felt-700);font-weight:700}
#tabbar button .bdg{position:absolute;top:6px;right:calc(50% - 20px);min-width:16px;height:16px;border-radius:8px;
  background:var(--red);color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;padding:0 4px}

/* ---------- 头像 / 奖牌 ---------- */
.avatar{width:42px;height:42px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;
  font-weight:700;color:#fff;font-size:16px;background:var(--felt-600)}
.avatar.lg{width:56px;height:56px;font-size:20px}
.avatar.sm{width:30px;height:30px;font-size:12px}
.medal{width:30px;height:30px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;
  font-size:14px;font-weight:800;font-family:var(--font-disp)}
.medal.m1{background:linear-gradient(160deg,#F2CE6B,#C9992B);color:#6B4E0E}
.medal.m2{background:linear-gradient(160deg,#Dfe5e8,#AEBCC4);color:#4E5D66}
.medal.m3{background:linear-gradient(160deg,#E5B98A,#B97F45);color:#5E3711}
.medal.mx{background:#EEF0F7;color:var(--ink-3)}

/* ---------- 段位 ---------- */
.tier-badge{display:inline-flex;align-items:center;gap:5px;background:var(--gold-bg);color:var(--gold-deep);
  border-radius:8px;padding:2px 9px;font-weight:700;font-size:13px}
.tier-ladder{display:flex;gap:4px;margin-top:10px}
.tier-step{flex:1;height:8px;border-radius:4px;background:#E8EBF3}
.tier-step.done{background:linear-gradient(90deg,#C99B3F,#B8892F)}
.tier-step.cur{outline:2px solid rgba(184,137,47,.35);background:linear-gradient(90deg,#C99B3F,#B8892F)}

/* ---------- 排名列表 ---------- */
.rank-row{display:flex;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px solid var(--line)}
.rank-row:last-child{border-bottom:none}
.rank-no{width:30px;text-align:center;font-family:var(--font-disp);font-size:17px;font-weight:800;color:var(--ink-2);flex:none}
.delta{font-size:11px;font-weight:700}
.delta.up{color:var(--ok-ink)}.delta.down{color:var(--red)}.delta.flat{color:var(--ink-3)}
.pts{font-family:var(--font-disp);font-weight:800;font-size:16px;color:var(--felt-700);flex:none;min-width:44px;text-align:right}

/* ---------- 牌桌编排 ---------- */
.table-card{border:1.5px solid var(--line);border-radius:var(--radius-s);padding:11px 12px;margin-bottom:10px;background:var(--card-soft)}
.table-card .tb-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.table-card .tb-head b{color:var(--felt-700)}
.seats{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.seat{display:flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--line);border-radius:9px;padding:7px 9px}
.seat .avatar{width:28px;height:28px;font-size:11px}
.seat .pinfo{min-width:0}
.seat .pinfo b{display:block;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.seat .pinfo span{font-size:10.5px;color:var(--ink-3)}
.pair-tag{font-size:10px;color:#fff;background:var(--felt-600);border-radius:4px;padding:1px 5px}
.pair-tag.b{background:var(--gold)}

/* ---------- 游数提交 ---------- */
.pos-btns{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.pos-btns button{border:1.5px solid var(--line-2);background:var(--card);border-radius:11px;padding:10px 2px;cursor:pointer;
  font-family:inherit;font-size:13.5px;font-weight:700;color:var(--ink-2)}
.pos-btns button.on{border-color:var(--felt-600);background:var(--felt-100);color:var(--felt-700)}
.pos-btns button b{display:block;font-size:17px;font-family:var(--font-disp)}
.round-chip{display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:26px;border-radius:8px;
  background:var(--felt-100);color:var(--felt-700);font-weight:700;font-size:13px;padding:0 6px}

/* ---------- 筛选条 ---------- */
.filters{display:flex;gap:8px;overflow-x:auto;padding:10px 14px 4px;scrollbar-width:none}
.filters::-webkit-scrollbar{display:none}
.fchip{flex:none;border:1px solid var(--line-2);background:var(--card);border-radius:99px;padding:6px 13px;font-size:13px;
  color:var(--ink-2);cursor:pointer;font-family:inherit}
.fchip.on{background:var(--felt-700);border-color:var(--felt-700);color:#fff;font-weight:600}
/* 单场闭环批次第 4 条：发布门禁未就绪的承办场次标签（发布被 422 拒绝后按服务端 fieldErrors 标出） */
.fchip.is-error{border-color:var(--red);color:var(--red)}
.fchip.is-error.on{border-color:var(--red);background:var(--red);color:#fff}

/* ---------- 空态 ---------- */
.empty{text-align:center;padding:44px 30px;color:var(--ink-3)}
.empty .eico{font-size:40px;margin-bottom:10px;opacity:.7}
.empty p{font-size:var(--fs-small)}

/* ---------- Toast / Sheet / Modal ---------- */
#layer-toast{position:absolute;left:0;right:0;bottom:calc(var(--tab-h) + 24px);display:flex;justify-content:center;
  pointer-events:none;z-index:90}
.toast{background:rgba(20,24,36,.92);color:#fff;padding:10px 18px;border-radius:99px;font-size:13.5px;max-width:86%;
  animation:toastin .22s ease;box-shadow:0 6px 20px rgba(0,0,0,.25)}
.toast.err{background:rgba(150,40,28,.95)}
@keyframes toastin{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* ---------- 演示数据角标（B8 切片 C；演示模式专用，真实模式不渲染） ---------- */
/* 只用既有主题令牌，不新增；置于内容层之上、弹层（80/90）之下，弹窗打开时被覆盖不打扰 */
.demo-badge{position:fixed;right:10px;bottom:calc(var(--tab-h) + 12px);z-index:40;pointer-events:none;
  background:var(--gold-bg);color:var(--gold-deep);border:1px solid var(--gold);border-radius:999px;
  padding:4px 12px;font-size:11px;font-weight:700;letter-spacing:.08em;box-shadow:var(--shadow);opacity:.94}
#layer-sheet,#layer-modal{position:absolute;inset:0;z-index:80;display:flex;flex-direction:column;justify-content:flex-end}
#layer-sheet[hidden],#layer-modal[hidden]{display:none}
#layer-modal{justify-content:center;padding:26px}
.mask{position:absolute;inset:0;background:rgba(12,16,30,.45);animation:fadein .2s ease}
@keyframes fadein{from{opacity:0}to{opacity:1}}
.sheet-box{position:relative;background:var(--card);border-radius:20px 20px 0 0;max-height:82%;display:flex;flex-direction:column;
  animation:sheetup .26s cubic-bezier(.2,.8,.25,1)}
@keyframes sheetup{from{transform:translateY(40%)}to{transform:none}}
.sheet-head{display:flex;align-items:center;justify-content:space-between;padding:15px 18px 8px}
.sheet-head b{font-size:16.5px}
.sheet-body{overflow-y:auto;padding:6px 18px calc(20px + env(safe-area-inset-bottom,0px))}
.modal-box{position:relative;background:var(--card);border-radius:18px;padding:20px 18px;max-height:80%;overflow-y:auto;animation:modalin .2s ease}
@keyframes modalin{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}
.modal-box h3{font-size:16.5px;margin-bottom:10px}

/* ---------- 公告横滑 ---------- */
.notice-strip{display:flex;gap:10px;overflow-x:auto;padding:2px 14px 6px;scroll-snap-type:x mandatory;scrollbar-width:none}
.notice-strip::-webkit-scrollbar{display:none}
.notice{flex:0 0 82%;scroll-snap-align:start;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18);
  border-radius:12px;padding:11px 13px;color:#fff}
.notice b{font-size:13.5px;display:flex;gap:6px;align-items:center}
.notice p{font-size:12px;opacity:.82;margin-top:3px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* ---------- 进度/统计 ---------- */
.stat3{display:flex;text-align:center}
.stat3>div{flex:1}
.stat3 b{display:block;font-family:var(--font-disp);font-size:21px;font-weight:800}
.stat3 span{font-size:11.5px;color:var(--ink-3)}
.stat3>div+div{border-left:1px solid var(--line)}

@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* 场地接待与具体任务的触控区；不改变其他现场页的密度。 */
.venue-workspace .venue-task-links .btn,
.venue-workspace .venue-task-content .btn,
.venue-workspace .venue-task-content .seg button,
.venue-workspace .venue-task-back .btn { min-height:44px; min-width:44px; padding:10px 14px; font-size:14px; }
.venue-task-back { margin:12px 14px; }
.venue-task-back .btn { display:inline-flex; align-items:center; text-decoration:none; }
.venue-task-content { margin:0 0 14px; }
.venue-task-content .row { flex-wrap:wrap; row-gap:10px; }
.venue-task-content .li { flex-wrap:wrap; }
.venue-task-content .li > .row { flex-basis:100%; }
.venue-task-content [data-ra-root] > .sec:first-child { gap:10px; align-items:flex-start; }
.venue-task-content [data-ra-root] > .sec:first-child > .h2 { flex:none; white-space:nowrap; }
.venue-task-content > .rc-check-area { margin:0 14px; padding:14px; border:1px solid var(--line); border-radius:14px; background:var(--card); }
.venue-task-content .rc-check-area input[type="date"] { min-height:44px; font-size:14px; }
.venue-preparation { margin:14px 14px 0; border:1px solid var(--line); border-radius:12px; background:var(--card); }
.venue-preparation > summary { min-height:44px; padding:12px 14px; font-size:13px; color:var(--ink-2); cursor:pointer; }
.venue-preparation .rc-card { margin:0; border:0; }
.pa-home a.pa-entry { display:block; color:inherit; text-decoration:none; }
.pa-home a.pa-entry:focus-visible { outline:2px solid var(--gold); outline-offset:2px; }
.pa-home + .sec + .list a.li { color:inherit; text-decoration:none; }
.pa-home + .sec + .list a.li:focus-visible { outline:2px solid var(--gold); outline-offset:2px; }
:focus-visible{outline:2px solid var(--felt-600);outline-offset:2px}

/* 修正：卡片与毡面同用时的背景优先级 */
.card.felt{background:var(--hero-bg)}

/* ---------- 主题系统（data-theme 覆盖令牌；默认深海军蓝见 :root） ---------- */
/* 只有默认主题跟随 2026-09-14 品牌改蓝；ink／bgold／xuan 三套主题自身配色与名称原样保留，
   但它们同样需要 --ok-bg／--ok-ink，否则 .pill.green 等语义药丸会回落到默认主题的绿色药丸。 */
html[data-theme="ink"]{
  --body-tint:rgba(201,155,63,.07);
  --hero-bg:
    radial-gradient(85% 55% at 80% -10%, rgba(201,155,63,.20), transparent 60%),
    radial-gradient(120% 80% at 50% -25%, rgba(255,255,255,.06), transparent 55%),
    radial-gradient(150% 120% at 50% 125%, rgba(0,0,0,.40), transparent 62%),
    linear-gradient(168deg,#1C252C,#131A20 55%,#0C1116);
  --card-grad:linear-gradient(180deg,#1F272E,#181F25);
  --card-line:rgba(255,255,255,.07);
  --btn-grad:linear-gradient(180deg,#27956A,#1F8158);
  --btn-glow:0 4px 14px rgba(31,129,88,.35);
  --todo-bg:#241F12;
  --paper:#12171A; --card:#1A2024; --card-soft:#20272C; --seg-bg:#242C31;
  --ink:#E6ECE8; --ink-2:#9FB0A6; --ink-3:#74867B;
  --line:#2A3237; --line-2:#3A444B;
  --felt-900:#0E1512; --felt-700:#1F8158; --felt-600:#27956A; --felt-100:#17352A;
  --ok-bg:#17352A; --ok-ink:#1F8158;
  --gold:#C99B3F; --gold-bg:#2E2718; --gold-deep:#D9B36A;
  --red:#D2604E; --red-bg:#3A211D; --blue:#6FA8D8; --blue-bg:#1C2C3A;
  --body-bg:#0C1012; --topbar-bg:rgba(18,23,26,.92); --tabbar-bg:rgba(26,32,36,.96);
  --felt-a:#14352A; --felt-glow:rgba(201,155,63,.18); --shadow-c:0,0,0;
}
html[data-theme="bgold"]{
  --body-tint:rgba(43,80,214,.20);
  --hero-bg:
    radial-gradient(70% 45% at 50% -12%, rgba(140,170,255,.40), transparent 62%),
    radial-gradient(85% 55% at 84% -8%, rgba(245,197,24,.24), transparent 60%),
    radial-gradient(150% 120% at 50% 125%, rgba(2,6,26,.55), transparent 62%),
    linear-gradient(168deg,#12309A,#0B1F6E 55%,#081542);
  --card-grad:linear-gradient(180deg,#172A7E,#12225E);
  --card-line:rgba(140,170,255,.15);
  --btn-grad:linear-gradient(180deg,#F6CD3C,#E3B50D);
  --btn-glow:0 4px 16px rgba(232,185,15,.40);
  --todo-bg:#2C260D;
  --paper:#0B1B4D; --card:#13256B; --card-soft:#182F7A; --seg-bg:#1D3580;
  --ink:#F2F6FF; --ink-2:#A8BCE8; --ink-3:#7286BC;
  --line:#233A85; --line-2:#2F4AA0;
  --felt-900:#081238; --felt-700:#E8B90F; --felt-600:#F6CD3C; --felt-100:#1B3480;
  --ok-bg:#1B3480; --ok-ink:#E8B90F;
  --gold:#E5C878; --gold-bg:#322B10; --gold-deep:#E5C878;
  --red:#FF6A55; --red-bg:#3D1E1E; --blue:#7FA8FF; --blue-bg:#1A2C5E;
  --body-bg:#071031; --topbar-bg:rgba(9,20,58,.92); --tabbar-bg:rgba(12,24,66,.96);
  --felt-a:#0E2B8A; --felt-glow:rgba(245,197,24,.22); --shadow-c:0,0,0;
}
/* 深蓝鎏金：金色主按钮配深蓝文字，勾选圆点同理 */
html[data-theme="bgold"] .felt::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.55;
  background-image:
    radial-gradient(1px 1px at 25px 35px, rgba(255,255,255,.55), transparent 60%),
    radial-gradient(1px 1px at 75px 80px, rgba(255,255,255,.32), transparent 60%),
    radial-gradient(1.5px 1.5px at 130px 50px, rgba(255,220,120,.5), transparent 60%),
    radial-gradient(1px 1px at 170px 120px, rgba(255,255,255,.28), transparent 60%);
  background-size:200px 150px}
html[data-theme="bgold"] .btn{color:#12225E}
html[data-theme="bgold"] .btn.ghost{color:#F6CD3C}
html[data-theme="bgold"] .check-row.on .tick{color:#12225E}
html[data-theme="bgold"] .pos-btns button.on{color:#F6CD3C}

html[data-theme="xuan"]{
  --body-tint:rgba(168,132,47,.09);
  --hero-bg:
    radial-gradient(85% 55% at 82% -8%, rgba(196,150,60,.20), transparent 60%),
    radial-gradient(120% 80% at 50% -25%, rgba(255,255,255,.50), transparent 55%),
    radial-gradient(150% 120% at 50% 125%, rgba(120,100,60,.18), transparent 62%),
    linear-gradient(168deg,#5F704F,#46543F 55%,#3A4633);
  --card-grad:linear-gradient(180deg,#FFFEFA,#FBF6EA);
  --card-line:rgba(120,100,60,.10);
  --btn-grad:linear-gradient(180deg,#5A6B52,#46543F);
  --btn-glow:0 4px 14px rgba(74,90,68,.35);
  --paper:#F5F1E8; --card:#FFFDF8; --card-soft:#FAF6ED; --seg-bg:#EFE9DC;
  --ink:#2B2A26; --ink-2:#6B675C; --ink-3:#9B958A;
  --line:#E5DFD2; --line-2:#D5CDBC;
  --felt-900:#39433A; --felt-700:#4A5A44; --felt-600:#5A6B52; --felt-100:#EDEAE0;
  --ok-bg:#EDEAE0; --ok-ink:#4A5A44;
  --gold:#A8842F; --gold-bg:#F3ECD9; --gold-deep:#8A6B22;
  --red:#B23A2A; --red-bg:#F7E9E5; --blue:#3A648A; --blue-bg:#E7EEF4;
  --body-bg:#E8E2D5; --topbar-bg:rgba(245,241,232,.92); --tabbar-bg:rgba(255,253,248,.96);
  --felt-a:#55654D; --felt-glow:rgba(168,132,47,.14); --shadow-c:60,55,40;
}

/* ---------- 成绩表格视图 ---------- */
.gtable{width:100%;border-collapse:collapse;font-size:12.5px;background:var(--card)}
.gtable th,.gtable td{border:1px solid var(--line);padding:6px 4px;text-align:center;white-space:nowrap}
.gtable th{background:var(--felt-100);color:var(--felt-700);font-weight:700}
.gtable td.nm{text-align:left;padding-left:8px;max-width:120px;overflow:hidden;text-overflow:ellipsis}
.gtable td.win{color:var(--felt-700);font-weight:700}
.gtable td.loss{color:var(--ink-3)}
.gtable td.total{background:#FBFCFE;font-weight:800;font-family:var(--font-disp)}
.gtable tr.me td{background:var(--felt-100)}
.tbl-wrap{overflow-x:auto;margin:0 14px 12px;border-radius:var(--radius);box-shadow:var(--shadow)}

/* ---------- FE-ROTATION-LIVE-001：轮转选手比赛页（桌台图 / 状态精简 / 完成顺序 / 奖品入口） ----------
   已确认设计图为 doc/前端修改意见.md 所述第二版修订图；此处沿用既有主题令牌
   （品牌蓝 --felt-*、黄铜 --gold-*、--radius、--fs-*），不新增配色体系。
   v67（2026-09-14 品牌改蓝）关键取舍：本页牌桌是真实牌桌的俯视表达，发起人明确要求
   「牌桌毡面保持绿色」，故 .mt-felt 的绿毡渐变与 .mt-board 木边在此写死为原绿色值，
   不再跟随 --felt-* 令牌；牌桌上的徽章/药丸/本人环等品牌装饰仍随令牌改蓝。
   视角换算在 realm/match.js 完成：本人在下方槽位，.mt-seat-top/right/bottom/left 四个槽位
   由真实方位旋转得到（南位视角＝左西右东，保持真实左右手关系）。 */
.mt-head-title{font-weight:700}
.mt-stage{position:relative;margin:0 14px;padding:42px 0 54px}
.mt-board{position:relative;margin:0 42px;padding:7px;border-radius:30px;
  background:linear-gradient(180deg,#9E6C39,#5E3C1D 60%,#4A2E14);
  box-shadow:0 10px 22px rgba(10,20,45,.22),inset 0 1px 0 rgba(255,255,255,.32),inset 0 -2px 5px rgba(0,0,0,.30)}
/* 俯视绿毡桌面：宽度随容器、高度按 1.6 比例（不能同时钉死 height，否则 aspect-ratio 会反过来
   撑宽桌面并造成横向溢出）；不支持 aspect-ratio 的环境用 @supports 兜底固定高度。
   v67 品牌改蓝时此处故意不动：真实牌桌就是绿毡，木边 #9E6C39 也保留（发起人明确要求）。 */
.mt-felt{position:relative;width:100%;aspect-ratio:1.6;border-radius:24px;
  background:
    radial-gradient(120% 130% at 50% -15%, rgba(255,255,255,.13), transparent 58%),
    radial-gradient(90% 120% at 50% 125%, rgba(0,0,0,.20), transparent 62%),
    linear-gradient(180deg,#178A56,#0A5E3C);
  box-shadow:inset 0 4px 14px rgba(0,0,0,.30)}
@supports not (aspect-ratio:1.6){ .mt-felt{height:150px} }

/* 四个座位槽位（头像 + 方位·关系标记 + 脱敏姓名 + 游数/阶段状态） */
.mt-seat{position:absolute;z-index:2;width:92px;display:flex;flex-direction:column;align-items:center;gap:2px}
.mt-seat-top{left:50%;top:-32px;transform:translateX(-50%)}
.mt-seat-bottom{left:50%;bottom:-34px;transform:translateX(-50%)}
.mt-seat-left{left:-42px;top:50%;transform:translateY(-50%)}
.mt-seat-right{right:-42px;top:50%;transform:translateY(-50%)}
.mt-avatar{width:46px;height:46px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;
  background:#F1F3F9;color:#9AA0AC;box-shadow:0 0 0 3px #fff,0 4px 10px rgba(10,20,45,.22)}
.mt-avatar .ico{width:24px;height:24px}
.mt-seat.is-me .mt-avatar{background:#E8F0FB;color:var(--felt-600);
  box-shadow:0 0 0 2px #fff,0 0 0 4px var(--felt-600),0 4px 10px rgba(10,20,45,.22)}
.mt-badge{max-width:104px;padding:1px 8px;border-radius:99px;font-size:10.5px;font-weight:700;color:#fff;
  background:#7C818A;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mt-badge.partner{background:var(--felt-600)}
.mt-badge.me{background:var(--felt-700)}
/* 上/下座位把方位标记放在头像右侧（同设计图）；左右座位放在头像上方，避免贴边溢出 */
.mt-seat-top .mt-badge,.mt-seat-bottom .mt-badge{position:absolute;top:3px;left:calc(50% + 13px)}
.mt-name{max-width:92px;padding:1px 9px;border-radius:99px;background:var(--card);color:var(--ink);
  font-size:12.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  box-shadow:0 1px 4px rgba(10,20,45,.16)}
.mt-value{padding:1px 9px;border-radius:99px;background:var(--felt-600);color:#fff;font-size:11px;font-weight:700;white-space:nowrap}
.mt-value.proxy{background:var(--blue)}
.mt-value.empty{background:#EDF0F7;color:var(--ink-3);font-weight:600}
.mt-tag{padding:1px 9px;border-radius:99px;background:var(--seg-bg);color:var(--ink-2);font-size:11px;font-weight:600;white-space:nowrap}
.mt-tag.ready{background:var(--felt-100);color:var(--felt-700)}

/* 桌面中央：第几副 / 共几副，以及真实阶段（不用假进度）。
   padding-bottom 把中央文案抬离底部座位的姓名/游数，窄屏同样留出净空。 */
.mt-center{position:absolute;inset:0;padding:0 10px 20px;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:7px;text-align:center;pointer-events:none}
.mt-center p{display:flex;flex-wrap:nowrap;align-items:baseline;justify-content:center;gap:6px;color:#fff;white-space:nowrap}
.mt-center b{font-family:var(--font-disp);font-size:19px;font-weight:800;letter-spacing:.02em}
.mt-center span{font-size:13px;color:rgba(255,255,255,.85)}
.mt-center i{width:58px;height:1px;background:rgba(255,255,255,.32)}
.mt-center em{font-size:12px;font-style:normal;color:rgba(255,255,255,.82)}

/* 本副出完顺序（只列服务端有效记录；撤销过的尝试不在这里） */
.mt-order{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 14px 12px}
.mt-order-label{font-size:12px;color:var(--ink-3)}

/* 我的本副记录 */
.mt-mine{padding-bottom:10px}
.mt-mine-state{display:block;padding:2px 2px 10px;font-size:var(--fs-body);font-weight:700;line-height:1.5}
.mt-mine-state.done{font-family:var(--font-disp);font-size:20px;color:var(--felt-700)}
.mt-check{display:inline-flex;align-items:center;margin-right:8px;vertical-align:-4px}
.mt-check .ico{width:22px;height:22px;color:var(--felt-600)}
.mt-mine .btn.block{width:100%;margin:0 0 10px}
.mt-mine-note{text-align:center;margin:-2px 0 2px}
.mt-mine-locked{margin-top:10px;padding:8px 10px;border-radius:var(--radius-s);background:var(--gold-bg);
  color:var(--gold-deep);font-size:11.5px;line-height:1.5}
.mt-mine-acts{margin-top:10px;border-top:1px solid var(--line)}
.mt-mine-row{display:flex;align-items:center;gap:8px;width:100%;padding:11px 2px;border:none;border-bottom:1px solid var(--line);
  background:none;font-family:inherit;font-size:14px;color:var(--ink);text-align:left;cursor:pointer}
.mt-mine-row:last-child{border-bottom:none}
.mt-mine-row .ico{width:18px;height:18px;color:var(--red);flex:none}
.mt-mine-row b{flex:1;font-weight:600}
.mt-mine-row .chev{font-size:16px}
.mt-pos-row{margin-top:0}

/* 本场奖品入口（活动确有奖品政策才出现；无奖品隐藏，加载失败另有提示） */
.mt-prize{display:flex;align-items:center;gap:9px;width:calc(100% - 28px);margin:0 14px 12px;padding:12px 14px;
  border:1px solid #E4D3A0;border-radius:var(--radius);background:linear-gradient(180deg,#FFF9E9,#FCF2DA);
  color:var(--gold-deep);font-family:inherit;font-size:14px;cursor:pointer;box-shadow:var(--shadow)}
.mt-prize .ico{width:20px;height:20px;flex:none}
.mt-prize b{font-weight:700}
.mt-prize-go{margin-left:auto;font-size:12.5px;font-weight:600;white-space:nowrap}
.mt-prize-failed{margin:0 14px 12px;padding:9px 12px;border-radius:var(--radius-s);background:var(--seg-bg);color:var(--ink-2)}
.mt-prize-retry{padding:0 2px;border:none;background:none;color:var(--felt-700);font-family:inherit;
  font-size:11.5px;font-weight:700;text-decoration:underline;cursor:pointer}

/* 五副成绩：副次 / 我方游数 / 对方游数 / 状态（我方=本人与搭档；未在座时按北南、东西） */
.mt-deals-wrap{margin:0 14px 8px;border-radius:var(--radius);overflow:hidden;background:var(--card);
  box-shadow:inset 0 0 0 1px var(--card-line),var(--shadow-2,var(--shadow))}
.mt-deals{width:100%;border-collapse:collapse;table-layout:fixed;font-size:12.5px}
.mt-deals th{padding:7px 4px;background:#F5F7FB;color:var(--ink-3);font-size:12px;font-weight:600;text-align:center}
.mt-deals td{padding:9px 4px;border-top:1px solid var(--line);text-align:center;color:var(--ink)}
.mt-deals th:first-child,.mt-deals td:first-child{width:64px;padding-left:12px;text-align:left}
.mt-deals th:last-child,.mt-deals td:last-child{width:84px}
.mt-deals tr.cur{background:var(--felt-100)}
.mt-deal-no{font-weight:700;white-space:nowrap}
.mt-deal-vals{font-family:var(--font-disp);font-weight:700}
.mt-deal-win{display:block;margin-top:3px;font-size:11px;font-weight:700;color:var(--felt-700)}
.mt-deals-empty{padding:18px 0!important;color:var(--ink-3)}
.mt-deals-note{margin:0 14px 12px}

@media (max-width:360px){
  .mt-board{margin:0 36px;padding:6px;border-radius:26px}
  .mt-felt{border-radius:20px;min-height:132px}
  .mt-seat{width:78px}
  .mt-seat-bottom{bottom:-30px}
  .mt-avatar{width:40px;height:40px}
  .mt-avatar .ico{width:21px;height:21px}
  .mt-seat-left{left:-36px}
  .mt-seat-right{right:-36px}
  .mt-name{max-width:78px;font-size:12px;padding:1px 7px}
  .mt-badge{max-width:88px;font-size:10px}
  .mt-value,.mt-tag{font-size:10.5px;padding:1px 7px}
  .mt-center{padding:0 8px 30px}
  .mt-center b{font-size:17px}
  .mt-center span,.mt-center em{font-size:11.5px}
  .mt-deals th:first-child,.mt-deals td:first-child{width:56px;padding-left:9px}
  .mt-deals th:last-child,.mt-deals td:last-child{width:76px}
  .mt-deals th{font-size:11px}
}

/* ---------- 打印：桌贴页（realm/venues.js 的 ss-* 结构）只输出一页四贴 ----------
   桌贴页此前在样式表里没有任何 ss-* 定义，点击「打印 / 另存 PDF（A4 一页四贴）」时，
   打印口径只剩 formal-score.css 的 body * 隐藏 → 出空白纸；即使显示出来，四贴也是
   430px 宽逐张纵排（约 2.3 页，贴纸被页边切断）。
   这里沿用既有打印口径（body * 隐藏 + .no-print 不打印 + 打印目标绝对定位），
   补上桌贴页自己的打印范围与 A4 一页四贴版式；屏幕态样式不在本批范围。
   外壳复位用 :has(.ss-print-area) 限定，只在桌贴页生效，不改成绩码等其它打印页。
   markup 契约：一桌四贴 = 服务端 seatLocators 的四个方位码（N/E/S/W），2×2 恰好一页。 */
@media print {
  @page{size:A4 portrait;margin:7mm}
  html,body{background:#fff}
  .no-print,.ss-topbar-hide,.ss-st-dl{display:none!important}

  /* 打印范围：应用外壳、导航、按钮与非桌贴区块一律不出现在纸上 */
  body *{visibility:hidden}
  .ss-print-area,.ss-print-area *{visibility:visible}
  .ss-print-area{position:absolute;left:0;top:0;width:100%;margin:0;padding:0;background:#fff}

  /* 外壳复位（仅桌贴页）：撤掉手机框居中/圆角/高度与 #screen 内滚动，避免被裁切或溢出到第二页 */
  body:has(.ss-print-area){display:block;padding:0}
  body:has(.ss-print-area) #phone{display:block;width:auto;max-width:none;min-height:0;border-radius:0;overflow:visible;background:#fff;box-shadow:none}
  body:has(.ss-print-area) #screen{overflow:visible;padding:0}
  body:has(.ss-print-area) #tabbar{display:none!important}

  /* A4 一页四贴：页边距 7mm → 196×283mm 可印区；纸张实测 194×280mm，留 3mm 余量 */
  .ss-sheet{width:194mm;height:280mm;margin:0 auto;padding:0;overflow:hidden}
  .ss-sheet-title{height:10mm;margin:0;color:#000;font-size:12pt;font-weight:700;line-height:10mm;text-align:center}
  .ss-stickers{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:4mm;height:243mm}
  .ss-sticker{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;padding:4mm;border:1px solid #9eb5d1;border-radius:3mm;background:#fff;color:#000;text-align:center;box-shadow:none;break-inside:avoid;page-break-inside:avoid}
  .ss-st-venue{font-size:8.5pt;line-height:1.4}
  .ss-st-table{margin-top:1mm;font-size:10.5pt;font-weight:700}
  .ss-st-dir{margin:2mm 0;font-size:21pt;font-weight:800;line-height:1.15}
  .ss-st-qr{width:42mm;margin:0 auto}
  .ss-st-qr svg{display:block;width:100%;height:auto;background:#fff}
  .ss-st-pair{margin-top:2mm;font-size:8pt;font-weight:700}
  .ss-st-tip{margin-top:1mm;font-size:8pt}

  /* 贴放示意：与四贴同页，不产生第二页 */
  .ss-map{display:flex;align-items:center;justify-content:center;gap:8mm;height:23mm;margin:2mm 0 0;padding:0 4mm;border:0;border-radius:0;background:#fff;color:#000}
  .ss-map-t{margin:0;font-size:8pt;font-weight:700}
  .ss-map-box{position:relative;width:42mm;height:20mm;border:1px solid #9eb5d1;border-radius:2mm;background:#fff;font-size:7.5pt;font-weight:700}
  .ss-map-n,.ss-map-e,.ss-map-s,.ss-map-w,.ss-map-c{position:absolute}
  .ss-map-n{top:1mm;left:50%;transform:translateX(-50%)}
  .ss-map-e{right:1.5mm;top:50%;transform:translateY(-50%)}
  .ss-map-s{bottom:1mm;left:50%;transform:translateX(-50%)}
  .ss-map-w{left:1.5mm;top:50%;transform:translateY(-50%)}
  .ss-map-c{left:50%;top:50%;transform:translate(-50%,-50%)}
}

/* 认证页：与既有品牌共用颜色，表单保持可读文字和完整触控面积。 */
.auth-ui .login-hero{padding:28px 18px 22px}
.auth-ui .login-body{padding:18px 18px 24px}
.auth-ui>.topbar>button.icon-btn{width:44px;height:44px;min-width:44px;min-height:44px}
.auth-ui .input{font-size:16px;min-height:48px;min-width:0}
.auth-ui .input::placeholder{color:var(--ink-3);opacity:1}
.auth-ui .btn.block{width:100%;min-height:48px;font-size:16px;margin:18px 0 0}
.auth-ui button.btn,.auth-ui a.btn,.auth-ui button.btn.sm,.auth-ui button.btn.ghost,.auth-ui .seg button{min-height:44px;min-width:44px;white-space:normal;line-height:1.4}
.auth-ui button.btn.sm{padding:10px 12px;font-size:14px}
.auth-ui .seg button{font-size:15px}
.auth-ui .row>.input{flex:1;width:0;min-width:0}
.auth-ui .row>button{flex:none}
.auth-password-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:start}
.auth-ui .auth-password-toggle{min-width:64px;min-height:48px;padding:10px 12px;font-size:14px}
.auth-register-switch,.auth-links{display:flex;flex-wrap:wrap;align-items:center;gap:8px;justify-content:space-between}
.auth-register-switch{font-size:14px;color:var(--ink-2);margin:4px 0 14px}
.auth-ui .auth-links{justify-content:center;margin-top:18px;gap:10px 20px}
.auth-ui .auth-links .btn{box-shadow:none}
.auth-page-head{padding:24px 18px 12px}
.auth-page-head h1{margin:0 0 8px;font-size:24px;line-height:1.35;color:var(--ink);font-weight:750}
.auth-page-head p{margin:0;color:var(--ink-2);font-size:14px;line-height:1.65}
.auth-form-body{padding:10px 18px 28px}
.auth-field-error{margin:6px 0 0;color:#A62B28;font-size:13px;line-height:1.5;overflow-wrap:anywhere}
.auth-field-error[hidden],.auth-ui [hidden]{display:none}
.auth-status{margin:12px 0 0;color:var(--ink-2);font-size:14px;line-height:1.6;overflow-wrap:anywhere}
.auth-status:empty{display:none}
.auth-notice{margin:0 0 16px;padding:12px;border:1px solid var(--line-2);border-radius:12px;color:var(--ink-2);font-size:14px;line-height:1.6}
.auth-notice .btn{margin-top:8px}
.auth-ui button:focus-visible,.auth-ui a:focus-visible{outline:2px solid var(--felt-700);outline-offset:3px}
.auth-ui .input[aria-invalid="true"]{border-color:#A62B28}
/* 场地工作台的现有小按钮和确认操作，限定在该工作区。 */
.venue-workspace button.btn.xs,.venue-workspace button.btn.sm{min-height:44px;min-width:44px;padding:10px 12px;font-size:14px;white-space:normal;max-width:100%;line-height:1.4}
.venue-workspace .row{flex-wrap:wrap}
.venue-workspace button:focus-visible,.venue-workspace a:focus-visible{outline:2px solid var(--felt-700);outline-offset:3px}
@media(prefers-reduced-motion:reduce){.auth-ui button,.auth-ui a{transition:none}}


/* source: css/home.css */
/* U3a 首页视觉对齐：深蓝页头、滑动广告、竞技状态三栏与带图资讯列表。
   参考图 docs/design-references/home-candidate-3-20260909.png；素材只用纯 CSS 与内联 SVG。
   2026-09-14 品牌色由绿改蓝：本文件 --home-* 令牌全部改为深海军蓝族（#002080／#001040／
   #e8f0fb／#0b2a63），语义状态色（进行中等）另走 --ok-bg／--ok-ink 保留绿色。 */
.home-page{
  min-height:100%;
  color:var(--ink);
  background:#fafbfe;
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","HarmonyOS Sans SC","Microsoft YaHei",sans-serif;
  --home-brand:#002080;
  --home-brand-deep:#001040;
  --home-mint:#e8f0fb;
  --home-mint-ink:#0b2a63;
  --home-amber:#fff4e0;
  --home-amber-ink:#a9660a;
  --home-muted:#6d746e;
  --home-line:#e8ecf4;
  --home-card:#fff;
}
.home-page *{box-sizing:border-box;font-family:inherit}
.home-page button{font:inherit}
.home-page main{padding:0 0 18px}

/* 顶栏：深蓝底、金色黑桃、白字，无额外装饰线 */
.home-header{
  min-height:52px;
  padding:0 17px;
  display:flex;
  align-items:center;
  color:#fff;
  background:var(--home-brand);
}
/* 品牌栏：平台改名后共 19 字，18px 在 320/390 都会溢出。字号按宽度自适应
   （390 正常、320 缩小），一行放不下走省略号；完整名称在 title／aria-label（realm/home.js）。 */
.home-brand{display:flex;flex:1;align-items:center;gap:9px;min-width:0;font-size:13px;font-weight:800;letter-spacing:0}
@media (min-width:361px){ .home-brand{font-size:15px;letter-spacing:.01em} }
@media (min-width:430px){ .home-brand{font-size:16px;letter-spacing:.02em} }
.home-brand .ico{width:19px;height:19px;flex:none;color:#e9cd85}
.home-brand span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.home-competitive,.home-news{margin:0;background:var(--home-card)}
.home-competitive{padding:15px 16px 14px;border-bottom:1px solid var(--home-line)}
.home-news{padding:14px 14px 18px}
.home-section-title{
  min-height:34px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
.home-section-title>div{min-width:0}
.home-section-title h1,.home-section-title h2{margin:0;font-size:18px;font-weight:800;line-height:1.25;letter-spacing:.01em}
.home-section-title h2 a{color:inherit;text-decoration:none}
.home-status-user{color:var(--home-brand-deep)}
.home-status-identity{display:flex;align-items:center;gap:10px;min-width:0}
.home-status-identity>div{min-width:0}
.home-status-identity h1{overflow-wrap:anywhere}
.home-status-identity small{display:block;margin-top:2px;color:var(--home-muted);font-size:11px}
.home-status-avatar{flex:none;width:40px;height:40px;display:grid;place-items:center;border:1px solid var(--home-line);border-radius:50%;background:var(--home-brand-deep);color:#fff;font-size:22px}
.home-status-identity img.home-status-avatar{object-fit:cover}
/* 参考图：标题行下方一条细分隔线，再开始三栏数值 */
.home-status-head{padding-bottom:10px;border-bottom:1px solid var(--home-line)}
.home-section-title>button,.home-section-title>a{
  min-height:44px;
  padding:0;
  display:inline-flex;
  align-items:center;
  border:0;
  color:var(--home-mint-ink);
  background:transparent;
  font-size:12.5px;
  font-weight:700;
  text-decoration:none;
  white-space:nowrap;
  cursor:pointer;
}

.home-profile-guest{
  min-height:70px;
  margin-top:12px;
  padding:11px 12px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  border:1px solid #dbe0ea;
  border-radius:14px;
  background:var(--home-mint);
}
.home-profile-guest>div{min-width:0;display:flex;flex-direction:column;gap:4px}
.home-profile-guest b{font-size:15px;line-height:1.35}
.home-profile-guest span{color:var(--home-muted);font-size:12px;line-height:1.5}
.home-profile-guest>button{
  min-width:62px;
  min-height:44px;
  padding:0 14px;
  flex:none;
  border:0;
  border-radius:12px;
  color:#fff;
  background:var(--home-brand);
  font-weight:700;
  cursor:pointer;
}
.home-unplayed{
  margin:12px 0 0;
  padding:9px 12px;
  border-radius:10px;
  background:var(--home-mint);
  color:var(--home-mint-ink);
  font-size:12.5px;
  line-height:1.4;
}

/* 我的竞技状态：三栏数值 + 分隔细线（对齐参考图） */
.home-metrics{
  margin-top:12px;
  display:grid;
  grid-template-columns:1fr 1fr 1fr;
  background:transparent;
}
.home-metrics-competitive{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:10px}
.home-metrics-competitive .home-metric{align-items:flex-start;min-height:83px;padding:8px 12px;text-align:left}
.home-metrics-competitive .home-metric:last-child{padding-left:16px}
.home-metrics-competitive .home-metric strong{font-size:25px;white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}
.home-metrics-competitive .home-metric-long strong{font-size:21px}
.home-metric{
  min-width:0;
  min-height:66px;
  padding:4px 6px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:3px;
  border:0;
  border-right:1px solid var(--home-line);
  color:var(--ink);
  background:transparent;
  text-align:center;
  cursor:pointer;
}
.home-metric:last-child{border-right:0}
.home-metric small{color:var(--home-muted);font-size:12.5px;line-height:1.2}
.home-metric strong{
  max-width:100%;
  color:var(--home-brand-deep);
  font-size:28px;
  font-weight:800;
  line-height:1.15;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.home-metric-long strong{font-size:23px}
.home-metric:active{background:#f2f6fc}

/* 成长进度：左标签、右提示、下方圆角进度条 */
.home-tier-goal,.home-tier-note{margin-top:14px}
.home-growth-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:8px}
.home-growth-head span{color:var(--home-muted);font-size:12.5px}
.home-growth-head b{color:var(--home-brand-deep);font-size:14.5px;font-weight:800}
.home-growth-note{display:block;color:var(--home-muted);font-size:11.5px;line-height:1.35}
.home-growth-head .home-growth-note{margin:0 0 0 auto;text-align:right}
.home-progress{height:8px;margin-top:9px;overflow:hidden;border-radius:999px;background:#e5eaf4}
.home-progress i{display:block;height:100%;border-radius:inherit;background:var(--home-brand)}
.home-tier-note{padding:11px 12px;display:flex;flex-direction:column;gap:4px;border:1px solid #f0e3c6;border-radius:12px;background:var(--home-amber)}
.home-tier-note b{color:var(--home-amber-ink);font-size:13.5px}
.home-tier-note span{color:var(--home-muted);font-size:12.5px;line-height:1.45}

.home-state{
  min-height:68px;
  margin-top:12px;
  padding:12px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  border-radius:12px;
  background:#f6f8fc;
  color:var(--home-muted);
  font-size:13px;
  line-height:1.45;
}
.home-state-error{color:var(--red);background:#fdf3f1}
.home-news-empty { padding:18px 0; color:var(--ink-3); font-size:13px; line-height:1.6; }
.home-news-empty > p { margin:0 0 6px; font-weight:700; color:var(--ink-2); }
.home-empty-actions { display:flex; flex-wrap:wrap; gap:8px; margin-top:14px; }
.home-empty-actions a { display:inline-flex; align-items:center; justify-content:center; min-height:44px; padding:9px 12px;
  border:1px solid var(--line); border-radius:10px; background:var(--card); color:var(--felt-700); font-weight:700; text-decoration:none; }
.home-empty-actions a:focus-visible { outline:2px solid var(--gold); outline-offset:2px; }
.home-retry{
  min-width:62px;
  min-height:44px;
  padding:0 13px;
  flex:none;
  border:1px solid currentColor;
  border-radius:12px;
  color:var(--home-brand-deep);
  background:#fff;
  font-weight:700;
  cursor:pointer;
}

/* 平台资讯：标题与分段筛选同一行，当前项下划线 */
.home-news-head{align-items:center}
.home-news-tabs{display:flex;align-items:center;gap:16px;flex:none}
.home-news-tabs button{
  position:relative;
  min-width:44px;
  min-height:44px;
  padding:0 2px;
  border:0;
  color:var(--home-muted);
  background:transparent;
  font-size:12.5px;
  font-weight:650;
  white-space:nowrap;
  cursor:pointer;
}
.home-news-tabs button.active{color:var(--home-brand-deep);font-weight:800}
.home-news-tabs button.active:after{
  content:"";
  position:absolute;
  left:0;
  right:0;
  bottom:5px;
  height:3px;
  border-radius:2px;
  background:var(--home-brand);
}
.home-news-list{margin-top:4px}
.home-news-card{
  min-width:0;
  padding:14px 0;
  display:flex;
  align-items:center;
  gap:12px;
  border-bottom:1px solid var(--home-line);
}
.home-news-card:last-child{border-bottom:0}
.home-news-copy{min-width:0;flex:1}
.home-news-meta{min-width:0;display:flex;align-items:center;gap:8px}
.home-news-kind{
  flex:none;
  padding:2px 7px;
  border-radius:6px;
  background:var(--home-mint);
  color:var(--home-mint-ink);
  font-size:11px;
  font-weight:800;
  line-height:1.35;
}
.home-news-meta>small{min-width:0;color:#8b918c;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.home-news-title{
  display:-webkit-box;
  margin-top:7px;
  overflow:hidden;
  color:var(--ink);
  font-size:15.5px;
  font-weight:800;
  line-height:1.35;
  text-decoration:none;
  overflow-wrap:anywhere;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
}
.home-news-card p{
  display:-webkit-box;
  margin:5px 0 0;
  overflow:hidden;
  color:var(--home-muted);
  font-size:12px;
  line-height:1.45;
  overflow-wrap:anywhere;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
}
/* 缩略图：真实封面在上，无封面或加载失败时露出内联 SVG 占位封面，不留空 */
.home-news-thumb{
  position:relative;
  width:124px;
  height:72px;
  flex:0 0 124px;
  overflow:hidden;
  border-radius:10px;
  background:linear-gradient(135deg,#002080,#001040);
}
.home-news-ph{position:absolute;inset:0;display:block}
.home-news-ph svg{display:block;width:100%;height:100%}
.home-news-ph-accent{fill:#7fa9e8;opacity:.85}
.home-news-thumb.announcement .home-news-ph-accent{fill:#e0b45f}
.home-news-thumb.result .home-news-ph-accent{fill:#8fc9d6}
.home-news-thumb.region .home-news-ph-accent{fill:#c9a86a}
.home-news-cover{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  display:block;
  object-fit:cover;
  background:#1c3a72;
}
.home-more{
  width:100%;
  min-height:46px;
  margin-top:12px;
  border:1px solid #d7dce6;
  border-radius:12px;
  color:var(--home-brand-deep);
  background:#fff;
  font-weight:700;
  cursor:pointer;
}
.home-more:disabled{color:#8c928d;cursor:default}
.home-more-error{
  min-height:54px;
  padding:10px 12px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  border-radius:12px;
  background:#fdf3f1;
  color:var(--red);
  font-size:12.5px;
}
.home-more-error button{
  min-width:82px;
  min-height:44px;
  padding:0 10px;
  flex:none;
  border:1px solid currentColor;
  border-radius:12px;
  color:var(--home-brand-deep);
  background:#fff;
  font-weight:700;
  cursor:pointer;
}

@media(max-width:370px){
  .home-header{padding-left:13px;padding-right:13px}
  .home-competitive,.home-news{padding-left:12px;padding-right:12px}
  .home-section-title h1,.home-section-title h2{font-size:17px}
  .home-metric{padding-left:2px;padding-right:2px}
  .home-metric strong{font-size:24px}
  .home-metric-long strong{font-size:19px}
  .home-news-tabs{gap:12px}
  .home-news-tabs button{font-size:12px}
  .home-news-card{gap:10px}
  .home-news-thumb{width:104px;height:62px;flex-basis:104px}
}
@media(min-width:420px){
  .home-header{padding-left:19px;padding-right:19px}
  .home-competitive,.home-news{padding-left:17px;padding-right:17px}
  .home-news-thumb{width:136px;height:78px;flex-basis:136px}
}

/* U3b 首页滑动广告：自动轮播 + 手指拖动 + 圆点指示器。公开接口为空或失败时不渲染该区域。 */
.home-promotions{position:relative;padding:12px 12px 14px;background:#fafbfe}
.home-promotion-viewport{position:relative;overflow:hidden;border-radius:14px;background:#102446;box-shadow:0 8px 20px rgba(8,18,44,.14)}
.home-promotion-track{display:flex;align-items:stretch;transition:transform .42s cubic-bezier(.22,.61,.36,1);will-change:transform}
.home-promotion-card{position:relative;flex:0 0 100%;min-width:100%;min-height:132px;aspect-ratio:405/156;display:block;overflow:hidden;color:#fff;text-decoration:none}
.home-promotion-cover{position:absolute;inset:0;width:100%;height:100%;display:block;object-fit:cover;background:#1b2f5c}
.home-promotion-shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(4,12,32,.88) 0%,rgba(4,12,32,.6) 48%,rgba(4,12,32,.1) 84%),linear-gradient(180deg,transparent 46%,rgba(4,12,32,.32))}
.home-promotion-copy{position:absolute;left:15px;right:34%;top:13px;bottom:13px;display:flex;flex-direction:column;align-items:flex-start;gap:8px}
.home-promotion-copy small{padding:4px 10px;border-radius:999px;background:#f7dc95;color:#7c4d11;font-size:11.5px;font-weight:800;line-height:1.3}
.home-promotion-copy strong{
  display:-webkit-box;
  overflow:hidden;
  font-size:26px;
  font-weight:800;
  line-height:1.24;
  text-shadow:0 2px 6px rgba(0,0,0,.32);
  overflow-wrap:anywhere;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
}
.home-promotion-cta{margin-top:auto;color:#f3d489;font-size:13.5px;font-weight:800;font-style:normal}
.home-promotion-controls{position:absolute;right:12px;bottom:11px;display:flex;align-items:center;gap:4px}
.home-promotion-arrow{
  width:32px;
  height:32px;
  padding:0;
  display:flex;
  align-items:center;
  justify-content:center;
  border:0;
  border-radius:999px;
  background:rgba(4,12,32,.42);
  color:#fff;
  font-size:19px;
  line-height:1;
  cursor:pointer;
}
.home-promotion-arrow:active{background:rgba(4,12,32,.62)}
.home-promotion-dots{display:flex;align-items:center}
.home-promotion-dots button{position:relative;width:22px;height:32px;padding:0;border:0;background:transparent;cursor:pointer}
.home-promotion-dots button:after{content:"";position:absolute;left:7px;top:12px;width:8px;height:8px;border-radius:999px;background:rgba(255,255,255,.45)}
.home-promotion-dots button.on:after{background:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.16)}

.hp-admin-page{min-height:100%;padding:14px;color:var(--ink);background:var(--paper)}
.hp-admin-page *{box-sizing:border-box}
.hp-admin-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;margin-bottom:14px}
.hp-admin-head>a{min-height:44px;display:inline-flex;align-items:center;color:var(--felt-700);font-size:13px;font-weight:700;text-decoration:none}
.hp-admin-head>div{min-width:0}
.hp-admin-head h1{margin:0;font-size:21px;line-height:1.25}
.hp-admin-head p{margin:4px 0 0;color:var(--ink-2);font-size:12px;line-height:1.45}
.hp-primary{padding:0 14px;border:0;border-radius:8px;background:var(--felt-700)!important;color:#fff!important;justify-content:center}
.hp-admin-state{min-height:64px;padding:14px;display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--ink-2);font-size:13px;line-height:1.5}
.hp-admin-error{color:var(--red)}
.hp-admin-state button,.hp-more{min-height:44px;padding:0 14px;border:1px solid var(--line-2);border-radius:8px;background:#fff;color:var(--felt-700);font:inherit;font-weight:700;cursor:pointer}
.hp-admin-list{overflow:hidden;border:1px solid var(--line);border-radius:10px;background:var(--card)}
.hp-admin-row{min-width:0;padding:13px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;border-bottom:1px solid var(--line)}
.hp-admin-row:last-child{border-bottom:0}
.hp-admin-row h2{margin:0;font-size:15px;line-height:1.4;overflow-wrap:anywhere}
.hp-admin-row p,.hp-admin-row small{display:block;margin:3px 0 0;color:var(--ink-2);font-size:12px;line-height:1.4}
.hp-admin-row>a{min-height:44px;display:inline-flex;align-items:center;color:var(--felt-700);font-size:13px;font-weight:700;text-decoration:none}
.hp-status{padding:4px 7px;border-radius:999px;background:#eceef6;color:var(--ink-2);font-size:11px;font-weight:800;white-space:nowrap}
.hp-status-live{background:var(--ok-bg);color:var(--ok-ink)}
.hp-more{width:100%;margin-top:12px}
.hp-admin-note{margin-bottom:12px;padding:11px 12px;border-left:4px solid #b68a3d;background:#fbf5e7;color:var(--ink-2);font-size:13px;line-height:1.5}
.hp-form{margin:0;padding:14px;display:grid;gap:13px;border:1px solid var(--line);border-radius:10px;background:var(--card)}
.hp-form>label,.hp-time-grid label{display:grid;gap:6px;color:var(--ink-2);font-size:13px;font-weight:700}
.hp-form input,.hp-form select{width:100%;min-height:44px;padding:9px 11px;border:1.5px solid var(--line-2);border-radius:8px;background:#fff;color:var(--ink);font:inherit}
.hp-form input:focus,.hp-form select:focus{outline:0;border-color:var(--felt-600);box-shadow:0 0 0 3px rgba(0,32,128,.12)}
.hp-time-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.hp-target-tools{display:flex;align-items:center;justify-content:space-between;gap:10px}
.hp-target-tools button,.hp-cover button,.hp-editor-actions button{min-height:44px;padding:0 14px;border:1px solid var(--line-2);border-radius:8px;background:#fff;color:var(--felt-700);font:inherit;font-weight:700;cursor:pointer}
.hp-target-view{min-height:44px;display:inline-flex;align-items:center;color:var(--felt-700);font-size:13px;font-weight:700;text-decoration:none}
.hp-target-error,.hp-cover-error{color:var(--red);font-size:12px;line-height:1.45}
.hp-cover{margin-top:12px;padding:14px;border:1px solid var(--line);border-radius:10px;background:var(--card)}
.hp-cover h2{margin:0 0 10px;font-size:16px}
.hp-cover>img,.hp-cover-empty{width:100%;height:152px;display:flex;align-items:center;justify-content:center;object-fit:cover;border-radius:8px;background:#e7eaf2;color:var(--ink-2);font-size:13px}
.hp-cover p{color:var(--ink-2);font-size:12px;line-height:1.5}
.hp-file{min-height:44px;margin-top:10px;display:flex;align-items:center;color:var(--felt-700);font-size:13px;font-weight:700;cursor:pointer}
.hp-file input{max-width:100%;margin-left:8px}
.hp-cover button{margin:8px 8px 0 0}
.hp-cover button.danger{color:var(--red)}
.hp-editor-actions{margin-top:12px;display:flex;gap:10px}
.hp-editor-actions button{flex:1}
.hp-editor-actions button:disabled,.hp-cover button:disabled,.hp-more:disabled{opacity:.55;cursor:default}

@media(max-width:420px){
  .home-promotion-copy{left:14px;right:30%;gap:7px}
  .home-promotion-copy strong{font-size:20px}
  .home-promotion-controls{right:10px;bottom:9px;gap:2px}
  .home-promotion-arrow{width:30px;height:30px;font-size:18px}
  .home-promotion-dots button{width:18px;height:30px}
  .home-promotion-dots button:after{left:5px;top:11px;width:8px;height:8px}
  .hp-admin-head{grid-template-columns:auto minmax(0,1fr)}
  .hp-admin-head>.hp-primary{grid-column:1/-1;width:100%}
  .hp-admin-row{grid-template-columns:auto minmax(0,1fr)}
  .hp-admin-row>a{grid-column:2;justify-self:start}
  .hp-time-grid{grid-template-columns:1fr}
  .hp-target-tools{align-items:flex-start;flex-direction:column}
  .hp-editor-actions{flex-direction:column}
}

.home-page button:focus-visible, .home-page a:focus-visible { outline:2px solid var(--home-brand); outline-offset:3px; }
.home-page .home-section-title { flex-wrap:wrap; }
.home-page .home-news-tabs { flex-wrap:wrap; }


/* source: css/competitive.css */
/* R2 排名与段位：信息密度高于普通卡片页，沿用首页品牌蓝（2026-09-14 由毡绿改蓝）、黄铜与正文比例。 */
.competitive-page{
  min-height:100%;
  background:var(--paper);
  color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","HarmonyOS Sans SC","Microsoft YaHei",sans-serif;
  --competitive-brand:#001040;
  --competitive-brass:#aa8138;
}
.competitive-page *{font-family:inherit}
.competitive-page button,.competitive-page select{font:inherit}
.competitive-page main{padding-bottom:12px}
.competitive-header{
  min-height:70px;padding:12px 16px 11px;display:flex;align-items:flex-end;justify-content:space-between;gap:12px;
  color:#fff;background:linear-gradient(112deg,#002080,#001040);border-bottom:2px solid var(--competitive-brass)
}
.competitive-header h1{font-size:22px;line-height:1.2;letter-spacing:.02em}
.competitive-header p{font-size:12px;color:rgba(255,255,255,.8);white-space:nowrap}

.competitive-personal{margin:12px 14px;padding:13px 14px;background:#f0f3f9;border:1px solid #e4e9f1;border-radius:10px}
.competitive-personal-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.competitive-personal-title>span{font-size:13px;font-weight:700;color:var(--ink-2)}
.competitive-personal-title>a{min-height:44px;margin:-12px -4px -10px 0;padding:0 4px;display:flex;align-items:center;font-size:13px;font-weight:700;text-decoration:none}
.competitive-personal-ranks{display:grid;grid-template-columns:1fr 1fr;gap:0}
.competitive-personal-ranks>span{min-width:0;display:flex;flex-direction:column;gap:1px;padding-right:10px}
.competitive-personal-ranks>span+span{padding-left:10px;border-left:1px solid var(--line)}
.competitive-personal-ranks small{font-size:12px;color:var(--ink-3)}
.competitive-personal-ranks strong{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.competitive-personal.guest,.competitive-personal.error{min-height:70px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.competitive-personal.guest>div,.competitive-personal.error>div{min-width:0;display:flex;flex-direction:column;gap:2px}
.competitive-personal.guest b,.competitive-personal.error b{font-size:14px}
.competitive-personal.guest span,.competitive-personal.error span{font-size:13px;line-height:1.4;color:var(--ink-2)}
.competitive-personal.guest .btn{flex:none;min-width:72px;margin:0;box-shadow:none}
.competitive-personal.muted{font-size:13px;color:var(--ink-2)}

.competitive-controls{padding:4px 14px 11px;border-bottom:1px solid var(--line);background:#fff}
.competitive-selector-row{min-height:66px;display:flex;align-items:center;justify-content:space-between;gap:8px}
.competitive-recent{flex:none;display:flex;align-items:center;min-height:44px;color:var(--felt-700);font-size:12px;font-weight:800;text-decoration:none;white-space:nowrap}
.competitive-selected-scope{font-size:17px;color:var(--felt-700)}
.competitive-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2px;padding:3px;background:#e8ecf3;border-radius:10px}
.competitive-tabs>button{min-width:0;min-height:44px;padding:0 8px;border:0;border-radius:8px;background:transparent;color:var(--ink-2);font-size:14px;font-weight:700;cursor:pointer}
.competitive-tabs>button.on{background:#fff;color:var(--felt-700);box-shadow:0 1px 4px rgba(10,20,45,.14)}
.competitive-region{min-width:0;min-height:44px;flex:1;display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-2)}
.competitive-region>span{flex:none;max-width:72px;line-height:1.25}
.competitive-region select{flex:1;width:100%;min-width:0;min-height:44px;padding:0 30px 0 10px;border:1px solid var(--line);border-radius:8px;color:var(--felt-700);background:#fff;font-size:14px;font-weight:700;white-space:nowrap;text-overflow:ellipsis;cursor:pointer}
.competitive-region-compact{position:relative;min-width:0;min-height:44px;padding:0 7px;border:0;background:transparent;color:var(--ink-3);font-size:13px;text-align:center}
.competitive-region-compact.error{color:var(--red);cursor:pointer}
.competitive-region-note{margin-top:7px;font-size:12px;line-height:1.4;color:var(--ink-2)}
.competitive-board-head{min-height:60px;padding:12px 16px 10px;display:flex;align-items:end;justify-content:space-between;gap:12px;color:var(--ink);background:#fff}
.competitive-board-head small{display:block;font-size:11px;font-weight:700;color:var(--competitive-brass)}
.competitive-board-head h2{margin:2px 0 0;font-size:18px;line-height:1.25}
.competitive-board-head>span{font-size:12px;color:var(--ink-3)}
.ranking-page .competitive-personal{margin:12px 14px 0;background:#f4f7fb}
.ranking-page .competitive-personal-ranks strong{white-space:normal;overflow:visible;text-overflow:clip}
.ranking-page .competitive-links{margin:8px 14px 14px;border:1px solid var(--line);border-radius:9px;overflow:hidden}
.ranking-page .competitive-links>a{min-height:56px;border:0}
.text-action{min-height:44px;padding:0 5px;border:0;background:transparent;color:var(--felt-700);font-size:13px;font-weight:700;cursor:pointer}

.competitive-board{background:#fff;padding:0 0 12px}
.competitive-table-wrap{width:100%;overflow-x:auto;border-bottom:1px solid var(--line)}
.competitive-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:14px;background:#fff}
.competitive-table th{height:39px;padding:5px 6px;color:var(--ink-3);background:#f5f7fb;font-size:13px;font-weight:600;text-align:left}
.competitive-table th:first-child,.competitive-table td:first-child{width:54px;text-align:center}
.competitive-table th:nth-child(3),.competitive-table td:nth-child(3){width:58px;text-align:center}
.competitive-table th:last-child,.competitive-table td:last-child{width:82px;text-align:right;padding-right:12px}
.competitive-table td{height:57px;padding:7px 6px;border-top:1px solid var(--line);vertical-align:middle}
.competitive-table tr.rank-medal-gold{background:#fffaf0}
.competitive-table tr.rank-medal-silver{background:#f5f8fa}
.competitive-table tr.rank-medal-bronze{background:#fff7f1}
.competitive-table tr.is-me{background:var(--felt-100)}
.competitive-table tr.is-me td:first-child{box-shadow:inset 3px 0 var(--felt-600)}
.rank-place{font-family:var(--font-disp);font-size:17px;font-weight:800;color:var(--competitive-brass)}
.rank-medal-mark{width:31px;height:31px;margin:0 auto;display:flex;align-items:center;justify-content:center;border:2px solid currentColor;border-radius:50%;font-family:var(--font-disp);font-size:18px;line-height:1;background:#fff8df;color:#ad7814;box-shadow:0 0 0 3px rgba(184,130,27,.1)}
.rank-medal-silver .rank-medal-mark{background:#f2f5f6;color:#75818a;box-shadow:0 0 0 3px rgba(117,129,138,.1)}
.rank-medal-bronze .rank-medal-mark{background:#fff0e3;color:#a45f2f;box-shadow:0 0 0 3px rgba(164,95,47,.1)}
.rank-tie{display:block;margin-top:2px;font-family:var(--font-body);font-size:12px;font-weight:700;line-height:1;color:var(--gold-deep)}
.rank-name{max-width:100%;display:flex;align-items:center;gap:5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rank-name i{flex:none;padding:0 5px;border-radius:4px;background:var(--felt-700);color:#fff;font-size:10px;font-style:normal;font-weight:700}
.competitive-table td>small{display:block;margin-top:1px;color:var(--ink-3);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rank-tier{display:inline-block;max-width:100%;padding:2px 5px;border-radius:6px;background:var(--gold-bg);color:var(--gold-deep);font-size:12px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rank-rating{font-family:var(--font-disp);font-size:15px;font-weight:800;color:var(--felt-700)}
.competitive-auto-more,.competitive-limit{min-height:44px;padding:12px 16px 0;text-align:center;color:var(--ink-3);font-size:12px}
.competitive-snapshot{padding:10px 16px 0;font-size:12px;line-height:1.55;color:var(--ink-3)}
.competitive-inline-error{margin:10px 16px 0;padding:8px 10px;background:var(--red-bg);border-radius:8px;color:var(--red);font-size:13px}
.competitive-state{margin:12px 16px;padding:24px 16px;min-height:112px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;background:#f8f9fd;border:1px solid var(--line);border-radius:10px;font-size:14px;color:var(--ink-2)}
.competitive-state b{font-size:16px;color:var(--ink)}
.competitive-state span{line-height:1.55}
.competitive-state.error{color:var(--red)}
.competitive-state .btn{min-width:128px;margin-top:8px}
.competitive-state-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.competitive-state-actions .btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;text-decoration:none}
.competitive-state.loading{background:linear-gradient(90deg,#f5f7fb 25%,#edf0f7 50%,#f5f7fb 75%);background-size:220% 100%;animation:competitive-loading 1.4s ease infinite}
@keyframes competitive-loading{to{background-position:-220% 0}}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}

.competitive-tier-hero{padding:24px 16px 21px;color:#fff;background:var(--hero-bg);border-bottom:2px solid var(--competitive-brass)}
.competitive-tier-hero>span{font-size:12px;color:rgba(255,255,255,.75)}
.competitive-tier-hero h1{margin-top:1px;font-family:var(--font-disp);font-size:36px;line-height:1.25;color:#f1d58e;letter-spacing:.04em}
.tier-current-scores{margin-top:6px;display:flex;gap:8px}
.tier-current-scores span{padding:2px 8px;border:1px solid rgba(255,255,255,.2);border-radius:5px;background:rgba(255,255,255,.08);font-size:12px;color:#fff}
.competitive-tier-hero p{margin-top:7px;font-size:14px;color:rgba(255,255,255,.82)}
.competitive-notice{padding:12px 16px;display:flex;flex-direction:column;gap:2px;background:#fff7e6;border-bottom:1px solid #ead8ad}
.competitive-notice b{font-size:14px;color:var(--gold-deep)}
.competitive-notice span{font-size:14px;line-height:1.5;color:var(--ink-2)}
.competitive-profile-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));background:#fff;border-bottom:8px solid var(--body-bg)}
.competitive-profile-stats>div{min-width:0;padding:13px 7px;text-align:center}
.competitive-profile-stats>div+div{border-left:1px solid var(--line)}
.competitive-profile-stats small{display:block;color:var(--ink-3);font-size:11px;white-space:nowrap}
.competitive-profile-stats strong{display:block;margin-top:2px;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.competitive-growth{padding:17px 16px 18px;background:#fff;border-bottom:8px solid var(--body-bg)}
.competitive-section-title{margin-bottom:12px}
.competitive-section-title h2{font-size:19px;line-height:1.3}
.tier-goal{padding:15px;border-left:3px solid var(--competitive-brass);background:#f8f9fd}
.tier-goal.max{border-left-color:var(--felt-600);background:var(--felt-100)}
.tier-goal.max>span{font-size:12px;font-weight:700;color:var(--felt-700)}
.tier-goal.max h3{margin-top:2px;font-family:var(--font-disp);font-size:22px;color:var(--felt-700)}
.tier-goal-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.tier-goal-head span{font-size:13px;color:var(--ink-2)}
.tier-goal-head strong{font-family:var(--font-disp);font-size:20px;color:var(--gold-deep)}
.tier-progress{height:8px;margin-top:13px;border-radius:4px;background:#dfe4ee;overflow:hidden}
.tier-progress i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,#c59a43,#aa8138)}
.tier-progress-label{margin-top:7px;display:flex;align-items:flex-start;justify-content:space-between;gap:10px;font-size:12px;color:var(--ink-2)}
.tier-progress-label b{text-align:right;color:var(--gold-deep)}
.tier-goal>p,.tier-reserve p{margin-top:12px;font-size:14px;line-height:1.6;color:var(--ink-2)}
.tier-condition{margin-top:10px;padding:10px 11px;display:flex;flex-direction:column;gap:2px;border:1px solid #c9d6ee;background:var(--felt-100)}
.tier-condition b{font-size:13px;color:var(--felt-700)}
.tier-condition span{font-size:14px;line-height:1.5;color:var(--ink-2)}
.tier-reserve{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.tier-reserve.compact{margin-top:13px}
.tier-reserve>div:first-child{display:flex;justify-content:space-between;gap:10px;font-size:13px}
.competitive-links{background:#fff}
.competitive-links>a{min-height:66px;padding:10px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);color:var(--ink);text-decoration:none}
.competitive-links>a>div{min-width:0;display:flex;flex-direction:column;gap:2px}
.competitive-links b{font-size:15px}
.competitive-links span{font-size:14px;line-height:1.5;color:var(--ink-2);white-space:normal}
.competitive-links i{flex:none;color:var(--ink-3);font-size:22px;font-style:normal}

@media(max-width:350px){
  .competitive-header,.competitive-controls,.competitive-tier-hero,.competitive-growth{padding-left:12px;padding-right:12px}
  .competitive-header p{display:none}
  .competitive-personal{margin-left:12px;margin-right:12px;padding-left:12px;padding-right:12px}
  .competitive-personal-ranks>span{padding-right:6px}.competitive-personal-ranks>span+span{padding-left:6px}
  .competitive-tabs>button{padding:0 3px;font-size:13px}
  .competitive-region select{font-size:12px}
  .competitive-recent{font-size:11px}
  .competitive-table{font-size:13px}.competitive-table th:first-child,.competitive-table td:first-child{width:48px}.competitive-table th:nth-child(3),.competitive-table td:nth-child(3){width:54px}.competitive-table th:last-child,.competitive-table td:last-child{width:74px;padding-right:8px}
  .rank-medal-mark{width:28px;height:28px;font-size:16px}
  .competitive-profile-stats small{font-size:10px}.competitive-profile-stats strong{font-size:13px}
  .tier-progress-label{flex-direction:column;gap:2px}.tier-progress-label b{text-align:left}
}
@media(prefers-reduced-motion:reduce){.competitive-state.loading{animation:none}}


/* source: css/personal.css */
.personal-settings { min-height:100%; background:var(--paper); color:var(--ink); }
.personal-settings main { width:min(620px,100%); margin:0 auto; padding:16px 14px 34px; box-sizing:border-box; }
.personal-settings section { margin:0 0 22px; }
.personal-settings h2 { margin:0 4px 9px; color:var(--ink-3); font-size:13px; font-weight:700; }
.ps-group { overflow:hidden; border:1px solid var(--line); border-radius:14px; background:var(--card); box-shadow:var(--shadow-card); }
.ps-row { min-height:66px; display:flex; align-items:center; gap:12px; padding:10px 14px; box-sizing:border-box; color:var(--ink); text-decoration:none; border-bottom:1px solid var(--line); }
.ps-row:last-child { border-bottom:0; }
.ps-row:active { background:#f6f8fc; }
.ps-row > .ico { width:21px; height:21px; flex:none; color:var(--felt-600); }
.ps-row > span { min-width:0; flex:1; display:flex; flex-direction:column; gap:3px; }
.ps-row b { font-size:15px; }
.ps-row small { overflow-wrap:anywhere; color:var(--ink-3); font-size:12px; line-height:1.4; }
.ps-row > i { color:var(--ink-3); font:normal 24px/1 sans-serif; }
.ps-error { margin:0 0 16px; padding:11px 12px; border-radius:10px; background:#fff0ed; color:var(--red); font-size:13px; line-height:1.5; }
.ps-error button { min-height:44px; margin-left:8px; border:0; background:transparent; color:inherit; text-decoration:underline; cursor:pointer; }
.ps-logout { width:100%; min-height:52px; border:1px solid #e5b8b2; border-radius:14px; background:var(--card); color:var(--red); font:700 15px/1 inherit; cursor:pointer; }
.ps-logout:active { background:#fff5f3; }
@media (max-width:360px) { .personal-settings main { padding-left:11px; padding-right:11px; } }

/* ============================================================
   我的（FE-004 + 视觉对齐 docs/design-references/me-candidate-1-20260910.png）
   只用纯 CSS 与内联 SVG（views.js 的 ME_SUITS / ME_ICON_BODY）近似参考图：
   深蓝渐变头部 + 花形水印、白卡（蓝竖条标题）、三栏竞技档案与成长进度条、
   四等分常用功能、药丸按钮待办、平台规则行。数值一律来自服务端，不在此写门槛。
   令牌：品牌蓝 #002080／深色文字 #001040／淡蓝 #e8f0fb·#0b2a63／页面底 #fafbfe。
   ============================================================ */
.me-page { min-height:calc(100vh - var(--tab-h)); background:#fafbfe; padding-bottom:12px; }

/* ---- 深蓝渐变头部 ---- */
.me-hero { padding:4px 18px 20px; }
.me-hero.felt { background:var(--hero-bg); }
.me-suits { position:absolute; inset:0; color:#fff; opacity:.10; pointer-events:none; }
.me-suit { position:absolute; }
.me-suit.s1 { width:116px; height:116px; top:-24px; right:20px; transform:rotate(-12deg); }
.me-suit.s2 { width:94px; height:94px; top:62px; right:-24px; transform:rotate(14deg); }
.me-suit.s3 { width:70px; height:70px; top:-14px; right:126px; transform:rotate(8deg); }
.me-head { display:flex; align-items:center; justify-content:space-between; gap:10px; min-height:46px; }
.me-title { font-size:22px; font-weight:800; letter-spacing:.02em; }
.me-settings { display:inline-flex; align-items:center; gap:6px; min-height:44px; padding:0 4px; border:0;
  background:none; color:#fff; font:600 13px/1 inherit; cursor:pointer; }
.me-settings:active { opacity:.7; }
.me-settings .me-ico { width:17px; height:17px; }
.me-identity { display:flex; align-items:center; gap:14px; margin-top:8px; }
.me-avatar { width:56px; height:56px; flex:none; border-radius:50%; overflow:hidden; cursor:pointer;
  background:rgba(255,255,255,.18); box-shadow:inset 0 0 0 1px rgba(255,255,255,.3);
  display:flex; align-items:center; justify-content:center; }
.me-avatar img { width:56px; height:56px; object-fit:cover; display:block; }
.me-avatar .me-ico { width:30px; height:30px; color:rgba(255,255,255,.82); }
.me-who { flex:1; min-width:0; }
.me-name { font-size:22px; font-weight:800; line-height:1.25; overflow-wrap:anywhere; }
.me-region { display:inline-flex; align-items:center; gap:3px; min-height:44px; margin-top:3px; color:rgba(255,255,255,.86);
  font-size:13px; text-decoration:none; }
.me-region .chev { color:rgba(255,255,255,.7); font-size:15px; line-height:1; }
.me-avatar-remove { margin-top:3px; color:rgba(255,255,255,.78); font-size:11.5px; text-decoration:underline; cursor:pointer; }

/* ---- 白卡定式：蓝竖条标题 + 右侧动作 ---- */
.me-card { padding:14px 16px; }
.me-card-head { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:12px; }
.me-head-left { display:flex; align-items:center; gap:8px; min-width:0; }
.me-bar { width:4px; height:15px; border-radius:2px; background:#002080; flex:none; }
.me-card-title { font-size:15.5px; font-weight:700; color:#001040; }
.me-card-more { display:inline-flex; align-items:center; gap:2px; flex:none; min-height:44px; min-width:44px; justify-content:center; font-size:13px;
  color:var(--ink-3); text-decoration:none; }
.me-card-more .chev { font-size:15px; line-height:1; }
.me-ico { width:22px; height:22px; flex:none; }

/* ---- 我的竞技档案：三栏 + 成长进度 ---- */
.me-arch-cols { display:grid; grid-template-columns:repeat(3,1fr); }
.me-arch-col { min-width:0; display:flex; flex-direction:column; align-items:center; gap:3px;
  padding:2px 4px; color:var(--ink); text-decoration:none; }
.me-arch-col + .me-arch-col { border-left:1px solid var(--line); }
.me-arch-col small { display:inline-flex; align-items:center; gap:2px; color:var(--ink-3); font-size:12px; }
.me-arch-col small .chev { font-size:14px; line-height:1; }
.me-arch-col strong { max-width:100%; font-size:23px; font-weight:800; line-height:1.2; color:#001040;
  letter-spacing:.01em; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.me-arch-col.is-long strong { font-size:19px; }
.me-arch-col.is-xlong strong { font-size:16px; }
.me-arch-growth { margin-top:12px; }
.me-arch-gtop { display:flex; align-items:baseline; justify-content:space-between; gap:8px; margin-bottom:7px; }
.me-arch-glabel { font-size:13.5px; font-weight:700; color:var(--ink); min-width:0; }
.me-arch-glabel b { font-weight:800; color:#001040; }
.me-arch-gnote { min-width:0; color:var(--ink-3); font-size:12px; text-align:right;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.me-arch-bar { position:relative; height:15px; border-radius:999px; background:#eceff0; overflow:hidden; }
.me-arch-bar > i { display:block; height:100%; border-radius:999px;
  background:linear-gradient(180deg,#002a6e,#001040); }
.me-arch-bar > .me-arch-pct { position:absolute; top:0; left:0; height:100%; display:flex; align-items:center;
  justify-content:flex-end; padding-right:7px; color:#fff; font:700 11px/1 inherit; }
.me-arch-bar > .me-arch-pct.is-out { justify-content:flex-start; padding:0 0 0 7px; color:var(--ink-3); white-space:nowrap; }
.me-arch-note { margin-top:6px; color:var(--ink-3); font-size:12px; }
.me-arch-link { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-top:10px;
  padding-top:9px; border-top:1px solid var(--line); color:var(--ink-2); font-size:12.5px; text-decoration:none; }
.me-arch-link .chev { font-size:16px; line-height:1; }

/* ---- 常用功能：五项保持同一行 ---- */
.me-quick { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); }
.me-quick-item { min-width:0; min-height:76px; display:flex; flex-direction:column; align-items:center;
  justify-content:center; gap:7px; padding:8px 2px; border-radius:12px; color:var(--ink); text-decoration:none; }
.me-quick-item + .me-quick-item { box-shadow:inset 1px 0 0 #eef0f7; }
.me-quick-item:active { background:#f4f7fc; }
.me-quick-item .me-ico { width:25px; height:25px; color:#002080; }
.me-quick-item > span { max-width:100%; font-size:12px; line-height:1.25; text-align:center;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.me-management-shortcuts { display:flex; flex-wrap:wrap; gap:8px; margin:12px 14px 0; }
.me-management-shortcuts a { display:flex; align-items:center; justify-content:space-between; gap:10px;
  flex:1 1 130px; min-height:44px; padding:9px 12px; border:1px solid var(--line); border-radius:10px;
  background:var(--card); color:var(--ink); font-size:13px; font-weight:700; text-decoration:none; overflow-wrap:anywhere; }
.me-management-shortcuts a:focus-visible { outline:2px solid var(--gold); outline-offset:2px; }

/* ---- 待办提醒：图标 + 标题/说明 + 淡蓝药丸按钮 ---- */
.me-todo { display:flex; flex-direction:column; }
.me-todo-row { display:flex; align-items:center; gap:12px; padding:11px 0; cursor:pointer;
  border-top:1px solid #eef0f7; }
.me-todo-row:first-child { border-top:0; }
.me-todo-row:active { background:#f8fafd; }
.me-todo-row > .me-ico { width:22px; height:22px; color:#002080; }
.me-todo-main { flex:1; min-width:0; }
.me-todo-title { font-size:15px; font-weight:700; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.me-todo-sub { margin-top:2px; color:var(--ink-3); font-size:12.5px; line-height:1.45;
  white-space:normal; overflow-wrap:anywhere; }
.me-todo-btn { flex:none; display:inline-flex; align-items:center; gap:3px; min-height:34px; padding:0 12px;
  border-radius:999px; background:#e8f0fb; color:#0b2a63; font-size:12.5px; font-weight:700; }
.me-todo-btn .chev { color:#0b2a63; font-size:15px; line-height:1; }
.me-todo-count { margin-top:10px; padding:0 2px; }
.me-todo-card .ps-error { margin-bottom:0; }

/* ---- 平台规则 ---- */
.me-rules { padding:13px 16px; }
.me-rule-row { display:flex; align-items:center; gap:12px; cursor:pointer; }
.me-rule-row .me-ico { width:24px; height:24px; color:#002080; }
.me-rule-main { flex:1; min-width:0; }
.me-rule-title { font-size:15px; font-weight:700; }
.me-rule-sub { margin-top:2px; color:var(--ink-3); font-size:12.5px; line-height:1.45; overflow-wrap:anywhere; }
.me-footnote { text-align:center; padding:2px 28px 14px; }

/* 320px：收紧卡片内距与数值字号，保持四等分与三栏不折行 */
@media (max-width:360px) {
  .me-hero { padding:4px 14px 18px; }
  .me-card { padding:12px 12px; }
  .me-rules { padding:12px 12px; }
  .me-arch-col strong { font-size:20px; }
  .me-arch-col.is-long strong { font-size:17px; }
  .me-arch-col.is-xlong strong { font-size:15px; }
  .me-region { font-size:12.5px; }
  .me-quick-item { min-height:70px; gap:6px; }
  .me-quick-item .me-ico { width:23px; height:23px; }
  .me-todo-btn { padding:0 10px; font-size:12px; }
}
/* 宽视口：保持与 390 相同的信息密度（#phone 上限 430，这里只是兜底） */
@media (min-width:431px) {
  .me-card, .me-rules { max-width:600px; margin-left:auto; margin-right:auto; }
}

/* ---- 我的奖品（独立页面）：筛选、卡片与状态，领取由场务核销，本页不自助领取 ---- */
.pz-filters { display:flex; flex-wrap:wrap; gap:8px; margin:0 0 14px; }
.pz-chip { min-height:34px; padding:0 12px; border:1px solid var(--line); border-radius:999px;
  background:var(--card); color:var(--ink-3); font:600 13px/1 inherit; cursor:pointer; }
.pz-chip.on { border-color:var(--felt-600); background:var(--felt-600); color:#fff; }
.pz-card { margin:0 0 12px; padding:12px 14px; }
.pz-head { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.pz-head b { min-width:0; font-size:15px; overflow-wrap:anywhere; }
.pz-line { margin-top:5px; color:var(--ink-3); font-size:12px; line-height:1.5; overflow-wrap:anywhere; }
.pz-code { margin-top:9px; padding:9px 11px; border-radius:10px; background:#f2f5fb; color:var(--ink);
  display:flex; align-items:baseline; justify-content:space-between; gap:10px; font-size:13px; }
.pz-code b { font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:16px; letter-spacing:.06em; }
.pz-why { margin-top:9px; color:var(--amber-700,#8a5b00); font-size:12px; }
.pz-empty { padding:26px 16px; color:var(--ink-3); font-size:13px; text-align:center; }
.pz-more { margin:4px 0 14px; text-align:center; }
.pz-tip { margin-top:6px; padding:0 4px; color:var(--ink-3); font-size:11px; line-height:1.6; }

/* ---- 我的参赛（FE-ME-001）：正式/轮转切换后各自的轻量筛选 ----
   筛选条横向滚动，按钮触控高度不小于 44px；筛选全部由服务端在分页前执行。 */
.fe-chips { display:flex; gap:7px; margin:8px 14px 0; overflow-x:auto; padding-bottom:2px;
  -webkit-overflow-scrolling:touch; scrollbar-width:none; }
.fe-chips::-webkit-scrollbar { display:none; }
.fe-chip { flex:none; min-height:36px; padding:0 13px; border:1px solid var(--line); border-radius:999px;
  background:var(--card); color:var(--ink-3); font:600 13px/1 inherit; cursor:pointer; white-space:nowrap; }
.fe-chip.on { border-color:var(--felt-600); background:var(--felt-600); color:#fff; }
/* 320px：两行筛选条不挤压卡片标题 */
@media (max-width:340px) { .fe-chip { font-size:12px; padding:0 11px; } }

/* ---- U4 卡片布局：标题/摘要占满整行，状态与操作下移一行 ----
   同行混排会把长赛事名挤成省略号，导致本人看不到自己在哪一场。 */
.u4-card { flex-direction:column; align-items:stretch; gap:8px; cursor:default; }
.u4-card-top { display:flex; align-items:flex-start; gap:10px; }
.u4-card-top > .li-main { flex:1; min-width:0; }
.u4-card .li-title { white-space:normal; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.u4-card .li-sub { white-space:normal; overflow:visible; overflow-wrap:anywhere; }
.u4-card-foot { display:flex; align-items:center; justify-content:space-between; gap:8px; flex-wrap:wrap; }
.u4-card-foot > .row { gap:6px; flex-wrap:wrap; }
/* 待办摘要含截止时间，截断会丢掉关键信息，允许整行换行 */
.u4-todo .li-sub { white-space:normal; overflow:visible; overflow-wrap:anywhere; }

.me-page .me-arch-link { min-height:44px; box-sizing:border-box; }
.me-page .me-avatar-remove { display:inline-flex; align-items:center; min-height:44px; }
.me-page button:focus-visible, .me-page a:focus-visible, .personal-settings button:focus-visible, .personal-settings a:focus-visible { outline:2px solid var(--felt-600); outline-offset:3px; }
.me-hero button:focus-visible, .me-hero a:focus-visible { outline-color:var(--gold); }


/* source: css/demo-visibility.css */
.demo-visibility{margin:14px 14px 0;padding:13px 14px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:grid;grid-template-columns:minmax(0,1fr) 48px;gap:8px 12px;align-items:center;background:var(--paper,#fff)}
.demo-visibility-copy{min-width:0}.demo-visibility .li-sub{margin-top:3px;white-space:normal;overflow:visible;text-overflow:clip;line-height:1.55}.demo-visibility-status{grid-column:2;text-align:center;font-size:12px;color:var(--muted)}
.demo-switch{position:relative;width:48px;height:28px;padding:0;border:0;border-radius:999px;background:#a7aaa8;cursor:pointer;transition:background .16s}.demo-switch span{position:absolute;left:3px;top:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.28);transition:transform .16s}.demo-switch.is-on{background:var(--felt-700,#002080)}.demo-switch.is-on span{transform:translateX(20px)}.demo-switch:focus-visible{outline:3px solid rgba(179,139,45,.38);outline-offset:2px}.demo-switch:disabled{cursor:wait;opacity:.62}
.demo-visibility-notice,.demo-visibility-error-text{margin-top:5px;font-size:12px;line-height:1.45}.demo-visibility-notice{color:var(--amber-700,#835c00)}.demo-visibility-error-text,.demo-visibility-error{color:var(--red,#a32622)}.demo-visibility-error{grid-template-columns:minmax(0,1fr) auto}
@media(max-width:340px){.demo-visibility{margin-left:10px;margin-right:10px;padding-left:11px;padding-right:11px;grid-template-columns:minmax(0,1fr) 44px}.demo-switch{width:44px}.demo-switch.is-on span{transform:translateX(16px)}}

