@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/sarabun-thai-400-normal-C2DaJlKK.woff2) format("woff2"),url(/assets/sarabun-thai-400-normal-CH-UbWgg.woff) format("woff");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/sarabun-vietnamese-400-normal-igdrzAGY.woff2) format("woff2"),url(/assets/sarabun-vietnamese-400-normal-DPfkSCMy.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/sarabun-latin-ext-400-normal-BbP7GpLL.woff2) format("woff2"),url(/assets/sarabun-latin-ext-400-normal-BsmTn0SS.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Sarabun;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/sarabun-latin-400-normal-URPBxl-K.woff2) format("woff2"),url(/assets/sarabun-latin-400-normal-DmguIS-7.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/sarabun-thai-500-normal-BVssjame.woff2) format("woff2"),url(/assets/sarabun-thai-500-normal-C3iDLEzi.woff) format("woff");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/sarabun-vietnamese-500-normal-Dpe7Br9m.woff2) format("woff2"),url(/assets/sarabun-vietnamese-500-normal-CpRVvGRU.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/sarabun-latin-ext-500-normal-DE1LysqI.woff2) format("woff2"),url(/assets/sarabun-latin-ext-500-normal-Cot16Bd2.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Sarabun;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/sarabun-latin-500-normal-BjUTcdxu.woff2) format("woff2"),url(/assets/sarabun-latin-500-normal-CJexTAnl.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/sarabun-thai-600-normal-3dIAQ-_s.woff2) format("woff2"),url(/assets/sarabun-thai-600-normal-DWKeTe6a.woff) format("woff");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/sarabun-vietnamese-600-normal-DkxrOlLB.woff2) format("woff2"),url(/assets/sarabun-vietnamese-600-normal-BMbOgAW-.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/sarabun-latin-ext-600-normal-BRxjKUQ6.woff2) format("woff2"),url(/assets/sarabun-latin-ext-600-normal-0tXu9x_i.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Sarabun;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/sarabun-latin-600-normal-DMD3TROr.woff2) format("woff2"),url(/assets/sarabun-latin-600-normal-9FonlkKx.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/sarabun-thai-700-normal-CbuDipM3.woff2) format("woff2"),url(/assets/sarabun-thai-700-normal-CP2-p8e-.woff) format("woff");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/sarabun-vietnamese-700-normal-DrMy3BMX.woff2) format("woff2"),url(/assets/sarabun-vietnamese-700-normal-lN6N8XBT.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/sarabun-latin-ext-700-normal-CnQtP196.woff2) format("woff2"),url(/assets/sarabun-latin-ext-700-normal-ykw7DJpk.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Sarabun;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/sarabun-latin-700-normal-DQKyWxHq.woff2) format("woff2"),url(/assets/sarabun-latin-700-normal-DUuqj4Ju.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Bai Jamjuree;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/bai-jamjuree-thai-500-normal-CldQ8G7b.woff2) format("woff2"),url(/assets/bai-jamjuree-thai-500-normal-Dhm1BvDs.woff) format("woff");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:Bai Jamjuree;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/bai-jamjuree-vietnamese-500-normal-Dbnn3zBI.woff2) format("woff2"),url(/assets/bai-jamjuree-vietnamese-500-normal-CH3DLoS5.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bai Jamjuree;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/bai-jamjuree-latin-ext-500-normal-Bvg0hbnx.woff2) format("woff2"),url(/assets/bai-jamjuree-latin-ext-500-normal-Tx6AOFEI.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Bai Jamjuree;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/bai-jamjuree-latin-500-normal-BY8LWt3L.woff2) format("woff2"),url(/assets/bai-jamjuree-latin-500-normal-B317a6-V.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Bai Jamjuree;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/bai-jamjuree-thai-600-normal-CzTxzpuq.woff2) format("woff2"),url(/assets/bai-jamjuree-thai-600-normal-DfF4rXK8.woff) format("woff");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:Bai Jamjuree;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/bai-jamjuree-vietnamese-600-normal-BN8NTHFU.woff2) format("woff2"),url(/assets/bai-jamjuree-vietnamese-600-normal-TJTmiha_.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bai Jamjuree;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/bai-jamjuree-latin-ext-600-normal-BSsq51KX.woff2) format("woff2"),url(/assets/bai-jamjuree-latin-ext-600-normal-HjveDPSW.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Bai Jamjuree;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/bai-jamjuree-latin-600-normal-CgeOh7Cx.woff2) format("woff2"),url(/assets/bai-jamjuree-latin-600-normal-D119NnP2.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Bai Jamjuree;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/bai-jamjuree-thai-700-normal-B9r9e7kK.woff2) format("woff2"),url(/assets/bai-jamjuree-thai-700-normal-Bc05AgLy.woff) format("woff");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:Bai Jamjuree;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/bai-jamjuree-vietnamese-700-normal-Bt7Gqki8.woff2) format("woff2"),url(/assets/bai-jamjuree-vietnamese-700-normal-B4ES4mUY.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bai Jamjuree;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/bai-jamjuree-latin-ext-700-normal-D8T8ZYP8.woff2) format("woff2"),url(/assets/bai-jamjuree-latin-ext-700-normal-DbYeUi7t.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Bai Jamjuree;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/bai-jamjuree-latin-700-normal-D8TxKkAc.woff2) format("woff2"),url(/assets/bai-jamjuree-latin-700-normal-mhQ7bs3u.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2) format("woff2"),url(/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2) format("woff2"),url(/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--accent: #146b4a;--brand-gold: #96690f;--brand-gold-on-ink: #e3b755;--paper: #faf9f5;--panel: #ffffff;--panel-2: #f1f2ec;--ink: #1c2420;--ink-2: #4c5a56;--ink-3: #7c8a85;--line: #ccd3cc;--line-strong: #1c2420;--fail: #9c2b23;--fail-soft: #f7e6e4;--warn: #8a6d1a;--warn-soft: #f6efdb;--ok: #146b4a;--ok-soft: #e2efe7;--info: #55605c;--info-soft: #e9eae5;--sel: #0e5c8a;--accent-soft: color-mix(in srgb, var(--accent) 14%, var(--panel));--accent-ink: #ffffff;--font-body: "Sarabun", "TH Sarabun New", system-ui, sans-serif;--font-disp: "Bai Jamjuree", "Sarabun", sans-serif;--font-mono: "IBM Plex Mono", Consolas, monospace;--fs-base: 15.5px;--radius: 7px;--radius-pill: 99px;--shadow: 0 3px 14px rgba(0,0,0,.1)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]):not([data-theme=contrast]){--paper: #141816;--panel: #1c2320;--panel-2: #232b27;--ink: #e6eae6;--ink-2: #a8b4ae;--ink-3: #75817b;--line: #37423c;--line-strong: #cfd8d2;--fail: #e0776d;--fail-soft: #43221f;--warn: #d3ac4a;--warn-soft: #3a311a;--ok: #57b487;--ok-soft: #1d3a2c;--info: #9aa6a0;--info-soft: #2a322d;--sel: #5aa4d0;--brand-gold: #d8ab4a;--brand-gold-on-ink: #7d5806;--shadow: 0 3px 14px rgba(0,0,0,.45)}}:root[data-theme=dark]{--paper: #141816;--panel: #1c2320;--panel-2: #232b27;--ink: #e6eae6;--ink-2: #a8b4ae;--ink-3: #75817b;--line: #37423c;--line-strong: #cfd8d2;--fail: #e0776d;--fail-soft: #43221f;--warn: #d3ac4a;--warn-soft: #3a311a;--ok: #57b487;--ok-soft: #1d3a2c;--info: #9aa6a0;--info-soft: #2a322d;--sel: #5aa4d0;--brand-gold: #d8ab4a;--brand-gold-on-ink: #7d5806;--shadow: 0 3px 14px rgba(0,0,0,.45)}:root[data-theme=contrast]{--paper: #ffffff;--panel: #ffffff;--panel-2: #f2f2f2;--ink: #000000;--ink-2: #1a1a1a;--ink-3: #3d3d3d;--line: #6b6b6b;--line-strong: #000000;--fail: #b00020;--fail-soft: #ffe3e3;--warn: #7a5a00;--warn-soft: #fff1c2;--ok: #0b5d3a;--ok-soft: #d9f3e6;--info: #2b2b2b;--info-soft: #e6e6e6;--sel: #003f7a;--brand-gold: #6b4a00;--brand-gold-on-ink: #ffd166;--shadow: none}:root[data-size=large]{--fs-base: 18px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:var(--fs-base);line-height:1.65}button,input,select,textarea{font:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--sel);outline-offset:2px}h1,h2,h3{font-family:var(--font-disp);text-wrap:balance;margin:0}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}@media(prefers-reduced-motion:no-preference){body,.btn,.card,.rail button{transition:background-color .2s,color .2s,border-color .2s}}.shell{display:flex;flex-direction:column;min-height:100vh}.topbar{display:flex;align-items:center;gap:14px;padding:0 14px;height:50px;flex:none;background:var(--ink);color:var(--paper)}.brand{display:inline-flex;align-items:center;gap:9px;font-family:var(--font-disp)}.brand-mark{display:block;flex:none}.brand-text{display:flex;flex-direction:column;line-height:1.08}.brand-name{font-weight:700;font-size:1.02em;letter-spacing:.07em;opacity:.92}.brand-sub{font-weight:700;font-size:.6em;letter-spacing:.13em;opacity:.9}.brand-sub i{font-style:normal;color:var(--brand-gold)}.brand-on-bar .brand-sub i{color:var(--brand-gold-on-ink)}.topbar .spacer{flex:1}.topbar .status{font-family:var(--font-mono);font-size:.74em;opacity:.7}.seg{display:flex;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.seg button{border:0;background:var(--panel);color:var(--ink-2);padding:4px 11px;font-size:.9em}.seg button.on{background:var(--accent);color:var(--accent-ink);font-weight:600}.topbar .seg{border-color:transparent}.topbar .seg button{background:transparent;color:var(--paper);opacity:.7}.topbar .seg button.on{background:var(--paper);color:var(--ink);opacity:1}.main{flex:1;display:flex;min-height:0}.rail{width:190px;flex:none;background:var(--panel);border-right:1px solid var(--line);padding:12px 8px;display:flex;flex-direction:column;gap:2px}.rail button{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:transparent;border:0;border-radius:var(--radius);padding:8px 10px;font-size:.95em;color:var(--ink-2)}.rail button:hover{background:var(--panel-2)}.rail button.on{background:var(--accent-soft);color:var(--accent);font-weight:600}.rail .sep{height:1px;background:var(--line);margin:8px 4px}.rail .grow{flex:1}.rail .foot{font-family:var(--font-mono);font-size:.7em;color:var(--ink-3);padding:0 10px 4px;line-height:1.5}.stage{flex:1;min-width:0;overflow:auto;padding:20px 22px 60px}.stage-head{display:flex;align-items:baseline;gap:12px;margin-bottom:14px;flex-wrap:wrap}.stage-head h1{font-size:1.35em;font-weight:600}.stage-head .sub{color:var(--ink-2);font-size:.9em}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px}.card h2{font-size:1.05em;font-weight:600;margin-bottom:4px}.card .sub{color:var(--ink-2);font-size:.9em;margin:0 0 10px}.btn{border:1px solid var(--line);background:var(--panel);color:var(--ink-2);border-radius:var(--radius);padding:6px 14px;font-size:.92em}.btn:hover:not(:disabled){border-color:var(--ink-3);color:var(--ink)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}.btn:disabled{opacity:.5;cursor:not-allowed}.btnrow{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.chip{display:inline-block;font-family:var(--font-mono);font-size:.74em;font-weight:600;letter-spacing:.06em;padding:3px 9px 4px;border-radius:var(--radius-pill);line-height:1}.chip.FAIL{background:var(--fail-soft);color:var(--fail)}.chip.WARN{background:var(--warn-soft);color:var(--warn)}.chip.INFO{background:var(--info-soft);color:var(--info)}.chip.OK{background:var(--ok-soft);color:var(--ok)}.notice{background:var(--accent-soft);color:var(--ink);border-left:3px solid var(--accent);padding:6px 10px;border-radius:4px;font-size:.9em;margin:8px 0}.error{background:var(--fail-soft);color:var(--fail);border-left:3px solid var(--fail);padding:6px 10px;border-radius:4px;font-size:.9em;margin:8px 0}.banner{font-size:.85em;padding:6px 12px;border-radius:var(--radius);margin-bottom:14px}.banner.ok{background:var(--ok-soft);color:var(--ok)}.banner.warn{background:var(--warn-soft);color:var(--warn)}.empty{color:var(--ink-3);font-size:.95em;padding:18px 0;text-align:center}.two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;align-items:start}.picker{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:8px;font-size:.9em}.picker .lbl{color:var(--ink-2)}.picker select{max-width:240px;padding:5px 8px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);color:var(--ink)}textarea.json{width:100%;min-height:380px;font-family:var(--font-mono);font-size:.82em;line-height:1.5;background:var(--panel-2);color:var(--ink);border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px;resize:vertical}textarea.json.bad{border-color:var(--fail)}.gate{border-radius:var(--radius);padding:9px 13px;font-weight:600;font-size:.95em;margin-bottom:10px}.gate.blocked{background:var(--fail-soft);color:var(--fail);border:1.5px solid var(--fail)}.gate.ok{background:var(--ok-soft);color:var(--ok);border:1.5px solid var(--ok)}.scores{display:flex;gap:8px;margin-bottom:12px}.score{flex:1;text-align:center;border:1px solid var(--line);border-radius:var(--radius);padding:6px 4px 4px}.score b{display:block;font-family:var(--font-disp);font-size:1.35em;line-height:1.1}.score span{font-family:var(--font-mono);font-size:.68em;letter-spacing:.08em;color:var(--ink-3)}.score.FAIL b{color:var(--fail)}.score.WARN b{color:var(--warn)}.score.INFO b{color:var(--info)}details.assume{border:1px dashed var(--line);border-radius:var(--radius);padding:6px 12px;margin-bottom:12px;font-size:.9em;color:var(--ink-2)}details.assume summary{cursor:pointer;color:var(--ink)}details.assume ol{margin:6px 0 4px 18px;padding:0}.finding{border:1px solid var(--line);border-left-width:4px;border-radius:var(--radius);background:var(--panel);margin-bottom:9px;overflow:hidden}.finding.FAIL{border-left-color:var(--fail)}.finding.WARN{border-left-color:var(--warn)}.finding.INFO{border-left-color:var(--info)}.finding .head{width:100%;text-align:left;border:0;background:transparent;color:var(--ink);padding:9px 12px;display:flex;gap:9px;align-items:baseline;font-size:.93em}.finding .head .msg{flex:1}.finding .head .chev{color:var(--ink-3);font-size:.8em}.finding .body{border-top:1px dashed var(--line);padding:9px 12px 11px;font-size:.86em;color:var(--ink-2)}.finding .meta .mono{color:var(--accent);font-size:.95em}.finding .remedy{margin-top:4px;color:var(--ink)}table.trace{width:100%;border-collapse:collapse;margin-top:8px;font-size:.92em}table.trace th{font-family:var(--font-mono);font-size:.72em;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);font-weight:500;text-align:left;padding:4px 6px;border-bottom:1px solid var(--line)}table.trace td{padding:4px 6px;border-bottom:1px solid var(--line);vertical-align:top}table.trace td.r{text-align:right;white-space:nowrap}.tscroll{overflow-x:auto}.settings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}.swatches{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:6px}.swatch{width:28px;height:28px;border-radius:50%;border:2px solid transparent;padding:0}.swatch.on{border-color:var(--ink);box-shadow:0 0 0 2px var(--panel) inset}input[type=color]{width:34px;height:28px;border:1px solid var(--line);border-radius:4px;background:var(--panel);padding:1px;cursor:pointer}.demo-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.topbar .proj{display:flex;align-items:center;gap:8px;padding:4px 12px;background:color-mix(in srgb,var(--paper) 12%,transparent);border:0;border-radius:var(--radius);color:var(--paper);font-size:.92em}.topbar .proj .proj-name{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar .rev{font-family:var(--font-mono);font-size:.72em;background:var(--accent);color:var(--accent-ink);padding:1px 7px;border-radius:var(--radius-pill)}.topbar .rev.dirty{background:var(--warn);color:#fff}.topbar .btn.save{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}.topbar .btn.save:disabled{background:transparent;color:var(--paper);border-color:color-mix(in srgb,var(--paper) 30%,transparent)}.topbar .btn.ghost{background:transparent;color:var(--paper);border-color:color-mix(in srgb,var(--paper) 30%,transparent)}.linklike{border:0;background:transparent;color:var(--accent);text-decoration:underline;padding:0 4px;font-size:.9em}.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:24px}.auth{width:min(420px,100%);display:grid;gap:10px}.auth-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:4px}.auth-brand{display:flex;align-items:center;gap:6px;min-width:0}.auth-brand .small{white-space:nowrap;opacity:.7}.auth h1{font-size:1.4em}.field{display:grid;gap:4px;font-size:.92em;color:var(--ink-2)}.field input{padding:7px 10px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);color:var(--ink)}.auth-links{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:.88em}.pj-list{list-style:none;padding:0;margin:10px 0 0;display:grid;gap:6px}.pj-list li{display:flex;justify-content:space-between;align-items:center;gap:10px;border:1px solid var(--line);border-radius:var(--radius);padding:8px 12px}.pj-list li.on{border-color:var(--accent);background:var(--accent-soft)}.pj-list .pj-main{display:grid;gap:2px;min-width:0}.pj-list .pj-main b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pj-members{list-style:none;padding:0;margin:6px 0;display:grid;gap:4px;font-size:.92em}table.trace tr.on td{background:var(--accent-soft)}.scene3d{position:relative;width:100%;height:100%}.scene3d-host{width:100%;height:100%}.scene3d-host canvas{display:block;width:100%!important;height:100%!important}.sunbar{position:absolute;top:10px;left:50%;transform:translate(-50%);background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-pill);display:flex;align-items:center;gap:12px;padding:6px 16px;box-shadow:var(--shadow);font-size:.85em;white-space:nowrap}.sunbar input[type=range]{width:160px;accent-color:var(--accent)}.scene3d-note{position:absolute;left:12px;top:12px;max-width:320px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:6px 10px}table.trace tr.bad td{background:var(--fail-soft)}.lp-row input[type=checkbox]{width:auto}.bonus-list{margin:6px 0 0 18px;padding:0;font-size:.92em;color:var(--ink-2)}.tornado{display:grid;gap:4px;margin:6px 0;font-size:.85em}.tornado .trow{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:10px;align-items:center}.tornado .tbar{position:relative;height:14px;background:var(--panel-2);border-radius:3px}.tornado .tbar i{position:absolute;top:2px;bottom:2px;background:var(--accent);border-radius:2px;opacity:.8}.tornado .tbar b{position:absolute;left:50%;top:0;bottom:0;width:1px;background:var(--ink-3)}.tornado .tv{text-align:right;color:var(--ink-2)}.canvas2d .shape.neighbor{fill:var(--fail-soft);stroke:var(--ink-3)}.canvas2d .plane{fill:var(--panel-2);fill-opacity:.5;stroke:var(--ink-2)}.canvas2d .ridge{stroke:var(--ink)}.canvas2d .attrib{fill:var(--ink-3);paint-order:stroke;stroke:var(--paper);stroke-width:3px;stroke-linejoin:round}.amr-box table{margin-top:6px}.sb-tabs{margin:0 0 10px}.rt-list{display:grid;gap:4px;margin:8px 0}.card h3{font-size:13px;margin:12px 0 4px;color:var(--ink-2)}.pm-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:12px}.pm-card.required{border-left:4px solid var(--fail)}.pm-card.check{border-left:4px solid var(--warn)}.pm-card.not-required{border-left:4px solid var(--ok)}.pm-stages{display:flex;flex-wrap:wrap;gap:4px;margin:8px 0}.pm-stage{font-size:12px;padding:3px 8px;border:1px solid var(--line);border-radius:12px;color:var(--ink-3)}.pm-stage.done{background:var(--ok-soft);color:var(--ok);border-color:var(--ok)}.pm-stage.cur{background:var(--accent);color:#fff;border-color:var(--accent)}.pm-filing label{margin-right:6px}.rt-item{padding:6px 8px;border:1px solid var(--line);border-radius:6px;cursor:pointer;background:var(--panel)}.rt-item.on{border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent)}.rt-wp input.mini{width:64px}.rt-cable{display:inline-flex;gap:4px;align-items:center}.rt-cable input.mini{width:56px}.rt-analysis{margin-top:8px}.imp-months{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.sv-page .card{margin-bottom:10px}.sv-page input,.sv-page select,.sv-page textarea{font-size:16px;min-height:40px}.sv-page textarea{width:100%;min-height:80px}.sv-page .btn.big{font-size:16px;padding:12px 18px}.sv-page .btn{min-height:40px}.sv-item{display:grid;grid-template-columns:minmax(160px,1fr) 2fr;gap:8px;padding:8px 0;border-bottom:1px solid var(--line);align-items:start}.sv-item.miss .sv-label,.sv-label .req{color:var(--fail)}.sv-label .hint{color:var(--ink-3)}.sv-ctl{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.sv-ctl .seg button{min-width:64px;min-height:40px}.sv-photos{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.sv-photos .thumb{position:relative;display:inline-block}.sv-photos .thumb img{height:64px;border-radius:4px;border:1px solid var(--line);display:block}.sv-photos .thumb button{position:absolute;top:-6px;right:-6px;width:20px;height:20px;border-radius:50%;border:0;background:var(--fail);color:#fff;font-size:12px;line-height:20px;padding:0;cursor:pointer}.sv-list{display:grid;gap:8px;margin-top:10px}.sv-card{padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--panel);cursor:pointer}.sv-row{align-items:center}.warn-list{color:var(--warn);margin:6px 0 0 18px}@media(max-width:640px){.sv-item{grid-template-columns:1fr}.sv-page .lp-row{flex-direction:column;align-items:stretch}}.imp-row select,.imp-row input{max-width:100%}.svg-doc{background:#fff;border:1px solid var(--line);border-radius:6px;padding:6px;overflow-x:auto}.svg-doc svg{max-width:100%;height:auto;display:block}.sb-3d{height:420px;border:1px solid var(--line);border-radius:6px;overflow:hidden}.sb-3d>*{height:100%}.amr-chart{width:100%;height:60px;display:block;margin-top:6px;background:var(--panel);border:1px solid var(--line)}.amr-chart polyline{fill:none;stroke-width:1.5;vector-effect:non-scaling-stroke}.amr-chart .wd{stroke:var(--accent)}.amr-chart .we{stroke:var(--ink-3)}.lp-chip.neighbor{border-color:var(--fail);color:var(--fail)}.lp{display:flex;flex-direction:column;height:calc(100vh - 90px);min-height:480px}.lp-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}.lp-tools .spacer{flex:1}.lp-body{flex:1;display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:12px;min-height:0}.lp-canvas-wrap{position:relative;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;min-height:0}.canvas2d{width:100%;height:100%;display:block;color:var(--ink);touch-action:none;cursor:grab}.canvas2d.panning{cursor:grabbing}.canvas2d.tool-draw,.canvas2d.tool-gcp{cursor:crosshair}.canvas2d .shape.roof{fill:var(--panel-2);stroke:var(--ink)}.canvas2d .shape.obstacle{fill:var(--warn-soft);stroke:var(--fail)}.canvas2d .shape.ignore{fill:none;stroke:var(--ink-3)}.canvas2d .shape.sel{stroke:var(--sel)}.canvas2d .usable{fill:none;stroke:var(--warn)}.canvas2d .panel{fill:var(--ok-soft);stroke:var(--ok);cursor:pointer}.canvas2d .panel.light{fill:var(--warn-soft)}.canvas2d .panel.heavy{fill:var(--fail-soft)}.canvas2d .panel.sel{stroke:var(--sel)}.canvas2d .vertex{fill:var(--panel);stroke:var(--sel);cursor:move}.canvas2d .trace polyline{stroke:var(--fail)}.canvas2d .trace circle{fill:var(--fail)}.canvas2d .trace circle.first{fill:var(--panel);stroke:var(--fail);stroke-width:inherit}.canvas2d .gcp line{stroke:var(--fail)}.canvas2d .gcp text{fill:var(--fail);font-family:var(--font-mono)}.canvas2d .gcp .tgt{stroke:var(--ok)}.canvas2d .hud line,.canvas2d .hud circle,.canvas2d .hud path{stroke:var(--ink-2)}.canvas2d .hud path{fill:var(--ink-2)}.canvas2d .hud text{fill:var(--ink-2);font-family:var(--font-mono)}.lp-float{position:absolute;left:12px;bottom:12px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:6px 12px;font-size:.85em;color:var(--ink-2);box-shadow:var(--shadow)}.lp-float b{color:var(--ink);font-family:var(--font-mono)}.lp-insp{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);display:flex;flex-direction:column;min-height:0;overflow:hidden}.lp-sel{padding:12px 14px;border-bottom:1px solid var(--line);background:var(--panel-2);font-size:.9em}.lp-sel-h{font-weight:600;margin-bottom:6px}.insp-tabs{display:flex;border-bottom:1px solid var(--line);flex:none}.insp-tabs button{flex:1;border:0;background:transparent;padding:8px 4px;font-size:.88em;color:var(--ink-3);border-bottom:2px solid transparent}.insp-tabs button.on{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.insp-body{flex:1;overflow-y:auto;padding:12px 14px;font-size:.9em}.lp-row{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;margin-bottom:8px}.lp-row label,.lp-place label,.lp-grid label{display:flex;align-items:center;gap:6px;color:var(--ink-2);font-size:.92em}.lp-row input,.lp-place input,.lp-grid input,.lp-grid select,input.mini{padding:4px 7px;border:1px solid var(--line);border-radius:5px;background:var(--panel);color:var(--ink);font-size:.95em;width:86px}.lp-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px}.lp-grid label{justify-content:space-between}.lp-grid input,.lp-grid select{width:92px}input.mini{width:70px}.lp-block{margin-top:10px;padding-top:10px;border-top:1px dashed var(--line)}.lp-place{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center}.filebtn{display:inline-block}.lp-shapes{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.lp-chip{border:1px solid var(--line);background:var(--panel);color:var(--ink-2);border-radius:var(--radius-pill);padding:3px 10px;font-size:.85em}.lp-chip.roof{border-color:var(--ok);color:var(--ok)}.lp-chip.obstacle{border-color:var(--warn);color:var(--warn)}.lp-chip.sel{background:var(--accent-soft);border-color:var(--accent)}dl.props{display:grid;grid-template-columns:1fr auto;gap:3px 12px;margin:6px 0 8px;font-size:.92em}dl.props dt{color:var(--ink-2)}dl.props dd{margin:0;text-align:right}.small{font-size:.82em;color:var(--ink-3)}@media(max-width:900px){.two{grid-template-columns:1fr}.lp-body{grid-template-columns:1fr;grid-template-rows:1fr auto}.lp-insp{max-height:45vh}.rail{width:56px}.rail button span,.rail .foot{display:none}}.learn .stage-head .spacer{flex:1}.learn-progress{height:5px;background:var(--line);border-radius:99px;overflow:hidden;margin:-4px 0 14px}.learn-progress span{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--ok));transition:width .35s}.learn-grid{display:grid;grid-template-columns:250px 1fr;gap:16px;align-items:start}.learn-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.learn-list button{width:100%;display:flex;align-items:center;gap:10px;text-align:left;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:9px 12px;color:var(--ink-2);font-size:.93em}.learn-list li.on button{border-color:var(--accent);background:var(--accent-soft);color:var(--ink);font-weight:600}.learn-list li.done button{color:var(--ink)}.learn-list .num{width:24px;height:24px;border-radius:50%;display:inline-grid;place-items:center;background:var(--panel-2);font-family:var(--font-mono);font-size:.78em;flex:none}.learn-list li.on .num{background:var(--accent);color:var(--accent-ink)}.learn-list li.done .num{background:var(--ok-soft);color:var(--ok)}.learn-view{display:flex;flex-direction:column;gap:12px;min-width:0}.learn-frame{position:relative;aspect-ratio:16 / 10;background:#0f1a15;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;cursor:pointer}.learn-frame img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;opacity:0;transition:opacity .6s}.learn-frame img.on{opacity:1}.learn-ring{position:absolute;width:34px;height:34px;margin:-17px 0 0 -17px;border-radius:50%;border:3px solid var(--sun, #e8a317);box-shadow:0 0 0 4px #e8a31740;animation:learn-pulse 1.6s ease-out infinite;pointer-events:none;transition:left .5s,top .5s}@keyframes learn-pulse{0%{transform:scale(.7);opacity:1}to{transform:scale(1.5);opacity:0}}.learn-dots{position:absolute;right:10px;bottom:8px;display:flex;gap:5px}.learn-dots i{width:7px;height:7px;border-radius:50%;background:#fff6}.learn-dots i.on{background:#fff}.learn-caption h2{font-size:1.15em;font-weight:600;margin-bottom:4px}.learn-caption .lead{margin:0 0 6px;font-size:1.02em}.learn-caption .small{color:var(--ink-2);margin:0}.learn-actions{display:flex;gap:8px;align-items:center}.learn-actions .spacer{flex:1}.learn-foot{display:flex;gap:14px;align-items:center;color:var(--ink-3)}@media(max-width:860px){.learn-grid{grid-template-columns:1fr}.learn-list{flex-direction:row;overflow-x:auto}.learn-list li{flex:none}.learn-list .lbl{display:none}}.learn-list .xtra{font-style:normal;font-family:var(--font-mono);font-size:.68em;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin-left:6px}.learn-list .cnt{margin-left:auto;font-size:.72em;color:var(--ink-3)}.learn-sub{list-style:none;margin:4px 0 2px 14px;padding:0 0 0 10px;border-left:2px solid var(--line);display:flex;flex-direction:column;gap:4px}.learn-sub button{padding:6px 10px;font-size:.88em;border-style:dashed}.learn-sub li.on button{border-style:solid;border-color:var(--accent);background:var(--accent-soft);color:var(--ink);font-weight:600}.learn-sub .num{width:20px;height:20px;font-size:.72em}.learn-sub li.on .num{background:var(--accent);color:var(--accent-ink)}.learn-sub li.done .num{background:var(--ok-soft);color:var(--ok)}.learn-caption .xtra{font-style:normal;font-family:var(--font-mono);font-size:.66em;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}@media(max-width:860px){.learn-sub{display:none}}.learn-list>li{position:relative}.learn-list>li>.tog{position:absolute;right:6px;top:7px;width:26px;height:26px;padding:0;border:0;background:transparent;color:var(--ink-3);font-size:.95em;border-radius:50%}.learn-list>li>.tog:hover{background:var(--panel-2);color:var(--ink)}.learn-list>li>button:first-child{padding-right:34px}.learn-zoom{position:absolute;left:10px;top:8px;z-index:2;width:30px;height:30px;border-radius:50%;border:1px solid rgba(255,255,255,.35);background:#00000073;color:#fff;font-size:1em}.learn-zoom:hover{background:#000000b3}.learn-view.big{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:var(--paper);padding:14px 18px;gap:10px}.learn-view.big .learn-frame{flex:1;aspect-ratio:auto;min-height:0}.learn-view.big .learn-caption,.learn-view.big .learn-actions,.learn-view.big .learn-foot{display:none}.learn-big-bar{display:flex;align-items:center;gap:8px;font-size:.95em}.learn-big-bar .spacer{flex:1}.canvas2d.tool-wall,.canvas2d.tool-room,.canvas2d.tool-column{cursor:crosshair}.canvas2d .iwall{fill:var(--ink-2);stroke:var(--ink)}.canvas2d .icol{fill:var(--ink-3);stroke:var(--ink)}.canvas2d .ibeam{fill:none;stroke:var(--ink-3)}.canvas2d .iroom{fill:var(--info-soft);fill-opacity:.35;stroke:var(--info)}.canvas2d .iroom-label{fill:var(--info);font-family:var(--font-body)}.canvas2d .ipending{stroke:var(--sel)}.canvas2d .ipending-pt{fill:var(--sel)}.canvas2d.tool-place{cursor:copy}.canvas2d .ieq polygon{cursor:pointer}.learn-voice{display:inline-flex;align-items:center;gap:4px;color:var(--ink-2)}.learn-voice input:disabled+*{opacity:.6}.learn-voice-opts{display:inline-flex;gap:6px;align-items:center}.learn-voice-opts select{max-width:180px;padding:3px 6px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);color:var(--ink);font-size:.92em}
