:root{--color-ink: #000000;--color-paper: #ffffff;--color-soft: #f5f5f0;--color-mute: #fafaf7;--color-gray-100: #f4f4f2;--color-gray-300: #d6d6d4;--color-gray-500: #8a8a87;--color-gray-600: #6b6b68;--color-gray-700: #3a3a37;--border-brutal: 2px solid var(--color-ink);--shadow-brutal: 4px 4px 0 0 var(--color-ink);--shadow-brutal-lg: 6px 6px 0 0 var(--color-ink);--shadow-brutal-sm: 2px 2px 0 0 var(--color-ink);--shadow-brutal-xl: 8px 8px 0 0 var(--color-ink);--color-success: #4a6b48;--color-warning: #c89968;--color-error: #b0463a;--color-highlight: #fff8d9;--color-accent: #3b5f45;--color-accent-soft: #eef3ee;--color-warm-gray: #7d786f;--color-muted: #f7f7f3;--border-thick: 3px solid var(--color-ink);--border-thin: 1px solid var(--color-ink);--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--font-serif: "Noto Serif SC", "Songti SC", "SimSun", Georgia, serif;--font-display: var(--font-sans);--fs-xs: 12px;--fs-sm: 14px;--fs-base: 16px;--fs-md: 18px;--fs-lg: 20px;--fs-xl: 28px;--fs-2xl: 36px;--fs-3xl: 48px;--fs-mega: clamp(3rem, 8vw, 6rem);--fs-large: clamp(2rem, 6vw, 4rem);--fs-medium: clamp(1.25rem, 3vw, 1.5rem);--lh-tight: 1.1;--lh-snug: 1.3;--lh-normal: 1.5;--lh-relaxed: 1.6;--fw-thin: 100;--fw-light: 300;--fw-regular: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-8: 64px;--space-9: 96px;--space-10: 128px;--radius-none: 0;--radius-pill: 9999px;--container-sm: 640px;--container-md: 768px;--container-lg: 1024px;--container-xl: 1200px;--content-width: 1200px;--reading-width: 720px;--ease-brutal: cubic-bezier(.4, 0, .2, 1);--t-fast: .15s;--t-base: .2s;--t-slow: .4s;--tap-min: 44px;--color-primary: var(--color-accent);--color-primary-dark: #2c4a35;--color-primary-light: #5c8069;--color-cream: var(--color-soft);--color-mint: var(--color-accent-soft);--color-accent-light: var(--color-accent-soft);--color-text: var(--color-ink);--color-text-muted: var(--color-warm-gray);--color-border: var(--color-gray-300);--color-line: var(--color-gray-300);--border: var(--border-brutal);--border-brutal-thin: 1px solid var(--color-ink);--shadow-sm: 2px 2px 0 0 var(--color-ink);--shadow-md: 4px 4px 0 0 var(--color-ink);--radius-md: 0;--radius-lg: 0;--lh-loose: 1.8;--fw-black: 900;--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7W0Q5n-wU-367ba69ac0a2.woff2) format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/inter/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0Q5nw-bec94a4daf06.woff2) format("woff2");unicode-range:U+0-FF,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Noto Serif SC";font-style:normal;font-weight:200 900;font-display:swap;src:url(/fonts/noto-serif-sc/font-19347008c075.woff2) format("woff2");unicode-range:U+20-49,U+4C-50,U+52-55,U+57,U+59,U+5B,U+5D,U+5F-7D,U+B7,U+2014,U+2192,U+2500,U+3001-3002,U+4E00,U+4E0A,U+4E0D,U+4E2A,U+4E2D,U+4E50,U+4E60,U+4FE1,U+51FA,U+5206,U+5230,U+52A8,U+53EF,U+53F7,U+540E,U+5668,U+5728,U+594F,U+5B57,U+5B66,U+5C0F,U+5E08,U+5EA6,U+6210,U+62A5,U+62CD,U+63A5,U+6559,U+6570,U+65F6,U+662F,U+6709,U+672C,U+6B21,U+6F14,U+70B9,U+7434,U+751F,U+7528,U+7684,U+7A7A,U+7B26,U+7B2C,U+7EBF,U+7EC3,U+8001,U+8282,U+8BFE,U+8C31,U+8FDB,U+91CC,U+957F,U+97F3,U+9875,U+FF08-FF09,U+FF0C,U+FF1A}@font-face{font-family:"Noto Serif SC";font-style:normal;font-weight:200 900;font-display:swap;src:url(/fonts/noto-serif-sc/font-8a9260033167.woff2) format("woff2");unicode-range:U+4B,U+51,U+56,U+58,U+5C,U+300C-300D,U+4E09,U+4E0B,U+4E0E,U+4E24,U+4E3A-4E3B,U+4E48,U+4E86,U+4E8C,U+4E8E,U+4EAB,U+4EBA,U+4ECE,U+4EE5,U+4F1A,U+4F5C,U+4FDD,U+5165,U+5168,U+5173,U+5177,U+5185,U+51C6,U+5236,U+524D,U+52A0,U+533A,U+5355,U+5361,U+5386,U+539F,U+53D1,U+53D6,U+53EA,U+5408,U+540C-540D,U+544A,U+5458,U+548C,U+5531,U+56DE,U+56FE,U+5730,U+5757,U+57FA,U+58F0,U+5907,U+590D,U+591A,U+5927,U+5929,U+5B50,U+5B69,U+5B9A,U+5BB6,U+5BB9,U+5BF9,U+5BFC,U+5C31,U+5DE5,U+5DF2,U+5E95,U+5F00,U+5F0F,U+5F31,U+5F53,U+5F55,U+5FAE,U+6211,U+624B,U+6253,U+628A,U+6301,U+6307,U+6309,U+636E,U+63D0,U+6539,U+6574,U+6587,U+65B0,U+65B9,U+65E5,U+66F2,U+66F4,U+6700,U+6761,U+6765,U+677F,U+679C,U+6807,U+683C,U+6B65,U+6BB5,U+6BCF,U+6BD4,U+6CA1,U+6CD5,U+6D4F,U+7247-7248,U+7406,U+7559,U+76F4,U+770B,U+7801,U+793A,U+7A0B,U+7AD9,U+7B49,U+7C7B,U+7CFB,U+7EC4,U+7ED9,U+7F6E,U+80FD,U+81EA,U+82D7,U+884C,U+8868,U+8981,U+89C6,U+89C8,U+8BB0,U+8C03,U+8D77,U+8FC7,U+8FD9,U+9009,U+901A,U+90E8,U+91CD,U+94A2,U+94FE,U+95F4,U+9762,U+9891,U+9898,U+9996,U+9AD8,U+FF1B,U+FF1F}@font-face{font-family:"Noto Serif SC";font-style:normal;font-weight:200 900;font-display:swap;src:url(/fonts/noto-serif-sc/font-8eca412b782f.woff2) format("woff2");unicode-range:U+4A,U+300A-300B,U+3010-3011,U+4E13,U+4E32,U+4E49,U+4E5F,U+4E94,U+4EC0,U+4EF6,U+4F11,U+4F34,U+4F4D,U+4F53,U+4F60,U+5148,U+514D,U+516B,U+516D,U+518D,U+5199,U+51E0,U+51FB,U+5207,U+5217,U+5219,U+522B,U+529B,U+5316,U+5347,U+534A,U+535A,U+5373,U+53BB,U+53CD,U+53F0,U+53F2,U+5426,U+542B-542C,U+542F,U+56DB,U+56E2,U+5904,U+5931,U+5934,U+5956,U+597D,U+5982,U+59CB,U+5B58,U+5B8C,U+5B9E,U+5C11,U+5C55,U+5DDE,U+5DF1,U+5E02,U+5E26,U+5E38,U+5E73-5E74,U+5E76,U+5E8F,U+5F39-5F3A,U+5F8B,U+5F97,U+5FC3,U+5FD7,U+6001,U+606F,U+60C5,U+60E0,U+6216,U+6240,U+6362,U+652F,U+653E,U+65E0,U+65E7,U+663E,U+671F,U+672F,U+673A,U+6750,U+67D3,U+67E5,U+6848,U+6A21,U+6B4C,U+6B62-6B63,U+6CE8,U+6E05,U+6E32,U+6E90,U+73B0,U+7531,U+753B,U+767D,U+771F,U+7840,U+7AE0,U+7AEF,U+7B5B,U+7B7E,U+7B80,U+7EA6-7EA7,U+7ED3,U+7EDF,U+7EED,U+7F13,U+7F51,U+7F57,U+8054,U+8272,U+89E3,U+8BA1,U+8BA4,U+8BA9,U+8BBE,U+8BC6,U+8BD5,U+8BF7,U+8BFB,U+8D25,U+8D34,U+8D5B,U+8D70,U+8DEF,U+8DF3,U+8FD4,U+8FDE,U+907F,U+90FD,U+914D,U+949F,U+94AE,U+9519,U+952E,U+95EE,U+9636,U+9700,U+9879,U+9884,U+9988}@font-face{font-family:"Noto Serif SC";font-style:normal;font-weight:200 900;font-display:swap;src:url(/fonts/noto-serif-sc/font-b7d3b0edb3f8.woff2) format("woff2");unicode-range:U+5E,U+D7,U+2502,U+4E1A,U+4E1C,U+4E4B,U+4E8B,U+4EA4,U+4EC5,U+4ECA,U+4ED6,U+4EEC,U+4EF7,U+4EFB,U+4EFD,U+4F18,U+4F20,U+4F46,U+4F4E,U+4F55,U+4F73,U+4F8B,U+505A,U+513F,U+5171,U+5174,U+5176,U+517C,U+521B,U+529F,U+5305,U+5341,U+53BF,U+53C2,U+53CB,U+53D8,U+53E3,U+53F3,U+5417,U+5468,U+54C1,U+56FD,U+573A,U+5740,U+578B,U+57DF,U+5802,U+586B,U+5916,U+5988,U+5BA2,U+5C42,U+5DE6,U+5E03,U+5E94,U+5EFA,U+5F15,U+5F20,U+5F62,U+5F71,U+5F84,U+5FC5,U+5FEB,U+60F3,U+610F,U+611F,U+6162,U+6237,U+627E,U+6298,U+6392,U+6458,U+64AD,U+6536,U+65AD,U+65CB,U+6708,U+67D0,U+680F,U+6837,U+6839,U+684C,U+6C34,U+6C42,U+6D41,U+6D77,U+6DF1,U+6E10,U+6E38,U+6EDA,U+7167,U+7279,U+72EC,U+76EE,U+76F8,U+77E5,U+77ED,U+786E,U+79CD,U+79D2,U+79FB,U+7AE5,U+7B54,U+7B97,U+7BA1,U+7C97-7C98,U+7EAF,U+7ECF,U+7EE9,U+7EF4,U+7F16,U+7F8E,U+8003,U+800C,U+80B2,U+821E,U+827A,U+83B7,U+8499,U+88AB,U+89C1,U+89C4,U+89D2,U+8BC4,U+8BE5-8BE6,U+8BED,U+8D39,U+8D8A,U+8DDF,U+8F6C,U+8F7D,U+8FB9,U+8FD1,U+8FD8,U+9000,U+901F,U+90A3,U+90AE,U+91CE-91CF,U+9650,U+96F6,U+9876,U+987A-987B,U+98CE,U+9ED1,U+9ED8}@font-face{font-family:"Noto Serif SC";font-style:normal;font-weight:200 900;font-display:swap;src:url(/fonts/noto-serif-sc/font-7e7a85e93590.woff2) format("woff2");unicode-range:U+5A,U+7E,U+2190,U+26A0,U+4E14,U+4E91,U+4E9B,U+4ECD,U+4EE3,U+4F4F,U+4F59,U+4F7F,U+4F9B,U+4FA7,U+4FBF,U+4FEE,U+503C,U+50CF,U+5143,U+5149,U+515C,U+51B3,U+51D1,U+51FD,U+526A,U+526F,U+52A1,U+52BF,U+5360,U+5370,U+53CC,U+53D7,U+53E0,U+53E5,U+53EB,U+5404,U+5411,U+54A8,U+54CD,U+54EA,U+552F,U+5609,U+5750-5751,U+5883,U+589E,U+58A8,U+591F,U+5B83,U+5B89,U+5C14,U+5C40,U+5C4F,U+5C5E,U+5C81,U+5DEE,U+5E7F,U+5EF6,U+5F85,U+5F88,U+5FCD,U+5FF5,U+600E,U+601D,U+6027,U+61C2,U+620F,U+624D,U+6280,U+6296,U+6389,U+638C,U+63A8-63A9,U+6446,U+6491,U+64CD,U+6545,U+6548,U+660E,U+6613,U+666F,U+66FF,U+670B,U+672A,U+6784,U+6790,U+67D4,U+6821,U+68C0,U+6B64,U+6C38,U+6D4B,U+6D88,U+6DFB,U+6EE1,U+72B6,U+73AF,U+7535,U+7565,U+76D6,U+773C,U+7740,U+786C,U+79BB,U+79D1,U+7A33,U+7ACB,U+7BB1,U+7BC7,U+7D20,U+7D27,U+7EA0,U+7EC8,U+7EE7,U+7EFF,U+7F3A,U+81F3-81F4,U+822A,U+8303,U+8363,U+839E,U+843D,U+8986,U+89C9,U+89E6,U+8BAD-8BAE,U+8BDD,U+8BE2,U+8BEF,U+8BF4,U+8C61,U+8DA3,U+8DE8,U+8EAB,U+8F74,U+8F91,U+8F93,U+8FDC,U+9001-9002,U+95E8,U+9605,U+9634,U+9664,U+9690,U+96C6,U+9759}@font-face{font-family:"Noto Serif SC";font-style:normal;font-weight:200 900;font-display:swap;src:url(/fonts/noto-serif-sc/font-6e1a6835dc81.woff2) format("woff2");unicode-range:U+A5,U+2013,U+2026,U+4E03,U+4E34,U+4E45,U+4E4E,U+4E5D,U+4E66,U+4E92,U+4EA7,U+4EAE,U+4ED8,U+4F9D,U+4FC3,U+5019,U+504F,U+505C,U+5077,U+514B,U+517B,U+5220,U+523B,U+529E,U+5339,U+538B,U+53E4,U+5427,U+5438,U+547C-547D,U+56E0,U+5706,U+5747,U+57CE,U+5899,U+5A01,U+5BA4,U+5BAB,U+5BBD,U+5BC6,U+5C01,U+5C3E,U+5C45,U+5C4A,U+5D4C,U+5DE7,U+5E93,U+5F26,U+5F80,U+6025,U+603B,U+60E9,U+6218,U+622A,U+6233,U+6269,U+626B,U+627F,U+62BD,U+62C9,U+62D6,U+62E9,U+62FC,U+6302,U+6311,U+6325,U+63E1,U+661F,U+6625,U+6628,U+6682,U+670D,U+672B,U+6743,U+6781,U+6838,U+6846,U+6B22,U+6B8A,U+6BEB,U+6C11,U+6C9F,U+6D45,U+6E7E,U+6EE4,U+7070,U+7136,U+7231,U+7387,U+73A9,U+7701,U+77E9,U+77F3,U+7834,U+788D,U+7956,U+79C0-79C1,U+79F0,U+7B14,U+7EA2,U+7EC6,U+7EDD,U+7F29,U+7F5A,U+8005,U+804A,U+80CC,U+811A,U+8239,U+82B1,U+82BD,U+82E5,U+865A,U+88C5,U+8A89,U+8BA2,U+8BC1,U+8C22,U+8D44,U+8D4B,U+8D56,U+8D8B,U+8DD1,U+8E0F,U+8F7B,U+8F83,U+8FBE,U+8FCE,U+8FFD,U+903B,U+904D,U+9053,U+9547,U+9632,U+9635,U+9644,U+964D,U+966A,U+9694,U+969C,U+9732,U+9752,U+975E,U+987E,U+9897,U+9A8C,U+9F50,U+9F84}@font-face{font-family:"Noto Serif SC";font-style:normal;font-weight:200 900;font-display:swap;src:url(/fonts/noto-serif-sc/font-750725c5112f.woff2) format("woff2");unicode-range:U+203A,U+2191,U+25CE,U+266A,U+266C-266D,U+2696,U+4E16,U+4E58,U+4E9A,U+4EB2,U+4ECB,U+5145,U+516C,U+5178,U+518C,U+519C,U+51B5,U+51CF,U+521A,U+521D,U+5224,U+5229,U+5237,U+52B1,U+52B3,U+534F,U+5374,U+5384,U+53CA,U+53E6,U+540A,U+548F,U+54C8,U+54D4,U+54E9,U+5546,U+5566,U+559C,U+56F4,U+56FA,U+574F,U+575A,U+5766,U+57F9,U+5821,U+5854,U+58A9,U+592A,U+592E,U+5957,U+59D3,U+59FF,U+5B81,U+5B87,U+5B98,U+5B9D,U+5BF8,U+5C39-5C3A,U+5C3C,U+5C49,U+5C51,U+5C65,U+5D29,U+5DF4,U+5E0C,U+5E2E,U+5E42,U+5E72,U+5EAD,U+5F02,U+5FB7,U+5FBD,U+5FFD,U+6015,U+613F,U+624E,U+6258,U+62C6,U+62D2,U+62D4,U+62DC,U+62FF,U+6324,U+632A,U+63CF,U+63D2,U+641C,U+6572,U+65A5,U+65AF,U+65BD,U+6620,U+6635,U+666E,U+6696-6697,U+66B4,U+671B,U+6746,U+675F,U+6797,U+6851,U+68A6,U+6A2A,U+6B23,U+6B7B,U+6C14,U+6C40,U+6C47,U+6CB3,U+6CE2,U+6D6E,U+6DE1,U+6E29,U+6ED1,U+706F,U+70E6,U+7269,U+738B,U+754C,U+76D7,U+793E,U+7A81,U+7CCA,U+7D22,U+7EEA,U+8010,U+810F,U+822C,U+8350,U+878D,U+8865,U+88C1,U+8D1F,U+8D23,U+8D85,U+8DDD,U+8F66,U+9014,U+9177,U+9192,U+95EA,U+961F,U+9662,U+96BE,U+9EC4,U+9F13,U+FF01}@font-face{font-family:"Noto Serif SC";font-style:normal;font-weight:200 900;font-display:swap;src:url(/fonts/noto-serif-sc/font-a21b2b1ccbdc.woff2) format("woff2");unicode-range:U+A9,U+201C-201D,U+2193-2194,U+21CC,U+2460-2462,U+250C,U+2510,U+2514,U+2518,U+25B6,U+2605,U+300E-300F,U+4E07,U+4E25,U+4E3E,U+4E71,U+4EAC,U+4F2F,U+4F38,U+4F3C,U+4F88,U+5012,U+5047,U+50AC,U+5179,U+5192,U+5197,U+51B0,U+51B2,U+51B6-51B7,U+51ED,U+5212,U+5218,U+523A,U+5269,U+52C3,U+52C7,U+52FF-5300,U+5348,U+534E,U+5356-5357,U+5371,U+5385,U+53C8,U+53D4,U+53EE,U+5415,U+543B,U+5473,U+54AC,U+54B1,U+54D2,U+5524,U+5565,U+5582,U+5584,U+55D3,U+566A,U+56CA,U+585E,U+591C,U+5947,U+5962,U+5973,U+59A5,U+59C6,U+59D4,U+5A92,U+5B63,U+5BA3,U+5BBE-5BBF,U+5BC4,U+5BCC,U+5BDF,U+5C04,U+5C16,U+5C1D,U+5C3D,U+5C71,U+5DDD,U+5E55,U+5E9F,U+5F03,U+5F2F,U+5F52,U+5F6D,U+5FD8,U+6052,U+6062,U+60B2,U+60EF,U+73ED,U+742A,U+767E,U+77AC,U+780D,U+79E6,U+7A84,U+7A97,U+7B56,U+7C73,U+7CBE,U+7EB3,U+7ED1,U+7ED5,U+7EDC,U+7EF0,U+7EFC,U+7F72,U+8111,U+817E,U+82F1,U+8309,U+8389,U+8398,U+83DC,U+85CF,U+897F,U+8A00,U+8B66,U+8BAF,U+8BBF,U+8BCD,U+8BDA,U+8D26,U+8D3A,U+8D4F,U+8D6B,U+8DB3,U+8F68,U+8FD0,U+8FF0,U+8FF9,U+90BB,U+91CA,U+951A,U+95ED,U+968F,U+987F,U+9A71,U+FF5E}@font-face{font-family:"Noto Serif SC";font-style:normal;font-weight:200 900;font-display:swap;src:url(/fonts/noto-serif-sc/font-9239ec46b4bc.woff2) format("woff2");unicode-range:U+6109,U+61D2,U+6252,U+626C,U+6270,U+6291,U+6295,U+629B,U+62A2,U+62AC,U+62B5,U+62C5,U+62EC,U+633A,U+6388,U+63A7,U+642D,U+6447,U+644A,U+6478,U+64A4,U+64CE,U+653F,U+654F,U+6563,U+659C,U+65E2,U+65E6,U+65E9,U+6655,U+6670,U+6717,U+671D,U+6728,U+6734,U+674E,U+6760,U+676F-6770,U+677E,U+67B6,U+6868,U+68CB,U+6982,U+6A1F,U+6A59,U+6B32,U+6B3E,U+6C49,U+6C57,U+6CB9,U+6CC4,U+6D17,U+6D1E,U+6D82,U+6D89,U+6E21,U+706B,U+70BC-70BD,U+70C8,U+70ED,U+7126,U+719F,U+724C,U+7262,U+731C,U+73CD,U+7436,U+74F6,U+7532,U+7537,U+75C5,U+767B,U+76AE,U+76D1,U+76D8,U+76EF,U+77E2,U+7814,U+78B0,U+7A0D,U+7A7F,U+7AD6,U+7B11,U+7B1B,U+7BEE,U+7CA4,U+7D6E,U+7E41,U+7EB8-7EB9,U+7ECD,U+7ED2,U+7ED8,U+7F00,U+7FA4,U+7FFB,U+8017,U+8033,U+8042,U+8089,U+80AF,U+80F6,U+8131,U+8138,U+826F,U+8349,U+835F,U+8361,U+85AA,U+8854,U+886C,U+88C2,U+89C2,U+8BB2,U+8BBA,U+8BC0,U+8D30,U+8D35,U+8D37,U+8E29,U+8FA8,U+8FC5,U+900F-9010,U+9047,U+9057,U+9488,U+94C3,U+94F6,U+9500,U+9510,U+9526,U+955C,U+9633,U+963B,U+9645,U+9669,U+9676,U+96C5,U+96EA,U+9760,U+97E9,U+984D,U+9886,U+9888,U+9893,U+989C,U+9910}@font-face{font-family:"Noto Serif SC";font-style:normal;font-weight:200 900;font-display:swap;src:url(/fonts/noto-serif-sc/font-ef4b1da4f807.woff2) format("woff2");unicode-range:U+9970,U+9A6C,U+9A97,U+9AA4,U+9AA8,U+9E23,U+9E26,U+9E4F,U+9EA6,U+9EBB}*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;scroll-behavior:smooth;scroll-padding-top:80px}body{font-family:var(--font-sans);font-size:var(--fs-base);font-weight:var(--fw-regular);line-height:var(--lh-normal);color:var(--color-ink);background-color:var(--color-paper);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;min-height:100vh;overflow-x:clip}.font-serif{font-family:var(--font-serif)}img,picture,video,canvas,svg{display:block;max-width:100%;height:auto}button{font-family:inherit;font-size:inherit;color:inherit;background:none;border:none;cursor:pointer}input,textarea,select{font:inherit;color:inherit;background:var(--color-paper)}a{color:inherit;text-decoration:none;transition:opacity var(--t-fast) var(--ease-brutal)}ul,ol{list-style:none}h1,h2,h3,h4,h5,h6{font-family:var(--font-sans);font-weight:var(--fw-light);line-height:var(--lh-tight);color:var(--color-ink);letter-spacing:-.02em}p{line-height:var(--lh-relaxed);color:var(--color-ink)}::selection{background:var(--color-ink);color:var(--color-paper)}.mega-text{font-size:var(--fs-mega);font-weight:var(--fw-thin);line-height:var(--lh-tight);letter-spacing:-.02em}.large-text{font-size:var(--fs-large);font-weight:var(--fw-light);line-height:var(--lh-tight)}.medium-text{font-size:var(--fs-medium);font-weight:var(--fw-regular);line-height:1.4}.ico{display:inline-block;vertical-align:-.125em;flex-shrink:0}.ico-gap{margin-right:.4em}.container{width:100%;max-width:var(--container-xl);margin:0 auto;padding:0 var(--space-5)}.container-narrow{width:100%;max-width:var(--reading-width);margin:0 auto;padding:0 var(--space-5)}.section{padding:var(--space-8) 0}@media (min-width: 768px){.section{padding:var(--space-9) 0}}:focus-visible{outline:2px solid var(--color-ink);outline-offset:4px}.neo-brutal{background:var(--color-paper);border:var(--border-brutal);box-shadow:var(--shadow-brutal);transition:transform var(--t-base) var(--ease-brutal),box-shadow var(--t-base) var(--ease-brutal)}.neo-brutal:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-brutal-lg)}.neo-brutal:active{transform:translate(0);box-shadow:var(--shadow-brutal-sm)}.neo-static{background:var(--color-paper);border:var(--border-brutal);box-shadow:var(--shadow-brutal)}.retro-border{border:var(--border-brutal);position:relative}.retro-border:before{content:"";position:absolute;top:-4px;left:-4px;right:-4px;bottom:-4px;border:1px solid var(--color-ink);pointer-events:none}.dot{display:inline-block;width:8px;height:8px;background:var(--color-ink);flex-shrink:0}.divider{height:2px;background:var(--color-ink);margin:var(--space-5) 0}.bg-soft{background:var(--color-soft)}@keyframes fade-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes pulse{0%,to{transform:scale(1);opacity:.3}50%{transform:scale(1.05);opacity:.5}}.float-animation{animation:float 3s ease-in-out infinite}.reveal{opacity:0;transform:translateY(20px);transition:opacity .6s var(--ease-brutal),transform .6s var(--ease-brutal)}.reveal.is-visible{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}html{scroll-behavior:auto}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:var(--tap-min);padding:0 var(--space-5);font-size:var(--fs-sm);font-weight:var(--fw-medium);letter-spacing:.02em;text-transform:none;background:var(--color-ink);color:var(--color-paper);border:var(--border-brutal);cursor:pointer;transition:all var(--t-base) var(--ease-brutal);text-decoration:none;-webkit-user-select:none;user-select:none;white-space:nowrap}.btn:hover{background:var(--color-paper);color:var(--color-ink);transform:translate(-1px,-1px);box-shadow:2px 2px 0 0 var(--color-ink)}.btn:active{transform:translate(0);box-shadow:none}.btn:disabled,.btn[aria-disabled=true]{background:var(--color-gray-600);border-color:var(--color-gray-600);color:var(--color-paper);box-shadow:none;transform:none;cursor:not-allowed}.btn:disabled:hover,.btn:disabled:active,.btn[aria-disabled=true]:hover{background:var(--color-gray-600);color:var(--color-paper);transform:none;box-shadow:none}.btn-outline:disabled,.btn-outline[aria-disabled=true],.btn-outline:disabled:hover{background:var(--color-gray-600);border-color:var(--color-gray-600);color:var(--color-paper)}.btn-outline{background:var(--color-paper);color:var(--color-ink)}.btn-outline:hover{background:var(--color-ink);color:var(--color-paper)}.btn-lg{min-height:56px;padding:0 var(--space-7);font-size:var(--fs-base)}.btn-block{width:100%}.btn-sm{min-height:36px;padding:0 var(--space-4);font-size:var(--fs-xs)}.avatar-container{position:relative;display:inline-block;padding:10px}.avatar-glow{position:absolute;top:0;left:0;right:0;bottom:0;background:var(--color-ink);border-radius:50%;z-index:-1;animation:pulse 2s infinite}.avatar-image{width:100%;height:100%;object-fit:cover;border-radius:50%;border:var(--border-brutal)}.game-cassette{background:var(--color-paper);border:var(--border-brutal);padding:.5rem 1rem;margin:.25rem;display:inline-block;transition:all var(--t-base) var(--ease-brutal);cursor:pointer}.game-cassette:hover{transform:translateY(-2px);box-shadow:var(--shadow-brutal)}.form-group{margin-bottom:var(--space-4)}.form-label{display:block;font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--color-ink);margin-bottom:var(--space-2)}.form-input,.form-textarea,.form-select{width:100%;min-height:var(--tap-min);padding:var(--space-3) var(--space-4);background:var(--color-paper);border:var(--border-brutal);box-shadow:var(--shadow-brutal-sm);border-radius:0;font-size:var(--fs-base);color:var(--color-ink);transition:all var(--t-fast) var(--ease-brutal)}.form-textarea{min-height:120px;resize:vertical;line-height:var(--lh-relaxed)}.form-input:focus,.form-textarea:focus,.form-select:focus{outline:none;transform:translate(-1px,-1px);box-shadow:var(--shadow-brutal)}.header{position:sticky;top:0;z-index:1000;background:#fffffff5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:var(--border-brutal);box-shadow:0 2px 0 0 var(--color-ink);transition:box-shadow var(--t-base) var(--ease-brutal)}#site-header{position:sticky;top:0;z-index:999;overflow:visible;contain:layout style}.header.is-scrolled{box-shadow:var(--shadow-brutal-sm)}.header-inner{display:flex;align-items:center;justify-content:space-between;height:64px;max-width:var(--content-width);margin:0 auto;padding:0 var(--space-5)}.brand{display:flex;align-items:center;gap:10px;font-family:var(--font-sans);font-size:var(--fs-lg);font-weight:var(--fw-bold);color:var(--color-ink);letter-spacing:-.01em}.brand-mark{width:32px;height:32px;display:grid;place-items:center;background:var(--color-ink);color:var(--color-paper);font-family:var(--font-serif);font-weight:var(--fw-bold);font-size:18px;line-height:1}.nav{display:none;align-items:center;gap:var(--space-2)}.nav-link{padding:8px 14px;font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--color-ink);border-bottom:2px solid transparent;transition:border-color var(--t-fast) var(--ease-brutal)}.nav-link:hover,.nav-link.is-active{border-bottom-color:var(--color-ink)}.menu-toggle{display:flex;align-items:center;justify-content:center;width:44px;height:44px;color:var(--color-ink);background:var(--color-paper);border:var(--border-brutal)}.menu-toggle svg{width:22px;height:22px}.mobile-drawer{display:none;position:fixed;top:64px;right:0;bottom:0;left:0;background:var(--color-paper);z-index:998;padding:var(--space-5);overflow-y:auto;-webkit-overflow-scrolling:touch;border-top:var(--border-brutal);box-shadow:0 8px 24px #00000014;max-height:calc(100vh - 64px)}.mobile-drawer.is-open{display:block}.mobile-drawer .nav-link{display:block;padding:var(--space-4);font-size:var(--fs-md);border-bottom:var(--border-brutal)}@media (min-width: 900px){.nav{display:flex}.menu-toggle{display:none}.mobile-drawer{display:none!important}}.footer{background:var(--color-paper);color:var(--color-ink);border-top:var(--border-brutal);padding:var(--space-7) 0 var(--space-5);margin-top:var(--space-9)}.footer-grid{display:grid;gap:var(--space-6);grid-template-columns:1fr}@media (min-width: 768px){.footer-grid{grid-template-columns:1.4fr 1fr 1fr 1fr}}.footer-brand .brand{color:var(--color-ink)}.footer-text{margin-top:var(--space-3);color:var(--color-gray-700);font-size:var(--fs-sm);line-height:var(--lh-relaxed)}.footer-title{font-size:var(--fs-sm);text-transform:uppercase;letter-spacing:.08em;color:var(--color-ink);margin-bottom:var(--space-3);font-family:var(--font-sans);font-weight:var(--fw-bold)}.footer-list a{display:inline-block;padding:4px 0;color:var(--color-ink);font-size:var(--fs-sm);border-bottom:2px solid transparent;transition:border-color var(--t-fast) var(--ease-brutal)}.footer-list a:hover{border-bottom-color:var(--color-ink)}.footer-social{display:flex;justify-content:center;gap:var(--space-5);flex-wrap:wrap}.footer-social a{font-size:var(--fs-sm);color:var(--color-gray-700);border-bottom:2px solid transparent;transition:border-color var(--t-fast) var(--ease-brutal),color var(--t-fast) var(--ease-brutal)}.footer-social a:hover{color:var(--color-ink);border-bottom-color:var(--color-ink)}.footer-bottom{margin-top:var(--space-6);padding-top:var(--space-4);border-top:var(--border-brutal);font-size:var(--fs-xs);color:var(--color-gray-500);text-align:center}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000eb;display:none;align-items:center;justify-content:center;z-index:1000;padding:var(--space-5);cursor:zoom-out}.lightbox.is-open{display:flex;animation:fade-in var(--t-base) var(--ease-brutal)}.lightbox img{max-width:100%;max-height:100%;border:var(--border-brutal);box-shadow:8px 8px 0 0 var(--color-paper)}.lightbox-close{position:absolute;top:var(--space-4);right:var(--space-4);width:44px;height:44px;background:var(--color-paper);color:var(--color-ink);border:var(--border-brutal);display:grid;place-items:center;font-size:22px;font-weight:var(--fw-bold)}.toast{position:fixed;bottom:var(--space-5);left:50%;transform:translate(-50%) translateY(120%);background:var(--color-ink);color:var(--color-paper);padding:var(--space-3) var(--space-5);box-shadow:var(--shadow-brutal);font-size:var(--fs-sm);font-weight:var(--fw-medium);z-index:1001;transition:transform var(--t-base) var(--ease-brutal);pointer-events:none}.toast.is-visible{transform:translate(-50%) translateY(0)}.tool-progress-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap;background:var(--color-accent);color:var(--color-paper);padding:var(--space-3) var(--space-5);margin-bottom:var(--space-5);border:var(--border-brutal);box-shadow:var(--shadow-brutal-sm);font-size:var(--fs-sm)}.tool-progress-banner strong{font-weight:var(--fw-bold)}.filter-btn.is-completed{background:var(--color-paper);border-color:var(--color-accent);color:var(--color-accent)}.faq-list{display:grid;gap:var(--space-5)}.faq-category{background:var(--color-paper);border:var(--border-brutal);box-shadow:var(--shadow-brutal);padding:var(--space-5)}.faq-category-title{font-family:var(--font-display);font-size:var(--fs-lg);font-weight:var(--fw-bold);color:var(--color-ink);margin-bottom:var(--space-4);padding-bottom:var(--space-3);border-bottom:var(--border-thick)}.faq-item{border-bottom:var(--border-thin);padding:var(--space-3) 0}.faq-item:last-child{border-bottom:none;padding-bottom:0}.faq-question{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);cursor:pointer;list-style:none;font-weight:var(--fw-medium);color:var(--color-ink);padding:var(--space-2) 0;-webkit-user-select:none;user-select:none}.faq-question::-webkit-details-marker{display:none}.faq-question:hover{color:var(--color-accent)}.faq-icon{font-size:24px;font-weight:var(--fw-bold);line-height:1;flex-shrink:0;transition:transform var(--t-base) var(--ease-brutal)}.faq-item[open] .faq-icon{transform:rotate(45deg)}.faq-answer{margin-top:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-muted);color:var(--color-ink);line-height:var(--lh-relaxed);font-size:var(--fs-sm);border-left:4px solid var(--color-accent)}.faq-tags{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-4)}.faq-tag{display:inline-flex;align-items:center;gap:6px;min-height:38px;padding:6px 14px;background:var(--color-paper);border:var(--border-brutal);box-shadow:var(--shadow-brutal-sm);color:var(--color-ink);font-family:var(--font-display);font-size:var(--fs-sm);font-weight:var(--fw-semibold);line-height:1;cursor:pointer;transition:transform var(--t-fast) var(--ease-brutal),box-shadow var(--t-fast) var(--ease-brutal),background var(--t-fast) var(--ease-brutal),color var(--t-fast) var(--ease-brutal)}.faq-tag:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 0 var(--color-ink)}.faq-tag:active{transform:translate(2px,2px);box-shadow:0 0 0 0 var(--color-ink)}.faq-tag:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.faq-tag.is-active{background:var(--color-ink);color:var(--color-paper)}.faq-tag.is-active .faq-tag-count{background:var(--color-paper);color:var(--color-ink)}.faq-tag-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 5px;background:var(--color-soft);border:1px solid var(--color-ink);font-size:var(--fs-xs);font-weight:var(--fw-bold);line-height:1}.faq-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-3);margin-bottom:var(--space-4)}.faq-hint{margin:0;font-size:var(--fs-sm);color:var(--color-warm-gray)}.faq-toggle-all{background:none;border:none;padding:0;min-height:32px;font-family:var(--font-display);font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-accent);text-decoration:underline;text-underline-offset:3px;cursor:pointer}.faq-toggle-all:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.faq-empty{margin-top:var(--space-4);padding:var(--space-5);background:var(--color-soft);border:var(--border-brutal);text-align:center;color:var(--color-warm-gray);font-size:var(--fs-sm)}.faq-category[hidden]{display:none}@media (max-width: 640px){.faq-tags{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:var(--space-2);scrollbar-width:none}.faq-tags::-webkit-scrollbar{display:none}.faq-tag{flex:0 0 auto;min-height:var(--tap-min);padding:0 16px}}.stack-1>*+*{margin-top:var(--space-1)}.stack-2>*+*{margin-top:var(--space-2)}.stack-3>*+*{margin-top:var(--space-3)}.stack-4>*+*{margin-top:var(--space-4)}.stack-5>*+*{margin-top:var(--space-5)}.stack-6>*+*{margin-top:var(--space-6)}.flex{display:flex}.flex-center{display:flex;align-items:center;justify-content:center}.flex-between{display:flex;align-items:center;justify-content:space-between}.flex-wrap{flex-wrap:wrap}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.gap-5{gap:var(--space-5)}.gap-6{gap:var(--space-6)}.text-center{text-align:center}.text-right{text-align:right}.mt-4{margin-top:var(--space-4)}.mt-6{margin-top:var(--space-6)}.mt-8{margin-top:var(--space-8)}.mb-4{margin-bottom:var(--space-4)}.mb-6{margin-bottom:var(--space-6)}.hidden-mobile{display:block}.hidden-desktop{display:none}@media (min-width: 768px){.hidden-mobile{display:none}.hidden-desktop{display:block}}.empty-state{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-7) var(--space-5);text-align:center;color:var(--color-warm-gray)}.empty-state .ico{width:40px;height:40px;color:var(--color-gray-300);stroke-width:1.5}.empty-state p{margin:0;line-height:var(--lh-normal)}.empty-state>.section-title,.empty-state>.section-subtitle{margin-bottom:0}.empty-state__hint{font-size:var(--fs-sm)}.empty-state code{background:var(--color-soft);padding:2px 6px;font-family:var(--font-mono);font-size:.92em}.section-title{font-family:var(--font-sans);font-size:var(--fs-large);font-weight:var(--fw-light);color:var(--color-ink);text-align:center;margin-bottom:var(--space-3);letter-spacing:-.02em}.section-subtitle{text-align:center;color:var(--color-gray-700);font-size:var(--fs-md);max-width:600px;margin:0 auto var(--space-7)}.section-title .ico,.course-section-title .ico{width:.6em;height:.6em;vertical-align:.08em}.section-eyebrow{display:block;text-align:center;font-family:var(--font-sans);font-size:var(--fs-sm);letter-spacing:.2em;color:var(--color-ink);text-transform:uppercase;margin-bottom:var(--space-2);font-weight:var(--fw-bold)}.canvas-workspace{display:grid;grid-template-columns:110px 1fr 200px;gap:var(--space-3);margin-top:var(--space-5);align-items:start}.canvas-toolbar{border:var(--border-brutal);background:var(--color-paper);padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-3);position:sticky;top:80px}.canvas-tool-group{display:flex;flex-direction:column;gap:6px}.canvas-tool-label{font-size:10px;letter-spacing:.1em;text-transform:uppercase;font-weight:var(--fw-bold);color:var(--color-ink);margin-bottom:2px;padding-bottom:4px;border-bottom:2px solid var(--color-ink)}.canvas-tool-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:8px 4px;border:2px solid var(--color-ink);background:var(--color-paper);color:var(--color-ink);cursor:pointer;transition:all 80ms ease-out;font-family:inherit}.canvas-tool-btn:hover{background:var(--color-ink);color:var(--color-paper);transform:translate(-1px,-1px);box-shadow:2px 2px 0 0 var(--color-ink)}.canvas-tool-btn.is-active{background:var(--color-primary);border-color:var(--color-ink);color:var(--color-paper)}.canvas-tool-icon{font-size:22px;line-height:1}.canvas-tool-text{font-size:10px;letter-spacing:.02em}.canvas-stage{display:flex;flex-direction:column;gap:var(--space-3);min-width:0}.canvas-topbar{display:flex;gap:var(--space-3);align-items:center;justify-content:space-between;flex-wrap:wrap;border:var(--border-brutal);background:var(--color-paper);padding:var(--space-2) var(--space-3)}.canvas-topbar-group{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.canvas-icon-btn{display:inline-flex;align-items:center;gap:4px;padding:6px 10px;border:2px solid var(--color-ink);background:var(--color-paper);color:var(--color-ink);cursor:pointer;font-family:inherit;font-size:var(--fs-sm);transition:all 80ms ease-out}.canvas-icon-btn:hover{background:var(--color-ink);color:var(--color-paper);transform:translate(-1px,-1px);box-shadow:2px 2px 0 0 var(--color-ink)}.canvas-toggle{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border:2px solid var(--color-ink);background:var(--color-paper);cursor:pointer;font-size:var(--fs-sm);-webkit-user-select:none;user-select:none}.canvas-toggle input{margin:0}.canvas-toggle:has(input:checked){background:var(--color-primary);color:var(--color-paper)}.canvas-frame{border:var(--border-brutal);background:var(--color-paper);padding:0;overflow:hidden;position:relative;min-height:480px}.canvas-frame canvas{display:block;width:100%!important;height:auto!important;touch-action:none}.canvas-hint{font-size:var(--fs-xs);color:var(--color-gray-700);text-align:center;padding:var(--space-2) 0}.canvas-palette{border:var(--border-brutal);background:var(--color-paper);padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-4);position:sticky;top:80px}.canvas-palette-group{display:flex;flex-direction:column;gap:6px}.canvas-color-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:4px}.canvas-color-swatch{width:100%;aspect-ratio:1;border:2px solid var(--color-ink);cursor:pointer;padding:0;transition:transform 80ms ease-out}.canvas-color-swatch:hover{transform:scale(1.1)}.canvas-color-swatch.is-active{outline:3px solid var(--color-primary);outline-offset:1px}#customColor{width:100%;height:32px;border:2px solid var(--color-ink);background:var(--color-paper);cursor:pointer;padding:0}.canvas-slider{width:100%;accent-color:var(--color-primary)}.canvas-note-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}.canvas-note-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:8px 4px;border:2px solid var(--color-ink);background:var(--color-paper);cursor:pointer;font-family:inherit;color:var(--color-ink);transition:all 80ms ease-out;min-height:56px}.canvas-note-btn:hover{background:var(--color-primary);color:var(--color-paper);transform:translate(-1px,-1px);box-shadow:2px 2px 0 0 var(--color-ink)}.canvas-note-name{font-size:9px;letter-spacing:.02em}@media (max-width: 960px){.canvas-workspace{grid-template-columns:100px 1fr}.canvas-palette{grid-column:1 / -1;position:static;flex-direction:row;flex-wrap:wrap}.canvas-palette-group{flex:1 1 200px}.canvas-color-grid{grid-template-columns:repeat(10,1fr)}}@media (max-width: 640px){.canvas-workspace{grid-template-columns:1fr}.canvas-toolbar{flex-direction:row;flex-wrap:wrap;position:static}.canvas-tool-group{flex:1 1 calc(50% - 4px);min-width:140px}.canvas-tool-group:first-child{flex:1 1 100%}.canvas-palette{flex-direction:column}.canvas-color-grid{grid-template-columns:repeat(10,1fr)}.canvas-topbar{justify-content:flex-start}}.blog-grid-inner{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-5)}@media (max-width: 960px){.blog-grid-inner{grid-template-columns:repeat(2,1fr)}}@media (max-width: 640px){.blog-grid-inner{grid-template-columns:1fr}}.blog-card{background:var(--color-paper);border-radius:var(--radius-lg);overflow:hidden;border:var(--border);box-shadow:var(--shadow-sm);transition:transform .2s ease,box-shadow .2s ease}.blog-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}.blog-card-link{display:block;color:inherit;text-decoration:none}.blog-cover{width:100%;aspect-ratio:16 / 9;background:var(--color-cream);overflow:hidden}.blog-cover img{width:100%;height:100%;object-fit:cover;display:block}.blog-cover-placeholder{display:flex;align-items:center;justify-content:center;color:var(--color-gray-300)}.blog-cover-placeholder .ico{width:48px;height:48px;stroke-width:1.5}.blog-card-body{padding:var(--space-5)}.blog-card-meta{display:flex;gap:var(--space-3);align-items:center;font-size:var(--fs-xs);color:var(--color-warm-gray);margin-bottom:var(--space-3)}.blog-card-category{background:var(--color-cream);color:var(--color-primary-dark);padding:2px 10px;border-radius:999px;font-weight:var(--fw-medium)}.blog-card-date{letter-spacing:.02em}.blog-card-title{font-family:var(--font-serif);font-size:var(--fs-lg);color:var(--color-ink);margin:0 0 var(--space-3) 0;line-height:1.4}.blog-card-excerpt{font-size:var(--fs-sm);color:var(--color-text-muted);line-height:var(--lh-relaxed);margin:0 0 var(--space-3) 0;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.blog-card-tags{display:flex;flex-wrap:wrap;gap:6px}.blog-tag{display:inline-block;font-size:var(--fs-xs);color:var(--color-primary-dark);background:transparent;padding:0;border:0;text-decoration:none}.blog-tag:hover{text-decoration:underline}.blog-filter-row{display:flex;flex-wrap:wrap;gap:var(--space-5);justify-content:center;margin-bottom:var(--space-6)}.blog-filter-group{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.blog-filter-label{font-size:var(--fs-sm);color:var(--color-warm-gray);margin-right:var(--space-2);font-weight:var(--fw-medium)}.filter-btn.is-small{font-size:var(--fs-xs);padding:4px 10px;min-height:28px}.breadcrumb{padding:var(--space-5) 0 var(--space-4) 0;font-size:var(--fs-sm);color:var(--color-warm-gray)}.breadcrumb a{color:inherit;text-decoration:none}.breadcrumb a:hover{color:var(--color-primary-dark)}.breadcrumb-sep{margin:0 var(--space-2);opacity:.5}.post-header{padding-bottom:var(--space-6);border-bottom:1px solid var(--color-border);margin-bottom:var(--space-6)}.post-meta{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center;font-size:var(--fs-sm);color:var(--color-warm-gray);margin-bottom:var(--space-3)}.post-date{letter-spacing:.02em}.post-read{padding-left:var(--space-3);border-left:1px solid var(--color-border)}.post-title{font-family:var(--font-serif);font-size:var(--fs-3xl);color:var(--color-ink);margin:0 0 var(--space-4) 0;line-height:1.3}.post-excerpt{font-size:var(--fs-md);color:var(--color-text-muted);line-height:var(--lh-relaxed);margin:0 0 var(--space-4) 0}.post-tags{display:flex;flex-wrap:wrap;gap:var(--space-3)}.post-cover{width:100%;border-radius:var(--radius-lg);margin-bottom:var(--space-6)}.post-content{font-size:var(--fs-md);line-height:var(--lh-loose);color:var(--color-text)}.post-content h3{font-family:var(--font-serif);color:var(--color-primary-dark);margin:var(--space-7) 0 var(--space-3);font-size:var(--fs-xl)}.post-content p{margin:0 0 var(--space-4) 0}.post-content ul,.post-content ol{padding-left:var(--space-5);margin:0 0 var(--space-4) 0}.post-content li{margin-bottom:var(--space-2)}.post-content strong{color:var(--color-primary-dark)}.post-content .btn{margin-top:var(--space-4)}.post-author{display:flex;gap:var(--space-4);align-items:center;padding:var(--space-5);background:var(--color-cream);border-radius:var(--radius-lg);margin:var(--space-7) 0}.post-author-avatar{width:56px;height:56px;border-radius:50%;background:var(--color-primary-dark);color:var(--color-paper);font-family:var(--font-serif);font-size:var(--fs-xl);display:flex;align-items:center;justify-content:center;flex-shrink:0}.post-author-name{font-weight:var(--fw-medium);color:var(--color-ink);margin-bottom:4px}.post-author-bio{font-size:var(--fs-sm);color:var(--color-text-muted)}.post-prev-next{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4);margin:var(--space-7) 0}@media (max-width: 640px){.post-prev-next{grid-template-columns:1fr}}.post-nav{display:block;padding:var(--space-4) var(--space-5);background:var(--color-paper);border:var(--border);border-radius:var(--radius-md);color:inherit;text-decoration:none;transition:background .2s ease,transform .2s ease}.post-nav:hover{background:var(--color-cream);transform:translateY(-2px)}.post-nav-next{text-align:right}.post-nav-label{display:block;font-size:var(--fs-xs);color:var(--color-warm-gray);margin-bottom:4px}.post-nav-title{display:block;font-weight:var(--fw-medium);color:var(--color-ink)}.post-related{margin-top:var(--space-8);padding-top:var(--space-6);border-top:1px solid var(--color-border)}.post-related-title{font-family:var(--font-serif);font-size:var(--fs-xl);color:var(--color-ink);margin:0 0 var(--space-5) 0}.link-arrow{color:var(--color-primary-dark);text-decoration:none}.link-arrow:hover{text-decoration:underline}.btn-danger{background:var(--color-paper);color:var(--color-error);border-color:var(--color-error)}.btn-danger:hover{background:var(--color-error);color:var(--color-paper)}.prog-export{margin:var(--space-9) auto;max-width:960px;padding:var(--space-7) var(--space-5);background:var(--color-paper);border:var(--border-brutal);box-shadow:6px 6px 0 0 var(--color-ink)}.prog-export__heading{display:flex;align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-6);padding-bottom:var(--space-5);border-bottom:var(--border-brutal)}.prog-export__heading-icon{font-size:40px;line-height:1;flex-shrink:0}.prog-export__heading h2{margin:0 0 var(--space-2) 0;font-family:var(--font-serif);font-size:var(--fs-xl);color:var(--color-ink)}.prog-export__heading p{margin:0;font-size:var(--fs-sm);color:var(--color-gray-600);line-height:1.6}.prog-export-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-4);margin-bottom:var(--space-6)}.prog-summary-card{padding:var(--space-5);background:var(--color-paper);border:var(--border-brutal);box-shadow:3px 3px 0 0 var(--color-ink);text-align:center}.prog-summary-card.is-empty{opacity:.45;background:var(--color-mute)}.prog-summary-card__icon{font-size:36px;line-height:1;margin-bottom:var(--space-2)}.prog-summary-card__name{font-family:var(--font-serif);font-size:var(--fs-base);font-weight:600;color:var(--color-ink);margin-bottom:var(--space-3)}.prog-summary-card__stat{display:flex;align-items:baseline;justify-content:center;gap:var(--space-2);margin-bottom:var(--space-2)}.prog-summary-card__big{font-size:32px;font-weight:800;color:var(--color-primary-dark);font-family:var(--font-serif);line-height:1}.prog-summary-card__label{font-size:var(--fs-xs);color:var(--color-warm-gray)}.prog-summary-card__meta{font-size:var(--fs-xs);color:var(--color-gray-600);margin-bottom:var(--space-1)}.prog-summary-card__time{font-size:11px;color:var(--color-warm-gray)}.prog-export-card{background:var(--color-paper);border:var(--border-brutal);box-shadow:4px 4px 0 0 var(--color-ink);padding:var(--space-6)}.prog-export-card__head{margin-bottom:var(--space-5)}.prog-export-card__head h3{margin:0 0 var(--space-3) 0;font-family:var(--font-serif);font-size:var(--fs-lg)}.prog-export-card__sub{margin:0;font-size:var(--fs-sm);color:var(--color-gray-600);line-height:1.7}.prog-export-card__browser-hint{margin-top:var(--space-3);padding:var(--space-2) var(--space-3);background:var(--color-cream);border:1px dashed var(--color-ink);font-size:var(--fs-xs);color:var(--color-ink);line-height:1.5}.prog-export-card__browser-hint b{font-weight:700}.prog-wechat-hint{display:flex;gap:var(--space-4);align-items:flex-start;margin-bottom:var(--space-5);padding:var(--space-4) var(--space-5);background:var(--color-highlight);border:var(--border-brutal);box-shadow:4px 4px 0 0 var(--color-ink)}.prog-wechat-hint__icon{font-size:36px;line-height:1;flex-shrink:0}.prog-wechat-hint__body{flex:1;min-width:0}.prog-wechat-hint__body h4{margin:0 0 var(--space-2) 0;font-size:var(--fs-base);font-weight:700;color:var(--color-ink);font-family:var(--font-serif)}.prog-wechat-hint__body h4 b{color:var(--color-error)}.prog-wechat-hint__steps{margin:var(--space-2) 0 var(--space-3) 0;padding-left:var(--space-5);font-size:var(--fs-sm);line-height:1.8;color:var(--color-ink)}.prog-wechat-hint__steps b{background:var(--color-paper);padding:0 4px;border:1px solid var(--color-ink)}.prog-wechat-hint__fallback{margin-top:var(--space-2);font-size:var(--fs-xs);color:var(--color-ink)}.prog-wechat-hint__fallback summary{cursor:pointer;font-weight:600;text-decoration:underline}.prog-wechat-hint__fallback p{margin:var(--space-2) 0 0 0;padding:var(--space-2) var(--space-3);background:var(--color-paper);border:1px solid var(--color-ink);line-height:1.6}.prog-export-card__row{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-bottom:var(--space-4)}.prog-export-card__row--inline{align-items:center;margin-bottom:var(--space-3)}.prog-export-card__output,.prog-export-card__import{margin:var(--space-5) 0;padding:var(--space-4);background:var(--color-mute);border:1px dashed var(--color-ink)}.prog-export-card__output label,.prog-export-card__import label{display:block;font-size:var(--fs-sm);font-weight:600;margin-bottom:var(--space-2);color:var(--color-ink)}.prog-export-card__output textarea,.prog-export-card__import textarea{width:100%;padding:var(--space-3);font-family:var(--font-mono);font-size:12px;line-height:1.5;background:var(--color-paper);border:1px solid var(--color-ink);border-radius:0;resize:vertical;word-break:break-all}.prog-export-card__hint{margin-top:var(--space-2);font-size:var(--fs-xs);color:var(--color-warm-gray);line-height:1.6}.prog-export-card__hint code{background:var(--color-paper);padding:1px 6px;font-family:var(--font-mono);font-size:11px}.prog-export-card__preview{display:inline-block;font-size:var(--fs-xs);color:var(--color-gray-600);line-height:1.5;flex:1;min-width:200px}.prog-export-card__preview code{background:var(--color-paper);padding:1px 5px;font-family:var(--font-mono);font-size:11px}.prog-export-card__danger{margin-top:var(--space-5);padding-top:var(--space-5);border-top:1px solid var(--color-gray-300)}.prog-export-card__danger summary{cursor:pointer;font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--color-error);-webkit-user-select:none;user-select:none;list-style-position:inside}.prog-export-card__danger summary:hover{text-decoration:underline}.prog-export-card__danger[open] summary{margin-bottom:var(--space-3)}.prog-export-card__danger p{font-size:var(--fs-xs);color:var(--color-warm-gray);line-height:1.6;margin:0 0 var(--space-3) 0}@media (max-width: 640px){.prog-export{margin:var(--space-7) var(--space-3);padding:var(--space-5) var(--space-4)}.prog-export__heading{gap:var(--space-3)}.prog-export__heading-icon{font-size:32px}.prog-export__heading h2{font-size:var(--fs-lg)}.prog-export-card{padding:var(--space-4)}.prog-summary-card__big{font-size:28px}.prog-export-card__row,.prog-export-card__row--inline{flex-direction:column;align-items:stretch}.prog-export-card__row .btn{width:100%}}.prog-toast{position:fixed;left:50%;bottom:80px;transform:translate(-50%,30px);background:var(--color-ink);color:var(--color-paper);padding:12px 20px;border:2px solid var(--color-ink);box-shadow:4px 4px #0000004d;font-size:var(--fs-sm);font-weight:500;z-index:9999;opacity:0;transition:all .28s cubic-bezier(.4,0,.2,1);max-width:calc(100vw - 32px);text-align:center;line-height:1.5;pointer-events:none}.prog-toast.is-visible{opacity:1;transform:translate(-50%)}.prog-toast--warn{background:var(--color-warning);color:var(--color-ink)}.prog-toast--error{background:var(--color-error);color:var(--color-paper)}.rss-cta{display:grid;grid-template-columns:56px 1fr auto;align-items:center;gap:var(--space-4);padding:var(--space-4);margin:var(--space-5) 0;background:var(--color-cream);border:var(--border-brutal);box-shadow:6px 6px 0 0 var(--color-ink);border-radius:0}.rss-cta__icon{font-size:32px;text-align:center;line-height:1}.rss-cta__body strong{display:block;margin-bottom:4px;font-size:var(--fs-md);color:var(--color-ink)}.rss-cta__body p{margin:0;font-size:var(--fs-sm);line-height:1.6;color:var(--color-gray-700)}.rss-cta__body a{color:var(--color-mint);text-decoration:underline;text-underline-offset:2px}.rss-cta__body code{background:var(--color-paper);padding:1px 6px;border:1px solid var(--color-gray-300);font-size:12px;border-radius:2px}.rss-cta__actions{display:flex;flex-direction:column;gap:6px;min-width:140px}@media (max-width: 720px){.rss-cta{grid-template-columns:48px 1fr;grid-template-rows:auto auto;padding:var(--space-3)}.rss-cta__icon{font-size:28px}.rss-cta__actions{grid-column:1 / -1;flex-direction:row;flex-wrap:wrap;margin-top:var(--space-2)}.rss-cta__actions .btn{flex:1;min-width:130px}}.footer-bottom{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--space-2)}.footer-bottom__right{display:flex;gap:var(--space-3);font-size:13px}.footer-bottom__right a{color:var(--color-ink);text-decoration:none;padding:2px 8px;border:1px solid transparent}.footer-bottom__right a:hover{border-color:var(--color-ink)}@media (max-width: 480px){.footer-bottom{flex-direction:column;align-items:flex-start}}.footer-legal{margin-top:var(--space-4);padding-top:var(--space-4);border-top:var(--border-brutal-thin);text-align:center}.footer-legal__icp{display:inline-block;padding:4px 12px;font-family:var(--font-sans);font-size:13px;font-weight:600;letter-spacing:.02em;color:var(--color-ink);background:var(--color-paper);border:var(--border-brutal);text-decoration:none;transition:background var(--t-fast) var(--ease-brutal),color var(--t-fast) var(--ease-brutal)}.footer-legal__icp:hover{background:var(--color-ink);color:var(--color-paper)}.prog-view{margin:var(--space-9) auto;max-width:960px;padding:var(--space-7) var(--space-5);background:var(--color-paper);border:var(--border-brutal);box-shadow:6px 6px 0 0 var(--color-ink)}.prog-view__head{display:flex;align-items:center;gap:var(--space-4);padding-bottom:var(--space-5);margin-bottom:var(--space-6);border-bottom:var(--border-brutal)}.prog-view__head-icon{font-size:40px;line-height:1;flex-shrink:0}.prog-view__head h1{margin:0 0 var(--space-2) 0;font-family:var(--font-serif);font-size:var(--fs-2xl);color:var(--color-ink)}.prog-view__head p{margin:0;font-size:var(--fs-sm);color:var(--color-gray-600)}.prog-view-meta{display:flex;flex-wrap:wrap;gap:var(--space-3) var(--space-5);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-5);background:var(--color-paper);border:var(--border-brutal);font-size:var(--fs-sm);color:var(--color-gray-600)}.prog-view-meta b{color:var(--color-ink)}.prog-view-tools{display:grid;gap:var(--space-5);margin-bottom:var(--space-6)}.prog-view-tool{background:var(--color-paper);border:var(--border-brutal);box-shadow:4px 4px 0 0 var(--color-ink);padding:var(--space-5)}.prog-view-tool__head{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-4)}.prog-view-tool__icon{font-size:28px;line-height:1}.prog-view-tool__head h3{margin:0;font-family:var(--font-serif);font-size:var(--fs-lg);color:var(--color-ink)}.prog-view-tool__badge{margin-left:auto;padding:4px 10px;background:var(--color-ink);color:var(--color-paper);font-size:var(--fs-xs);font-weight:700}.prog-view-tool__stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:var(--space-3);margin-bottom:var(--space-4)}.prog-view-tool__stats>div{text-align:center;padding:var(--space-2);background:var(--color-paper);border:1px solid rgba(31,29,26,.25)}.prog-view-tool__stats b{display:block;font-family:var(--font-display);font-size:var(--fs-md);color:var(--color-ink);word-break:break-all}.prog-view-tool__stats span{font-size:var(--fs-xs);color:var(--color-warm-gray)}.prog-view-tool__block{margin-bottom:var(--space-3)}.prog-view-tool__block:last-child{margin-bottom:0}.prog-view-tool__block h4{margin:0 0 var(--space-2) 0;font-size:var(--fs-sm);color:var(--color-ink)}.prog-view-chips{display:flex;flex-wrap:wrap;gap:6px}.prog-view-chip{padding:3px 9px;background:var(--color-ink);color:var(--color-paper);font-size:var(--fs-xs)}.prog-view-chip.is-empty{background:transparent;color:var(--color-warm-gray);border:1px dashed var(--color-gray-300)}.prog-view-best-row{display:grid;grid-template-columns:72px 1fr 44px;align-items:center;gap:var(--space-2);padding:3px 0}.prog-view-best-k{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--color-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.prog-view-best-bar{height:12px;background:var(--color-soft);border:1px solid var(--color-ink);overflow:hidden}.prog-view-best-bar i{display:block;height:100%;background:var(--color-ink)}.prog-view-best-v{font-family:var(--font-display);font-weight:700;font-size:var(--fs-xs);text-align:right;color:var(--color-ink)}.prog-view-muted{margin:0;font-size:var(--fs-xs);color:var(--color-warm-gray)}.prog-view-actions{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-bottom:var(--space-5)}.prog-view-privacy{margin:0;padding:var(--space-3) var(--space-4);background:var(--color-paper);border:1px dashed rgba(31,29,26,.45);font-size:var(--fs-xs);line-height:1.7;color:var(--color-gray-600)}.prog-view-empty{text-align:center;padding:var(--space-5) 0}.prog-view-empty__icon{font-size:56px;line-height:1;margin-bottom:var(--space-3)}.prog-view-empty h2{margin:0 0 var(--space-3) 0;font-family:var(--font-serif);font-size:var(--fs-xl);color:var(--color-ink)}.prog-view-empty__reason{display:inline-block;margin:0 0 var(--space-4) 0;padding:var(--space-2) var(--space-4);background:var(--color-paper);border:var(--border-brutal);font-size:var(--fs-sm);color:var(--color-error)}.prog-view-empty__desc{margin:0 auto var(--space-5);max-width:620px;font-size:var(--fs-sm);line-height:1.9;color:var(--color-gray-600);text-align:left}.prog-view-empty__desc code{font-family:var(--font-mono);background:var(--color-paper);padding:1px 5px;border:1px solid var(--color-gray-300);word-break:break-all}.prog-view-empty__actions{display:flex;justify-content:center;flex-wrap:wrap;gap:var(--space-3);margin-bottom:var(--space-6)}.prog-view-empty__self{padding-top:var(--space-5);border-top:1px dashed rgba(31,29,26,.3);font-size:var(--fs-sm);color:var(--color-gray-600)}.prog-view-empty__self p{margin:0 0 var(--space-3) 0}.prog-view-streak{margin:0 0 var(--space-4) 0!important;padding:var(--space-2) var(--space-3);background:var(--color-paper);border:var(--border-brutal);box-shadow:var(--shadow-brutal-sm);color:var(--color-ink);font-weight:var(--fw-medium);display:inline-block}@media (max-width: 600px){.prog-view{margin:var(--space-6) var(--space-3);padding:var(--space-5) var(--space-4)}.prog-view__head-icon{font-size:32px}.prog-view__head h1{font-size:var(--fs-xl)}.prog-view-actions .btn{flex:1 1 100%}.prog-view-best-row{grid-template-columns:60px 1fr 40px}}@media print{#site-header,#site-footer,.prog-view-actions{display:none!important}.prog-view{box-shadow:none;border:1px solid #000;margin:0}.prog-view-tool{box-shadow:none;break-inside:avoid}}.hero{min-height:calc(100vh - 64px);display:flex;align-items:center;justify-content:center;padding:var(--space-9) 0 var(--space-8);background:var(--color-paper)}.hero-inner{text-align:center;max-width:1024px;margin:0 auto}.hero-eyebrow{display:inline-block;padding:6px 16px;background:var(--color-ink);color:var(--color-paper);font-family:var(--font-sans);font-size:var(--fs-sm);letter-spacing:.04em;margin-bottom:var(--space-5);text-transform:uppercase;font-weight:var(--fw-medium);border:var(--border-brutal);box-shadow:var(--shadow-brutal-sm)}.hero-title{font-family:var(--font-sans);font-size:var(--fs-mega);font-weight:var(--fw-bold);color:var(--color-ink);line-height:var(--lh-tight);letter-spacing:-.04em;margin-bottom:var(--space-5)}.hero-slogan{font-size:var(--fs-large);font-weight:var(--fw-light);color:var(--color-ink);margin-bottom:var(--space-7)}.hero-cta{display:flex;gap:var(--space-4);justify-content:center;flex-wrap:wrap}.avatar-stack{display:flex;align-items:center;justify-content:center;margin-bottom:var(--space-7)}.avatar-disk{position:relative;width:192px;height:192px;border-radius:50%;border:var(--border-brutal);overflow:hidden;box-shadow:var(--shadow-brutal-xl);background:var(--color-soft)}.avatar-disk img{width:100%;height:100%;object-fit:cover;display:block}.intro-grid{display:grid;gap:var(--space-7);align-items:stretch;grid-template-columns:1fr}@media (min-width: 900px){.intro-grid{grid-template-columns:1fr 1fr}}.intro-card{background:var(--color-paper);border:var(--border-brutal);box-shadow:var(--shadow-brutal);padding:var(--space-6)}.intro-card h3{font-size:var(--fs-2xl);font-weight:var(--fw-light);margin-bottom:var(--space-5);letter-spacing:-.02em}.philosophy-stack{display:grid;gap:var(--space-4)}.philosophy-block{background:var(--color-soft);border:var(--border-brutal);padding:var(--space-4) var(--space-5)}.philosophy-block p{font-size:var(--fs-md);font-weight:var(--fw-regular);line-height:var(--lh-normal);margin:0;color:var(--color-ink)}.credential-list{display:grid;gap:var(--space-3)}.credential-item{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-4);background:var(--color-paper);border:var(--border-brutal);box-shadow:var(--shadow-brutal-sm);transition:transform var(--t-base) var(--ease-brutal),box-shadow var(--t-base) var(--ease-brutal)}.credential-item:hover{transform:translateY(-2px);box-shadow:var(--shadow-brutal)}.dot-black{flex-shrink:0;width:10px;height:10px;background:var(--color-ink)}.courses-grid{display:grid;gap:var(--space-5);grid-template-columns:1fr}@media (min-width: 720px){.courses-grid{grid-template-columns:repeat(3,1fr)}}.course-card{display:flex;flex-direction:column;padding:var(--space-6);background:var(--color-paper);border:var(--border-brutal);box-shadow:var(--shadow-brutal);text-decoration:none;color:inherit;transition:transform var(--t-base) var(--ease-brutal),box-shadow var(--t-base) var(--ease-brutal)}.course-card:hover{transform:translate(-3px,-3px);box-shadow:var(--shadow-brutal-xl);color:var(--color-ink)}.course-card-icon{width:64px;height:64px;margin-bottom:var(--space-4);display:grid;place-items:center;background:var(--color-ink);color:var(--color-paper);font-size:32px;font-weight:var(--fw-bold)}.course-card-icon .course-icon-lucide,.course-card-icon svg.lucide{width:32px;height:32px;stroke-width:2;color:var(--color-paper)}.course-icon-lucide,i[data-lucide]{display:inline-block;width:1em;height:1em;vertical-align:-.125em;stroke-width:2}.intro-avatar-placeholder .course-icon-lucide,.intro-avatar-placeholder svg.lucide{width:96px;height:96px;stroke-width:1.5}.course-card-title{font-size:var(--fs-2xl);font-weight:var(--fw-light);margin-bottom:var(--space-2);letter-spacing:-.02em}.course-card-tagline{font-size:var(--fs-sm);color:var(--color-gray-700);margin-bottom:var(--space-4)}.course-card-cta{margin-top:auto;padding-top:var(--space-3);font-size:var(--fs-sm);font-weight:var(--fw-bold);border-top:var(--border-brutal)}.tools-grid{display:grid;gap:var(--space-5);grid-template-columns:1fr}@media (min-width: 700px){.tools-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1100px){.tools-grid{grid-template-columns:repeat(3,1fr)}}.tool-card{display:flex;flex-direction:column;padding:var(--space-5);background:var(--color-paper);border:var(--border-brutal);box-shadow:var(--shadow-brutal);text-decoration:none;color:inherit;transition:transform var(--t-base) var(--ease-brutal),box-shadow var(--t-base) var(--ease-brutal)}.tool-card:hover{transform:translate(-3px,-3px);box-shadow:var(--shadow-brutal-xl);color:var(--color-ink)}.tool-card-icon{width:48px;height:48px;background:var(--color-ink);color:var(--color-paper);display:grid;place-items:center;margin-bottom:var(--space-4);font-size:24px;font-weight:var(--fw-bold)}.tool-card-title{font-size:var(--fs-lg);font-weight:var(--fw-bold);margin-bottom:var(--space-2)}.tool-card-desc{font-size:var(--fs-sm);color:var(--color-gray-700);line-height:var(--lh-normal);margin:0}.streak-pill{display:inline-block;margin:var(--space-4) auto 0;padding:var(--space-2) var(--space-4);background:var(--color-ink);color:var(--color-paper);border:var(--border-brutal);box-shadow:var(--shadow-brutal-sm);font-size:var(--fs-sm);font-weight:var(--fw-medium);line-height:var(--lh-normal)}.streak-pill b{font-size:var(--fs-lg);font-weight:var(--fw-bold);margin:0 2px}.streak-pill__hint{margin-left:var(--space-2);opacity:.75}.streak-pill--empty{background:var(--color-paper);color:var(--color-gray-700);border-style:dashed}.gallery-grid{display:grid;gap:var(--space-4);grid-template-columns:repeat(2,1fr)}@media (min-width: 600px){.gallery-grid{grid-template-columns:repeat(3,1fr)}}@media (min-width: 900px){.gallery-grid{grid-template-columns:repeat(4,1fr)}}.gallery-grid--two{grid-template-columns:1fr 1fr;gap:var(--space-3)}@media (min-width: 600px){.gallery-grid--two{grid-template-columns:1fr 1fr;gap:var(--space-4)}}.gallery-item{position:relative;aspect-ratio:4 / 3;overflow:hidden;cursor:zoom-in;background:var(--color-soft);border:var(--border-brutal);box-shadow:var(--shadow-brutal);transition:transform var(--t-base) var(--ease-brutal),box-shadow var(--t-base) var(--ease-brutal)}.gallery-item:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-brutal-lg)}.gallery-item img{width:100%;height:100%;object-fit:cover;object-position:center;display:block}.gallery-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:var(--color-soft);color:var(--color-warm-gray);font-family:var(--font-sans);font-size:14px;font-weight:var(--fw-regular);letter-spacing:.04em;text-align:center;padding:var(--space-3)}.gallery-label,.gallery-item-label{position:absolute;bottom:var(--space-2);left:var(--space-2);background:var(--color-paper);color:var(--color-ink);padding:2px 8px;border:var(--border-brutal);font-size:var(--fs-xs);font-weight:var(--fw-medium);letter-spacing:.04em}.video-grid{display:grid;gap:var(--space-4);grid-template-columns:1fr}@media (min-width: 560px){.video-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width: 900px){.video-grid{grid-template-columns:repeat(3,1fr)}}.video-card{display:flex;flex-direction:column;text-align:left;background:var(--color-paper);border:var(--border-brutal);box-shadow:var(--shadow-brutal-sm);cursor:pointer;padding:0;font:inherit;color:inherit;transition:transform var(--t-base) var(--ease-brutal),box-shadow var(--t-base) var(--ease-brutal)}.video-card:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-brutal)}.video-cover{position:relative;aspect-ratio:16 / 9;overflow:hidden;background:var(--color-soft)}.video-cover img{width:100%;height:100%;object-fit:cover}.video-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);background:var(--color-soft);color:var(--color-ink)}.video-play-icon{display:grid;place-items:center;width:52px;height:52px;border-radius:50%;background:var(--color-ink);color:var(--color-paper);font-size:22px;padding-left:4px}.video-placeholder-text{font-size:var(--fs-xs);letter-spacing:.06em;color:var(--color-warm-gray)}.video-card:hover .video-play-icon{transform:scale(1.08);transition:transform var(--t-fast) var(--ease-brutal)}.video-tag{position:absolute;top:8px;left:8px;background:var(--color-ink);color:var(--color-paper);padding:4px 10px;font-size:var(--fs-xs);font-weight:var(--fw-bold);letter-spacing:.04em}.video-info{padding:var(--space-3)}.video-title{font-weight:var(--fw-medium);line-height:1.4;margin-bottom:4px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.video-date{font-size:var(--fs-xs);color:var(--color-warm-gray);letter-spacing:.04em}.video-modal{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000}.video-modal.is-open{display:block}.video-modal-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#1f1d1ab8;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.video-modal-card{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:min(900px,92vw);max-height:92vh;overflow-y:auto;background:var(--color-paper);border:var(--border-brutal);box-shadow:var(--shadow-brutal);padding:var(--space-5)}.video-modal-close{position:absolute;top:8px;right:8px;width:40px;height:40px;border:var(--border-brutal);background:var(--color-paper);font-size:24px;line-height:1;cursor:pointer;z-index:2}.video-modal-close:hover{background:var(--color-ink);color:var(--color-paper)}.video-modal-title{font-family:var(--font-sans);font-size:var(--fs-xl);font-weight:var(--fw-medium);margin-bottom:var(--space-3);padding-right:48px;line-height:1.3}.video-modal-player{position:relative;width:100%;aspect-ratio:16 / 9;background:var(--color-ink);border:var(--border-brutal)}.video-modal-player iframe{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:0}.video-modal-desc{margin-top:var(--space-3);font-size:var(--fs-sm);color:var(--color-gray-700);line-height:1.6}.video-modal-actions{margin-top:var(--space-4);text-align:right}@media (max-width: 560px){.video-modal-card{padding:var(--space-3);max-height:96vh}.video-modal-title{font-size:var(--fs-lg)}}.reviews-preview{display:grid;gap:var(--space-4);grid-template-columns:1fr}@media (min-width: 720px){.reviews-preview{grid-template-columns:repeat(3,1fr)}}.review-card{background:var(--color-paper);border:var(--border-brutal);box-shadow:var(--shadow-brutal);padding:var(--space-5)}.review-text{font-size:var(--fs-md);line-height:var(--lh-relaxed);margin-bottom:var(--space-5);color:var(--color-ink)}.review-meta{display:flex;align-items:center;gap:var(--space-3);border-top:var(--border-brutal);padding-top:var(--space-3)}.review-avatar{width:40px;height:40px;background:var(--color-ink);color:var(--color-paper);display:grid;place-items:center;font-weight:var(--fw-bold)}.review-name{font-size:var(--fs-sm);color:var(--color-ink);font-weight:var(--fw-bold);display:block}.review-tag{font-size:var(--fs-xs);color:var(--color-gray-700)}.contact-section{background:var(--color-paper);border:var(--border-brutal);box-shadow:var(--shadow-brutal-xl);padding:var(--space-7) var(--space-5)}.contact-buttons{display:flex;flex-wrap:wrap;gap:var(--space-4);justify-content:center;margin-top:var(--space-5)}.course-hero{padding:var(--space-8) 0;background:var(--color-paper);border-bottom:var(--border-brutal)}.course-hero-inner{display:grid;gap:var(--space-6);align-items:stretch;grid-template-columns:1fr}@media (min-width: 768px){.course-hero-inner{grid-template-columns:1.4fr 1fr}}.course-hero-title{font-family:var(--font-sans);font-size:var(--fs-mega);font-weight:var(--fw-light);margin-bottom:var(--space-3);letter-spacing:-.03em}.course-hero-tagline{font-size:var(--fs-medium);font-weight:var(--fw-light);color:var(--color-gray-700);margin-bottom:var(--space-5)}.course-meta{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-bottom:var(--space-4)}.course-meta-item{padding:8px 16px;background:var(--color-ink);color:var(--color-paper);font-size:var(--fs-sm);font-weight:var(--fw-bold);letter-spacing:.04em;border:var(--border-brutal);box-shadow:var(--shadow-brutal-sm)}.course-hero-side{background:var(--color-soft);border:var(--border-brutal);box-shadow:var(--shadow-brutal);padding:var(--space-6)}.course-hero-side-title{font-size:var(--fs-md);font-weight:var(--fw-bold);margin-bottom:var(--space-4);text-transform:uppercase;letter-spacing:.1em}.course-hero-side-stat{display:flex;align-items:baseline;gap:12px;padding:12px 0;border-bottom:1px solid var(--color-ink)}.course-hero-side-stat:last-child{border-bottom:none}.course-hero-side-stat strong{font-family:var(--font-sans);font-weight:var(--fw-bold);font-size:var(--fs-2xl);letter-spacing:-.02em}.course-hero-side-stat span{font-size:var(--fs-sm);color:var(--color-gray-700)}.course-section-block{background:var(--color-paper);border:var(--border-brutal);box-shadow:var(--shadow-brutal);padding:var(--space-6);margin-bottom:var(--space-5)}.course-section-title{font-size:var(--fs-xl);font-weight:var(--fw-light);margin-bottom:var(--space-4);letter-spacing:-.02em;text-transform:uppercase}.course-list{list-style:none;padding:0}.course-list li{position:relative;padding:10px 0 10px var(--space-6);color:var(--color-ink);line-height:var(--lh-normal);border-bottom:1px solid var(--color-ink)}.course-list li:last-child{border-bottom:none}.course-list li:before{content:"";position:absolute;left:0;top:18px;width:12px;height:12px;background:var(--color-ink)}.timeline{position:relative;padding-left:var(--space-6);border-left:2px solid var(--color-ink)}.timeline-item{position:relative;margin-bottom:var(--space-6)}.timeline-item:before{content:"";position:absolute;left:-38px;top:6px;width:16px;height:16px;background:var(--color-ink);border:4px solid var(--color-paper)}.timeline-period{display:inline-block;font-size:var(--fs-sm);font-weight:var(--fw-bold);letter-spacing:.04em;text-transform:uppercase;margin-bottom:var(--space-2);padding:2px 8px;background:var(--color-ink);color:var(--color-paper)}.timeline-title{font-size:var(--fs-lg);font-weight:var(--fw-bold);margin-bottom:var(--space-2)}.timeline-text{color:var(--color-gray-700);line-height:var(--lh-normal)}.contact-grid{display:grid;gap:var(--space-7);grid-template-columns:1fr}@media (min-width: 768px){.contact-grid{grid-template-columns:1fr 1.4fr}}.contact-page-grid{display:grid;gap:var(--space-7);grid-template-columns:1fr;align-items:start}@media (min-width: 768px){.contact-page-grid{grid-template-columns:1.4fr 1fr}}.contact-qr-side{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-4)}.contact-qr-card{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-5);background:var(--color-paper);border:var(--border-brutal);box-shadow:var(--shadow-brutal)}.contact-qr-img{width:240px;height:240px;max-width:100%;object-fit:contain;display:block;background:var(--color-paper);border:1px solid var(--color-gray-300)}.contact-qr-tip{font-size:var(--fs-sm);color:var(--color-warm-gray);margin:0;text-align:center;line-height:var(--lh-relaxed)}.contact-info-list{display:grid;gap:var(--space-3)}.contact-info-item{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-4);background:var(--color-paper);border:var(--border-brutal);box-shadow:var(--shadow-brutal);transition:transform var(--t-base) var(--ease-brutal),box-shadow var(--t-base) var(--ease-brutal);text-decoration:none;color:inherit}.contact-info-item:hover{transform:translate(-2px,-2px);box-shadow:var(--shadow-brutal-lg)}.contact-info-icon{width:40px;height:40px;background:var(--color-ink);color:var(--color-paper);display:grid;place-items:center;font-weight:var(--fw-bold);flex-shrink:0}.contact-info-label{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--color-gray-700);display:block;margin-bottom:4px}.contact-info-value{font-size:var(--fs-md);font-weight:var(--fw-medium);color:var(--color-ink);display:block}.contact-qr{width:200px;height:200px;background:var(--color-soft);border:var(--border-brutal);box-shadow:var(--shadow-brutal);display:grid;place-items:center;margin-top:var(--space-3);overflow:hidden}.contact-qr img{width:100%;height:100%;object-fit:contain}.contact-qr-placeholder{color:var(--color-ink);text-align:center;padding:var(--space-3);font-size:var(--fs-sm)}.tool-page{padding:var(--space-7) 0 var(--space-9)}.tool-header{text-align:center;margin-bottom:var(--space-7)}.tool-board{background:var(--color-paper);border:var(--border-brutal);box-shadow:var(--shadow-brutal);padding:var(--space-6);max-width:800px;margin:0 auto}.rhythm-display{display:flex;justify-content:center;gap:var(--space-4);flex-wrap:wrap;padding:var(--space-5);background:var(--color-soft);border:var(--border-brutal);min-height:100px}.rhythm-beat{width:32px;height:32px;background:var(--color-paper);border:var(--border-brutal);transition:all var(--t-fast) var(--ease-brutal)}.rhythm-beat.active{background:var(--color-ink);transform:scale(1.15)}.rhythm-beat.hit{background:var(--color-success);border-color:var(--color-success);animation:beat-pop .3s var(--ease-brutal)}.rhythm-beat.miss{background:var(--color-error);border-color:var(--color-error);animation:beat-shake .3s var(--ease-brutal)}@keyframes beat-pop{0%{transform:scale(1)}40%{transform:scale(1.5)}to{transform:scale(1)}}@keyframes beat-shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}50%{transform:translate(4px)}75%{transform:translate(-2px)}}.rhythm-tap-zone.tap-flash--good{background:var(--color-success);border-color:var(--color-success);color:var(--color-paper)}.rhythm-tap-zone.tap-flash--bad{background:var(--color-error);border-color:var(--color-error);color:var(--color-paper);animation:beat-shake .3s var(--ease-brutal)}.rhythm-tap-zone{display:flex;align-items:center;justify-content:center;height:220px;margin-top:var(--space-5);background:var(--color-paper);border:3px dashed var(--color-ink);font-family:var(--font-sans);font-size:var(--fs-2xl);font-weight:var(--fw-light);letter-spacing:.04em;cursor:pointer;-webkit-user-select:none;user-select:none;transition:transform 80ms var(--ease-brutal),background var(--t-fast) var(--ease-brutal)}.rhythm-tap-zone:active{transform:scale(.98);background:var(--color-ink);color:var(--color-paper)}.rhythm-score{display:flex;justify-content:center;gap:var(--space-6);margin-top:var(--space-5)}.rhythm-score-item strong{display:block;font-family:var(--font-sans);font-size:var(--fs-3xl);font-weight:var(--fw-light);letter-spacing:-.03em}.rhythm-score-item span{font-size:var(--fs-sm);color:var(--color-gray-700);text-transform:uppercase;letter-spacing:.06em}.dict-result-card{background:var(--color-paper);border:var(--border-brutal);box-shadow:var(--shadow-brutal);padding:var(--space-5);display:inline-block;max-width:100%;text-align:center}.dict-compare{display:flex;flex-direction:column;gap:var(--space-3);text-align:left;margin-top:var(--space-4)}.dict-compare-row{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.dict-compare-label{font-size:var(--fs-xs);color:var(--color-gray-700);min-width:52px;letter-spacing:.04em}.dict-blocks{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.dict-block{display:inline-flex;align-items:center;justify-content:center;height:32px;min-width:18px;padding:0 2px;background:var(--color-paper);border:var(--border-brutal-thin);font-size:var(--fs-sm);color:var(--color-ink);box-sizing:border-box}.pitch-meter{position:relative;width:100%;height:100px;background:var(--color-soft);border:var(--border-brutal);overflow:hidden;margin:var(--space-5) 0}.pitch-center{position:absolute;top:0;bottom:0;left:50%;width:2px;background:var(--color-ink)}.pitch-tick{position:absolute;top:8px;bottom:8px;width:1px;background:var(--color-gray-300)}.pitch-indicator{position:absolute;top:0;bottom:0;left:50%;width:8px;background:var(--color-ink);border:2px solid var(--color-paper);transition:left .1s var(--ease-brutal)}.pitch-target-name{text-align:center;font-size:var(--fs-2xl);font-weight:var(--fw-bold);margin-top:var(--space-3);letter-spacing:-.02em}.quiz-progress{display:flex;gap:4px;margin-bottom:var(--space-5)}.quiz-pip{flex:1;height:6px;background:var(--color-soft);border:1px solid var(--color-ink)}.quiz-pip.is-done{background:var(--color-success)}.quiz-pip.is-wrong{background:var(--color-error)}.quiz-question{font-size:var(--fs-xl);font-weight:var(--fw-light);margin-bottom:var(--space-5);text-align:center;letter-spacing:-.01em}.quiz-options{display:grid;gap:var(--space-3);grid-template-columns:1fr}@media (min-width: 600px){.quiz-options{grid-template-columns:1fr 1fr}}.quiz-option{padding:var(--space-4);background:var(--color-paper);border:var(--border-brutal);box-shadow:var(--shadow-brutal-sm);cursor:pointer;font-size:var(--fs-base);text-align:center;transition:transform var(--t-fast) var(--ease-brutal),box-shadow var(--t-fast) var(--ease-brutal),background var(--t-fast) var(--ease-brutal)}.quiz-option:hover{background:var(--color-soft);transform:translate(-1px,-1px);box-shadow:var(--shadow-brutal)}.quiz-option.is-correct{background:var(--color-success);color:var(--color-paper);border-color:var(--color-success)}.quiz-option.is-wrong{background:var(--color-error);color:var(--color-paper);border-color:var(--color-error)}.quiz-weak{margin-top:var(--space-5);padding:var(--space-4);border:var(--border-brutal);background:var(--color-soft);box-shadow:var(--shadow-brutal);text-align:left}.quiz-weak.is-clean{text-align:center;background:var(--color-highlight);color:var(--color-ink)}.quiz-weak-title{display:flex;align-items:center;font-weight:var(--fw-semibold, 600);margin-bottom:var(--space-3)}.quiz-weak-list{display:flex;flex-wrap:wrap;gap:var(--space-2)}.quiz-weak-chip{font:inherit;cursor:pointer;padding:var(--space-2) var(--space-3);min-height:40px;background:var(--color-paper);color:var(--color-ink);border:var(--border-brutal);border-radius:0;box-shadow:var(--shadow-brutal-sm, var(--shadow-brutal));transition:transform .12s ease,box-shadow .12s ease}.quiz-weak-chip:hover{transform:translate(-1px,-1px);box-shadow:var(--shadow-brutal)}.quiz-weak-tip{margin-top:var(--space-3);font-size:var(--fs-sm);color:var(--color-warm-gray)}.quiz-ear{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);max-width:420px;margin:0 auto var(--space-5);padding:var(--space-5) var(--space-4);border:var(--border-brutal);background:var(--color-cream);box-shadow:var(--shadow-brutal-sm)}.quiz-ear-play{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-width:176px;min-height:56px;padding:var(--space-3) var(--space-5);font:inherit;font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--color-ink);background:var(--color-paper);border:var(--border-brutal);border-radius:0;box-shadow:var(--shadow-brutal);cursor:pointer;transition:transform var(--t-fast) var(--ease-brutal),box-shadow var(--t-fast) var(--ease-brutal),background var(--t-fast) var(--ease-brutal)}.quiz-ear-play:hover{background:var(--color-soft);transform:translate(-1px,-1px);box-shadow:var(--shadow-brutal-lg)}.quiz-ear-play:active,.quiz-ear-play.is-playing{background:var(--color-highlight);transform:translate(2px,2px);box-shadow:none}.quiz-ear-play[disabled]{cursor:not-allowed;background:var(--color-gray-100);color:var(--color-gray-500)}.quiz-ear-ico{width:1.4em;height:1.4em}.quiz-ear-hint{font-size:var(--fs-sm);color:var(--color-warm-gray);text-align:center}.feedback-output{background:var(--color-soft);border:var(--border-brutal);padding:var(--space-5);white-space:pre-wrap;font-family:SF Mono,Menlo,ui-monospace,monospace;font-size:var(--fs-sm);line-height:var(--lh-relaxed);min-height:220px}.filter-bar{display:flex;flex-wrap:wrap;gap:var(--space-2);justify-content:center;margin-bottom:var(--space-6)}.filter-bar{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-bottom:var(--space-6)}.filter-btn{padding:6px 16px;background:var(--color-paper);border:var(--border-brutal);color:var(--color-ink);font-size:var(--fs-sm);font-weight:var(--fw-medium);cursor:pointer;transition:transform var(--t-fast) var(--ease-brutal),box-shadow var(--t-fast) var(--ease-brutal);box-shadow:var(--shadow-brutal-sm)}.filter-btn:hover{transform:translate(-1px,-1px);box-shadow:var(--shadow-brutal)}.filter-btn.is-active{background:var(--color-ink);color:var(--color-paper)}.cassette-section{background:var(--color-soft)}.cassette-row{display:flex;flex-wrap:wrap;gap:var(--space-2)}.fb-badge{display:inline-block;padding:3px 10px;background:var(--color-ink);color:var(--color-paper);font-size:var(--fs-xs);font-weight:var(--fw-bold);letter-spacing:.04em}.pf-stats{display:flex;gap:var(--space-3);margin-top:var(--space-4)}.pf-stat{flex:1;background:var(--color-soft);border:var(--border-brutal);box-shadow:var(--shadow-brutal-sm);padding:var(--space-3);text-align:center}.pf-stat b{display:block;font-size:var(--fs-xl);font-weight:var(--fw-bold);line-height:1.1}.pf-stat span{font-size:var(--fs-xs);color:var(--color-gray-500)}.pf-timeline{position:relative;margin-top:var(--space-5);padding-left:28px}.pf-timeline:before{content:"";position:absolute;left:8px;top:8px;bottom:8px;width:2px;background:var(--color-ink)}.pf-node{position:relative;margin-bottom:var(--space-5)}.pf-dot{position:absolute;left:-28px;top:18px;width:18px;height:18px;border-radius:50%;background:var(--color-ink);border:4px solid var(--color-paper);box-shadow:0 0 0 2px var(--color-ink)}.pf-node.trend .pf-dot{background:var(--color-warning)}.pf-card{background:var(--color-paper);border:var(--border-brutal);box-shadow:var(--shadow-brutal)}.pf-card.pf-trend{box-shadow:6px 6px 0 0 var(--color-warning)}.pf-card-head{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--color-soft);border-bottom:var(--border-brutal);flex-wrap:wrap}.pf-date{font-size:var(--fs-sm);font-weight:var(--fw-semibold)}.pf-card-body{padding:var(--space-4)}.pf-summary{background:var(--color-soft);border:1px solid var(--color-ink);padding:var(--space-3) var(--space-4);font-size:var(--fs-base);line-height:var(--lh-relaxed);margin-bottom:var(--space-4)}.pf-item{margin-bottom:var(--space-3)}.pf-item:last-child{margin-bottom:0}.pf-label{font-size:var(--fs-xs);font-weight:var(--fw-bold);letter-spacing:.04em;margin-bottom:var(--space-1)}.pf-text{font-size:var(--fs-sm);line-height:var(--lh-relaxed);color:var(--color-gray-700)}.pf-cand{display:flex;align-items:center;gap:var(--space-3);width:100%;text-align:left;background:var(--color-paper);border:var(--border-brutal);box-shadow:var(--shadow-brutal-sm);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-3);cursor:pointer;font-family:inherit;transition:transform var(--t-fast) var(--ease-brutal),box-shadow var(--t-fast) var(--ease-brutal)}.pf-cand:hover{transform:translate(-1px,-1px);box-shadow:var(--shadow-brutal)}.pf-cand-avatar{width:38px;height:38px;flex:0 0 38px;border-radius:50%;background:var(--color-soft);border:1px solid var(--color-ink);display:flex;align-items:center;justify-content:center;font-size:var(--fs-md);font-weight:var(--fw-bold)}.pf-cand-text{flex:1;min-width:0}.pf-cand-text b{display:block;font-size:var(--fs-base)}.pf-cand-text em{display:block;font-style:normal;font-size:var(--fs-xs);color:var(--color-gray-500);margin-top:2px}.pf-cand-go{font-size:var(--fs-xl);color:var(--color-gray-500)}.poster-layout{display:grid;grid-template-columns:minmax(280px,380px) 1fr;gap:var(--space-6);align-items:start}.poster-form{display:grid;gap:var(--space-4)}.poster-field{display:grid;gap:var(--space-2);font-size:var(--fs-sm);font-weight:var(--fw-semibold)}.poster-field input,.poster-field select{width:100%;padding:10px 12px;border:var(--border-brutal);background:var(--color-paper);font-size:var(--fs-base);font-weight:var(--fw-regular);border-radius:0}.poster-field input:focus,.poster-field select:focus{outline:none;box-shadow:var(--shadow-brutal-sm)}.poster-hint{font-style:normal;font-size:var(--fs-xs);font-weight:var(--fw-regular);color:var(--color-gray-500);line-height:var(--lh-snug)}.poster-actions{display:flex;gap:var(--space-3);flex-wrap:wrap}.poster-tip{font-size:var(--fs-xs);color:var(--color-gray-500);line-height:var(--lh-snug);border-top:1px dashed var(--color-gray-300);padding-top:var(--space-3)}.poster-preview{display:flex;justify-content:center;padding:var(--space-4);background:repeating-conic-gradient(var(--color-gray-100) 0% 25%,var(--color-paper) 0% 50%) 50% / 24px 24px}.poster-sheet{width:min(420px,100%);aspect-ratio:210 / 297;background:var(--color-paper);border:3px solid var(--color-ink);box-shadow:var(--shadow-brutal-xl);padding:clamp(16px,5%,28px);display:flex;flex-direction:column;align-items:center;text-align:center}.poster-studio{font-size:clamp(9px,2.6%,12px);font-weight:var(--fw-semibold);letter-spacing:.3em;text-indent:.3em;white-space:nowrap;margin-top:var(--space-3)}.poster-title{font-size:clamp(28px,8%,44px);font-weight:var(--fw-black);line-height:var(--lh-tight);margin-top:var(--space-4);letter-spacing:.02em}.poster-subtitle{font-family:var(--font-serif);font-size:clamp(12px,3.4%,18px);color:var(--color-gray-700);margin-top:var(--space-3)}.poster-qr-wrap{margin-top:auto;display:flex;flex-direction:column;align-items:center;gap:var(--space-4)}.poster-qr{border:2px solid var(--color-ink);padding:6px;background:var(--color-paper);line-height:0}.poster-qr svg{display:block}.poster-qr-label{font-size:clamp(11px,3%,15px);font-weight:var(--fw-bold);border:2px solid var(--color-ink);background:var(--color-ink);color:var(--color-paper);padding:6px 14px}.poster-notes{font-size:var(--fs-md);letter-spacing:.6em;text-indent:.6em;margin:var(--space-4) 0 var(--space-2);color:var(--color-gray-700)}.poster-contact{font-size:clamp(10px,2.8%,14px);font-weight:var(--fw-medium)}.poster-brand{font-size:clamp(10px,2.6%,13px);font-weight:var(--fw-semibold);letter-spacing:.3em;text-indent:.3em;margin:var(--space-2) 0 var(--space-3);color:var(--color-gray-700)}@media (max-width: 900px){.poster-layout{grid-template-columns:1fr}.poster-preview{padding:var(--space-2)}}@media print{@page{size:A5 portrait;margin:0}#site-header,#site-footer,.tool-header,.poster-form,.poster-tip{display:none!important}.tool-page,.container-narrow{padding:0!important;margin:0!important;max-width:none!important;width:auto!important}.poster-layout{display:block!important}.poster-preview{background:none!important;padding:0!important}.poster-sheet{width:100%!important;aspect-ratio:auto!important;min-height:100vh;border:none!important;box-shadow:none!important;box-sizing:border-box;padding:8mm}}.trend-list{display:grid;gap:var(--space-5)}.trend-card{background:var(--color-paper);border:var(--border-brutal);box-shadow:var(--shadow-brutal);padding:var(--space-4)}.trend-card__head{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2) var(--space-3);margin-bottom:var(--space-3)}.trend-card__head h4{margin:0;font-size:var(--fs-md);font-weight:var(--fw-bold);display:flex;align-items:center;gap:6px}.trend-card__icon{font-size:1.1em}.trend-badge{padding:2px 8px;background:var(--color-accent-soft);border:var(--border-brutal-thin);color:var(--color-accent);font-size:var(--fs-xs);font-weight:var(--fw-bold)}.trend-count{margin-left:auto;font-size:var(--fs-xs);color:var(--color-gray-500)}.trend-chart{margin:0 0 var(--space-3)}.trend-svg{display:block;width:100%;height:auto}.trend-svg text{font-family:var(--font-sans);font-size:11px;font-weight:var(--fw-medium)}@media (max-width: 560px){.trend-svg text{font-size:13px}}.trend-meta{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);padding-top:var(--space-3);border-top:var(--border-brutal-thin);font-size:var(--fs-sm);color:var(--color-warm-gray)}.trend-meta b{color:var(--color-ink);font-weight:var(--fw-bold)}.trend-dir--up{color:var(--color-accent);font-weight:var(--fw-bold)}.trend-dir--down{color:var(--color-error);font-weight:var(--fw-bold)}.trend-dir--flat{color:var(--color-warm-gray)}.trend-sentence{margin:var(--space-2) 0 0;font-size:var(--fs-sm);line-height:var(--lh-relaxed);color:var(--color-gray-700)}.trend-none{margin:0;padding:var(--space-4);background:var(--color-soft);border:var(--border-brutal);font-size:var(--fs-sm);color:var(--color-warm-gray)}.prog-trend-block{margin-top:var(--space-5)}.prog-trend-block__head h3{margin:0 0 4px;font-size:var(--fs-lg);font-weight:var(--fw-bold)}.prog-trend-block__head p{margin:0 0 var(--space-4);font-size:var(--fs-sm);color:var(--color-warm-gray)}.prog-view-trend{margin-bottom:var(--space-5);padding:var(--space-5);background:var(--color-paper);border:var(--border-brutal);box-shadow:var(--shadow-brutal)}.prog-view-trend__head h3{margin:0 0 4px;font-size:var(--fs-lg);font-weight:var(--fw-bold)}.prog-view-trend__head p,.prog-view-trend.is-empty p{margin:0;font-size:var(--fs-sm);line-height:var(--lh-relaxed);color:var(--color-warm-gray)}.prog-view-trend__head p{margin-bottom:var(--space-4)}@media print{.trend-card,.prog-view-trend{break-inside:avoid;box-shadow:none}}.runner-shell{position:relative;border:var(--border-brutal);box-shadow:var(--shadow-brutal);background:#e9f2fa;overflow:hidden;touch-action:manipulation;user-select:none;-webkit-user-select:none;cursor:pointer}#runnerCanvas{display:block;width:100%}.runner-hint{position:absolute;top:58px;left:50%;transform:translate(-50%) translateY(-6px);background:var(--color-paper);border:2px solid var(--color-ink);box-shadow:3px 3px 0 var(--color-ink);padding:6px 18px;font-size:var(--fs-md);font-weight:var(--fw-bold);color:var(--color-ink);white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .18s ease,transform .18s ease;z-index:3}.runner-hint.is-on{opacity:1;transform:translate(-50%) translateY(0)}.runner-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:none;align-items:center;justify-content:center;background:#e9f2fadb;z-index:4;padding:var(--space-4)}.runner-overlay.is-on{display:flex}.rn-card{background:var(--color-paper);border:var(--border-brutal);box-shadow:var(--shadow-brutal);padding:var(--space-5) var(--space-6);max-width:520px;width:100%;text-align:center}.rn-card-kicker{font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--color-primary);letter-spacing:.06em;margin-bottom:var(--space-2)}.rn-card-title{font-family:var(--font-display);font-size:var(--fs-3xl);color:var(--color-ink);margin:0 0 var(--space-3)}.rn-card-sub{font-size:var(--fs-md);line-height:var(--lh-relaxed);color:var(--color-ink);margin-bottom:var(--space-4)}.rn-card-note{font-size:var(--fs-sm);color:var(--color-warm-gray);margin:var(--space-3) 0}.rn-levels{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-4)}.rn-level-chip{display:flex;justify-content:space-between;gap:var(--space-3);border:2px solid var(--color-ink);padding:6px 12px;font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--color-ink);background:var(--color-cream)}.rn-level-chip span{font-weight:var(--fw-regular);color:var(--color-warm-gray)}.rn-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-2);margin:var(--space-3) 0}.rn-stats>div{border:2px solid var(--color-ink);padding:var(--space-2);background:var(--color-cream)}.rn-stats b{display:block;font-family:var(--font-display);font-size:var(--fs-xl);color:var(--color-ink)}.rn-stats span{font-size:var(--fs-xs);color:var(--color-warm-gray)}.rn-btns{display:flex;gap:var(--space-3);justify-content:center;flex-wrap:wrap;margin-top:var(--space-3)}.rn-card-wide{max-width:620px}.rn-dim{color:var(--color-warm-gray);font-size:var(--fs-sm)}.rn-banner{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center;font-size:var(--fs-sm)}.rn-chapters{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-3);margin-bottom:var(--space-4);text-align:left}.rn-chapter{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto auto;gap:2px var(--space-2);align-items:center;background:var(--color-cream);border:2px solid var(--color-ink);box-shadow:3px 3px 0 var(--color-ink);padding:var(--space-3);cursor:pointer;font-family:inherit;color:var(--color-ink);transition:transform .12s ease,box-shadow .12s ease}.rn-chapter:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--color-ink)}.rn-chapter:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--color-ink)}.rn-chapter-icon{grid-row:1 / 4;font-size:var(--fs-2xl);line-height:1}.rn-chapter-name{font-weight:var(--fw-bold);font-size:var(--fs-md)}.rn-chapter-tag{font-size:var(--fs-xs);color:var(--color-warm-gray)}.rn-chapter-count{font-size:var(--fs-xs);color:var(--color-primary);font-weight:var(--fw-bold)}.rn-teaches{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-bottom:var(--space-4)}.rn-teaches span{border:2px solid var(--color-ink);background:var(--color-cream);padding:2px 8px;font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--color-ink)}.rn-ts-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--space-2);margin-bottom:var(--space-3)}.rn-ts-btn{display:flex;flex-direction:column;align-items:center;gap:2px;background:var(--color-paper);border:2px solid var(--color-ink);box-shadow:3px 3px 0 var(--color-ink);padding:var(--space-2) 4px;cursor:pointer;font-family:inherit;color:var(--color-ink);transition:transform .12s ease,box-shadow .12s ease}.rn-ts-btn:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--color-ink);background:var(--color-cream)}.rn-ts-btn:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--color-ink)}.rn-ts-btn b{font-family:var(--font-display);font-size:var(--fs-xl)}.rn-ts-btn span{font-size:var(--fs-xs);color:var(--color-warm-gray)}.rn-ts-btn i{font-style:normal;font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--color-primary)}.rn-weak{color:#7b4ba8}.rn-speed{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;margin-top:var(--space-3);padding:var(--space-2) var(--space-3);border:2px solid var(--color-ink);background:var(--color-cream)}.rn-speed[hidden]{display:none}.rn-speed-label{font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--color-ink);white-space:nowrap}.rn-speed-label b{font-family:var(--font-display);font-size:var(--fs-lg)}.rn-speed-label i{font-style:normal}.rn-speed input[type=range]{flex:1 1 160px;min-width:120px;accent-color:var(--color-primary)}.rn-speed-reset{border:2px solid var(--color-ink);background:var(--color-paper);padding:4px 12px;font-size:var(--fs-sm);font-weight:var(--fw-bold);font-family:inherit;color:var(--color-ink);cursor:pointer}.rn-speed-reset:hover{background:var(--color-primary);color:var(--color-paper)}.runner-tip{text-align:center;color:var(--color-warm-gray);font-size:var(--fs-sm);margin-top:var(--space-4)}@media (max-width: 640px){.rn-card{padding:var(--space-4)}.rn-card-title{font-size:var(--fs-2xl)}.rn-stats{grid-template-columns:repeat(2,1fr)}.rn-chapters{grid-template-columns:1fr}.rn-ts-grid{grid-template-columns:repeat(3,1fr)}}
