@font-face{font-family:Instrument;src:url('./assets/fonts/instrument-regular.ttf') format('truetype');font-weight:400;font-display:swap}
@font-face{font-family:Instrument;src:url('./assets/fonts/instrument-medium.ttf') format('truetype');font-weight:500;font-display:swap}
@font-face{font-family:Instrument;src:url('./assets/fonts/instrument-semibold.ttf') format('truetype');font-weight:600;font-display:swap}
@font-face{font-family:Instrument;src:url('./assets/fonts/instrument-bold.ttf') format('truetype');font-weight:700;font-display:swap}
:root{--page:#f7f7f5;--surface:#fff;--canvas:#eef0f3;--ink:#14181f;--secondary:#4b5159;--muted:#626974;--accent:#2b4c7e;--accent-soft:#edf2f8;--border:#e3e3dd;--success:#246448;--danger:#b4322f;--s1:8px;--s2:16px;--s3:24px;--s4:32px;--s6:48px;--s8:64px;--s12:96px;--radius:8px;--small-radius:4px;--motion:200ms;--exit:140ms;--font:Instrument,'PingFang SC','Noto Sans SC','Microsoft YaHei',system-ui,sans-serif;--body:16px;--small:14px;--label:12px;--title:24px;--heading:32px;--display:56px;--shadow:0 16px 48px rgb(20 24 31 / .08)}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:96px}
body{margin:0;background:var(--canvas);color:var(--ink);font:var(--body)/1.6 var(--font);-webkit-font-smoothing:antialiased}
button,input,textarea{font:inherit}
button,a,input,textarea{-webkit-tap-highlight-color:transparent}
button{cursor:pointer}
a{color:inherit;text-decoration:none}
button{border:0;background:none;color:inherit}
button:disabled{cursor:not-allowed;opacity:.48}
button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--accent);outline-offset:4px}
button,a{touch-action:manipulation}
img{max-width:100%;display:block}
svg{display:block;flex:none}
h1,h2,h3,p{margin:0}
h1,h2,h3{font-weight:600;text-wrap:balance;line-height:1.25}
p{text-wrap:pretty}
small{font-size:var(--small)}
.icon{width:20px;height:20px;display:block;flex:none}
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.studio-header{position:sticky;top:0;z-index:100;height:64px;background:var(--surface);border-bottom:1px solid #dde1e7;display:flex;align-items:center;justify-content:space-between;padding:0 var(--s4);gap:var(--s2)}
.studio-brand{display:flex;align-items:center;gap:var(--s2);min-width:0}
.brand-image{width:151px;height:auto;aspect-ratio:151/33}
.studio-brand .brand-image{width:120px}
.studio-divider{display:block;width:1px;height:24px;background:#dde1e7}
.studio-name{font-size:var(--small);font-weight:500;white-space:nowrap}
.studio-meta{font-size:var(--small);color:var(--muted);display:flex;align-items:center;gap:var(--s2)}
.sample-label{padding:4px var(--s1);border:1px solid #d9dfe7;border-radius:var(--small-radius);font-size:var(--label);line-height:1.5;color:var(--secondary);white-space:nowrap}
.workspace{display:grid;grid-template-columns:192px minmax(0,1fr);align-items:start}
.canvas-sidebar{position:sticky;top:64px;height:calc(100dvh - 64px);padding:var(--s4) var(--s2);border-right:1px solid #dce0e6;display:flex;flex-direction:column;gap:var(--s4);overflow-y:auto}
.sidebar-caption{font-size:var(--label);color:var(--muted);letter-spacing:1px;margin-bottom:var(--s2)}
.canvas-nav{display:grid;gap:var(--s1)}
.canvas-nav a{display:flex;align-items:center;gap:var(--s1);padding:12px var(--s1);font-size:var(--small);border-radius:var(--small-radius);color:var(--secondary)}
.canvas-nav a.active{background:var(--surface);color:var(--ink);box-shadow:0 2px 8px rgb(20 24 31 / .04)}
.nav-number{font:var(--label)/1.6 Instrument,monospace;color:var(--muted);width:24px;flex:none}
.nav-count{margin-left:auto;font-size:var(--label);color:var(--muted)}
.sidebar-bottom{margin-top:auto;font-size:var(--label);color:var(--muted);line-height:1.8;display:grid;gap:var(--s1)}
.canvas-main{padding:var(--s4) var(--s4) var(--s8);min-width:0}
.canvas-intro{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--s3);margin-bottom:var(--s6)}
.canvas-intro h1{font-size:32px;letter-spacing:-1px}
.canvas-intro p{font-size:var(--small);color:var(--muted);margin-top:var(--s1);max-width:640px}
.intro-index{display:flex;align-items:baseline;gap:var(--s1);white-space:nowrap;color:var(--muted);font-size:var(--small)}
.intro-index strong{font-size:var(--heading);color:var(--ink);font-weight:500}
.canvas-section{scroll-margin-top:96px;margin-bottom:var(--s8)}
.section-header{display:flex;align-items:flex-start;gap:var(--s2);margin-bottom:var(--s3)}
.section-number{display:flex;width:40px;height:40px;border:1px solid #cdd4dd;align-items:center;justify-content:center;color:var(--accent);font-size:var(--small);border-radius:var(--small-radius);background:#f4f6f9;flex:none}
.section-header h2{font-size:22px;line-height:1.4}
.section-header p{font-size:var(--small);color:var(--muted);margin-top:4px}
.section-count{margin-left:auto;font-size:var(--label);color:var(--muted);padding-top:var(--s1);white-space:nowrap}
.boards-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s4) var(--s3);align-items:start}
.boards-grid.mobile-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.artboard{min-width:0;scroll-margin-top:96px}
.board-heading{display:flex;align-items:center;justify-content:space-between;gap:var(--s1);margin-bottom:12px;min-height:48px}
.board-title{display:flex;align-items:center;gap:var(--s1);font-size:var(--small);font-weight:600;line-height:1.4}
.board-code{font-size:var(--label);font-weight:400;color:var(--muted);white-space:nowrap}
.board-caption{font-size:var(--label);color:var(--muted);margin-top:4px;line-height:1.5}
.board-actions{display:flex;gap:4px;flex:none}
.board-action{display:flex;width:36px;height:36px;align-items:center;justify-content:center;color:var(--muted);border-radius:var(--small-radius)}
.board-action .icon{width:16px;height:16px}
.board-window{border:1px solid #d5dbe3;border-radius:var(--radius);background:var(--surface);box-shadow:0 4px 16px rgb(20 24 31 / .04);overflow:clip;position:relative;isolation:isolate}
.board-scaled{width:1104px;zoom:var(--board-scale, .5)}
.artboard[data-mobile=true] .board-scaled{width:390px;margin-inline:auto}
.browser-bar{height:40px;display:flex;align-items:center;justify-content:space-between;padding:0 var(--s2);background:#fff;border-bottom:1px solid #e6e9ed;gap:var(--s2);color:var(--muted);font-size:var(--label)}
.browser-dots{display:flex;gap:4px;align-items:center}
.browser-dots i{display:block;width:8px;height:8px;border:1px solid #bfc6cf;border-radius:50%}
.browser-location{display:flex;align-items:center;gap:var(--s1);padding:4px 48px;background:#f3f5f7;border-radius:var(--small-radius);color:#626974;line-height:1.5}
.browser-location .icon{width:12px;height:12px}
.browser-view{font-size:var(--label);white-space:nowrap}
.viewport{height:1080px;position:relative;background:var(--page);container-type:inline-size;isolation:isolate;display:grid;grid-template-rows:minmax(0,1fr)}
.artboard[data-mobile=true] .viewport{height:1120px}
.page-scroll{overflow-y:auto;overscroll-behavior:contain;min-height:0;scrollbar-width:thin;scrollbar-color:#bbc4d0 transparent;scroll-behavior:smooth}
.page-scroll::-webkit-scrollbar{width:8px}
.page-scroll::-webkit-scrollbar-thumb{background:#bbc4d0;border-radius:4px}
.viewport .icon{width:20px;height:20px}
.site-header{background:#fff;border-bottom:1px solid var(--border)}
.site-nav{height:72px;padding:0 var(--s6);display:flex;align-items:center;justify-content:space-between;gap:var(--s3)}
.site-brand{display:flex;align-items:center;gap:var(--s1);flex:none}
.site-brand img{width:151px}
.site-links{display:flex;gap:var(--s3);align-items:center;color:var(--secondary);font-size:var(--small);margin-left:auto}
.site-actions{display:flex;align-items:center;gap:var(--s2)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s1);min-height:44px;padding:var(--s1) var(--s2);border:1px solid var(--ink);border-radius:var(--small-radius);font-weight:500;line-height:1.5;font-size:var(--body);white-space:nowrap;text-align:center;transition:background var(--motion),color var(--motion),border-color var(--motion)}
.btn-primary{background:var(--ink);color:#fff}
.btn-secondary{background:transparent;color:var(--ink)}
.btn-soft{background:var(--accent-soft);border-color:#d8e2f0;color:var(--accent)}
.btn-quiet{border-color:transparent;color:var(--secondary);background:transparent}
.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}
.btn-small{font-size:var(--small);padding:var(--s1) 12px}
.btn-wide{width:100%}
.text-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--s1);min-height:44px;color:var(--accent);font-size:var(--body);padding:4px 0;line-height:1.5}
.text-button .icon{width:16px;height:16px}
.icon-button{display:flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;border-radius:var(--small-radius);color:var(--secondary)}
.site-avatar{display:flex;align-items:center;justify-content:center;min-width:44px;min-height:44px}
.avatar{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:var(--accent);color:#fff;font-size:var(--small);font-weight:600;flex:none}
.site-content{max-width:1104px;padding:var(--s6) var(--s6) var(--s8);margin-inline:auto}
.task-hero{display:grid;grid-template-columns:minmax(0,1fr) 152px;gap:var(--s6);align-items:center;padding:var(--s2) 0 var(--s6);border-bottom:1px solid var(--border);margin-bottom:var(--s6)}
.hero-eyebrow{display:flex;align-items:center;gap:var(--s1);color:var(--accent);font-size:var(--small);margin-bottom:var(--s2)}
.eyebrow-line{display:block;width:24px;height:1px;background:var(--accent)}
.task-hero h1{font-size:var(--display);letter-spacing:-2px;line-height:1.2}
.task-hero p{font-size:20px;color:var(--secondary);margin-top:var(--s2)}
.task-hero .btn{margin-top:var(--s3)}
.hero-mascot{width:112px;height:auto;aspect-ratio:260/411;justify-self:center;align-self:center}
.section-top{display:flex;justify-content:space-between;align-items:center;gap:var(--s2);margin-bottom:var(--s3)}
.section-top h2{font-size:var(--title)}
.section-meta{font-size:var(--body);color:var(--secondary);white-space:nowrap}
.section-meta strong{color:var(--accent);font-weight:600}
.task-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s2)}
.task-card{display:flex;flex-direction:column;gap:var(--s2);padding:var(--s3);border:1px solid var(--border);border-radius:var(--small-radius);background:var(--surface);min-width:0}
.task-card h3{font-size:var(--body);line-height:1.5;font-weight:600}
.task-top{display:flex;align-items:center;justify-content:space-between;gap:var(--s1)}
.task-symbol{display:flex;width:36px;height:36px;align-items:center;justify-content:center;background:#f1f4f8;color:var(--accent);border-radius:var(--small-radius);flex:none}
.task-symbol .icon{width:20px;height:20px}
.task-points{display:flex;align-items:baseline;gap:var(--s1);white-space:nowrap;font-size:var(--small);color:var(--muted)}
.task-points strong{font-size:32px;color:var(--accent);font-weight:500;line-height:1.2;font-variant-numeric:tabular-nums;letter-spacing:-1px}
.task-condition{font-size:var(--body);color:var(--secondary);line-height:1.6;min-height:52px}
.task-foot{margin-top:auto;min-height:44px;display:flex;align-items:center;gap:var(--s1);font-size:var(--body)}
.task-card.done,.task-card.expired{background:#f0f1ef;border-color:#e0e2dd}
.task-card.done .task-points strong,.task-card.expired .task-points strong{color:var(--muted)}
.task-card.done .task-symbol,.task-card.expired .task-symbol{background:#e5e7e3;color:var(--muted)}
.task-card.done h3,.task-card.expired h3{color:var(--secondary)}
.done-label{display:flex;align-items:center;gap:var(--s1);color:var(--secondary)}
.done-label .icon{color:var(--success)}
.state-label{display:inline-flex;align-items:center;font-size:var(--label);line-height:1.5;padding:4px var(--s1);border-radius:var(--small-radius);color:var(--secondary);background:#edf0f3;white-space:nowrap}
.state-label.progress{color:var(--accent);background:var(--accent-soft)}
.progress-block{width:100%;display:grid;gap:var(--s1);font-size:var(--body)}
.progress-track{height:4px;background:#e0e5ec;border-radius:4px;display:flex;gap:4px}
.progress-track span{display:block;flex:1;background:#e0e5ec;border-radius:4px}
.progress-track span.filled{background:var(--accent)}
.progress-remaining{color:var(--muted);font-size:var(--small)}
.invitation-section{margin-top:var(--s6)}
.invite-box{background:var(--surface);border:1px solid var(--border);border-radius:var(--small-radius)}
.invite-summary{display:flex;justify-content:space-between;align-items:center;gap:var(--s3);padding:var(--s3) var(--s4)}
.invite-heading h3{font-size:22px}
.invite-heading p{font-size:var(--body);color:var(--muted);margin-top:var(--s1)}
.invite-benefit{display:flex;align-items:baseline;gap:var(--s1);white-space:nowrap;font-size:var(--body);color:var(--secondary)}
.invite-benefit strong{font-size:40px;line-height:1.2;font-weight:500;color:var(--accent)}
.invite-guest{border-top:1px solid var(--border);padding:var(--s3) var(--s4);display:flex;align-items:center;justify-content:space-between;gap:var(--s2);font-size:var(--body);color:var(--secondary)}
.invite-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-block:1px solid var(--border);margin:0 var(--s4);padding:var(--s3) 0;gap:var(--s3)}
.invite-stats .od-stat{--od-gap:8px}
.invite-stats .od-stat strong{font-size:32px;font-weight:500;line-height:1.2;white-space:nowrap;font-variant-numeric:tabular-nums}
.invite-stats .od-stat span{font-size:var(--small);color:var(--muted)}
.invite-stats .od-stat:not(:first-child){border-left:1px solid var(--border);padding-left:var(--s3)}
.quota-note{margin:var(--s3) var(--s4) 0;padding:var(--s2);background:#f2f4f6;color:var(--secondary);font-size:var(--body);line-height:1.6}
.share-materials{padding:var(--s4);display:grid;grid-template-columns:minmax(0,1fr) 240px;gap:var(--s4);align-items:start}
.share-copy{display:flex;flex-direction:column;gap:var(--s2);min-width:0}
.share-copy h4,.poster-column h4{margin:0;font-size:var(--body);font-weight:600}
.share-copy p{font-size:var(--body);color:var(--secondary);line-height:1.7}
.share-url{display:block;width:100%;min-width:0;padding:var(--s2);background:var(--page);border:1px solid var(--border);font-size:var(--small);color:var(--secondary);line-height:1.6;text-align:left}
.share-url-text{text-overflow:clip;mask-image:linear-gradient(to right,#000 calc(100% - var(--s4)),transparent 100%)}
@media(hover:hover){.share-url:hover{border-color:var(--accent)}}
.copy-actions{display:flex;align-items:center;gap:var(--s2);flex-wrap:wrap}
.poster-column{display:grid;gap:var(--s2);justify-items:start}
.poster-thumb{border:1px solid #dce2ec;background:#fff;border-radius:var(--small-radius);width:240px;padding:var(--s2);display:grid;gap:var(--s1);text-align:center}
.poster-thumb-brand{display:flex;justify-content:center;margin-bottom:var(--s1)}
.poster-thumb-brand img{width:128px;height:auto}
.poster-thumb-title{font-size:var(--body);font-weight:600;line-height:1.5}
.poster-thumb-number{font-size:32px;color:var(--accent);font-weight:600;line-height:1.2}
.poster-thumb .qr{justify-self:center;padding:var(--s1);background:#fff;width:120px;height:120px;display:flex;align-items:center;justify-content:center}
.qr img,.qr canvas{display:block;width:100%;height:auto;image-rendering:pixelated}
.poster-hint{font-size:var(--small);color:var(--muted);text-align:center}
.poster-save{display:flex;align-items:center;gap:var(--s1)}
.poster-save .btn{font-size:var(--small)}
.invite-records{border-top:1px solid var(--border);padding:0 var(--s4)}
.disclosure-toggle{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);min-height:72px;width:100%;text-align:left;font-weight:500;font-size:var(--body)}
.disclosure-toggle .icon{transition:transform var(--motion);color:var(--muted)}
.disclosure-toggle[aria-expanded=true]>.icon{transform:rotate(180deg)}
.records-head,.record-row{display:grid;grid-template-columns:136px 112px minmax(0,1fr) 104px;gap:var(--s2);align-items:center}
.records-head{padding:var(--s2) 0;font-size:var(--small);color:var(--muted);border-top:1px solid var(--border)}
.record-row{padding:var(--s2) 0;border-top:1px solid var(--border);font-size:var(--body)}
.record-progress{display:flex;flex-wrap:wrap;gap:var(--s1) var(--s2);font-size:var(--small)}
.stage{display:flex;align-items:center;gap:4px;white-space:nowrap;color:var(--secondary)}
.stage .icon{width:16px;height:16px;color:var(--success)}
.stage.pending{color:var(--muted)}
.stage.pending i{display:block;width:12px;height:12px;border:1px solid #909aa6;border-radius:50%;margin:2px}
.record-amount{text-align:right;white-space:nowrap;font-weight:500}
.record-date{font-size:var(--small);color:var(--muted);white-space:nowrap}
.records-more{display:flex;justify-content:center;border-top:1px solid var(--border);padding:var(--s1) 0}
.empty-records{padding:var(--s4) var(--s2);color:var(--muted);text-align:center;font-size:var(--body);line-height:1.7;border-top:1px solid var(--border)}
.rules{margin-top:var(--s4);border:1px solid var(--border);border-radius:var(--small-radius);background:#fff;padding:0 var(--s4)}
.rules-content{padding-bottom:var(--s4);font-size:var(--body);color:var(--secondary);line-height:1.75}
.rules-content h4{font-size:var(--body);color:var(--ink);margin:var(--s3) 0 var(--s1);font-weight:600}
.rules-content p+p{margin-top:var(--s1)}
.rules-table{border-collapse:collapse;width:100%;margin-block:var(--s2);table-layout:fixed;font-size:var(--small)}
.rules-table th,.rules-table td{text-align:left;vertical-align:top;padding:var(--s2) var(--s1);border-bottom:1px solid var(--border);overflow-wrap:anywhere}
.rules-table th{font-weight:500;background:var(--page);color:var(--ink)}
.rules-table th:first-child{width:44%}
.site-footer{padding:var(--s4) var(--s6);background:#fff;border-top:1px solid var(--border);color:var(--muted);font-size:var(--small)}
.footer-top{display:grid;grid-template-columns:2fr repeat(3,minmax(0,1fr));gap:var(--s4);margin-bottom:var(--s3)}
.footer-brand{display:grid;align-content:start;gap:var(--s2)}
.footer-group{display:grid;gap:var(--s1);align-content:start}
.footer-group h4{margin:0;color:var(--ink);font-size:var(--body);font-weight:500}
.footer-group a,.footer-group button{font-size:var(--small);text-align:left;padding:4px 0;min-height:32px;color:var(--secondary)}
.footer-legal{border-top:1px solid var(--border);padding-top:var(--s3);display:flex;flex-wrap:wrap;gap:var(--s1) var(--s3);font-size:var(--label)}
.landing-hero{display:grid;grid-template-columns:minmax(0,1fr) 176px;gap:var(--s4);align-items:center;padding:var(--s3) 0 var(--s4)}
.landing-hero h1{font-size:48px;line-height:1.3;letter-spacing:-1px}
.landing-hero h1 em{font-style:normal;color:var(--accent);white-space:nowrap}
.landing-hero p{margin-top:var(--s2);font-size:20px;color:var(--secondary)}
.landing-hero small{display:block;margin-top:var(--s2);color:var(--muted)}
.landing-hero .hero-mascot{width:144px}
.landing-steps{display:grid;gap:var(--s2);margin-top:var(--s3)}
.landing-step{display:flex;align-items:center;gap:var(--s3);padding:var(--s3);border:1px solid var(--border);background:#fff;border-radius:var(--small-radius)}
.step-number{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border:1px solid #d8e2f0;color:var(--accent);font-size:var(--body);font-weight:500;background:var(--accent-soft);flex:none}
.landing-step .od-field{--od-gap:8px;flex:1}
.landing-step h3{font-size:20px;font-weight:500}
.landing-step p{font-size:var(--body);color:var(--secondary)}
.landing-step.complete{background:#f0f1ef}
.landing-additional{margin-top:var(--s3);padding:var(--s3) 0;border-bottom:1px solid var(--border);font-size:var(--body);line-height:1.7}
.landing-additional h3{font-size:20px;margin-bottom:var(--s1)}
.landing-additional p{color:var(--secondary)}
.landing-return{display:flex;justify-content:space-between;align-items:center;gap:var(--s3);padding:var(--s4) 0}
.landing-return h3{font-size:20px;line-height:1.6;max-width:580px}
.layer-root{position:absolute;inset:0;z-index:50;display:grid;align-items:center;justify-items:center;padding:var(--s3);background:rgb(20 24 31 / .44);backdrop-filter:blur(4px);animation:layer-enter var(--motion) ease-out}
.layer-root[hidden]{display:none}
.modal{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);width:min(100%,480px);max-height:100%;overflow-y:auto;padding:var(--s4);position:relative;animation:modal-enter var(--motion) ease-out;scrollbar-width:thin}
.modal h2{font-size:var(--heading);margin-bottom:var(--s2)}
.modal p{color:var(--secondary);font-size:var(--body);line-height:1.75}
.modal-close{position:absolute;right:var(--s2);top:var(--s2);z-index:2}
.modal-actions{display:grid;gap:var(--s1);margin-top:var(--s3)}
.modal .modal-head{padding-right:var(--s4);margin-bottom:var(--s3)}
.modal .modal-head h2{font-size:var(--title)}
.modal .modal-head p{font-size:var(--small)}
.modal-success{text-align:center;padding-top:var(--s6)}
.success-circle{display:flex;align-items:center;justify-content:center;width:64px;height:64px;background:var(--accent-soft);color:var(--accent);border-radius:50%;margin:0 auto var(--s3)}
.success-circle .icon{width:32px;height:32px}
.credit-amount{display:block;color:var(--accent);font-size:48px;font-weight:500;line-height:1.3;margin-top:var(--s1);white-space:nowrap}
.credit-source{display:block;font-size:var(--body);color:var(--secondary);margin-top:var(--s3)}
.expiry-text{font-size:var(--small);color:var(--muted);margin-top:var(--s2)}
.arrival-help{font-size:var(--small);color:var(--muted);margin-top:var(--s3);line-height:1.7}
.old-user-modal .btn{min-height:48px}
.old-user-modal h2{font-size:var(--heading);margin-top:var(--s1)}
.form-fields{display:grid;gap:var(--s2)}
.field-label{display:block;font-weight:500;font-size:var(--body);margin-bottom:var(--s1)}
.form-field input{display:block;width:100%;border:1px solid #bdc6d1;border-radius:var(--small-radius);background:#fff;min-height:48px;padding:12px var(--s2);font-size:var(--body);color:var(--ink);appearance:none}
.form-field input::placeholder{color:var(--muted)}
.form-field input[aria-invalid=true]{border-color:var(--danger)}
.code-input{display:flex;align-items:center;gap:var(--s1)}
.code-input input{flex:1;min-width:0}
.field-error{display:block;font-size:var(--small);color:var(--danger);line-height:1.5;margin-top:4px}
.form-hint{font-size:var(--small);color:var(--muted);margin-top:var(--s1)}
.check-label{display:flex;align-items:flex-start;gap:var(--s1);font-size:var(--small);color:var(--secondary);line-height:1.7;margin-top:var(--s2);cursor:pointer}
.check-label input{appearance:none;display:block;flex:none;width:20px;height:20px;margin:4px 0 0;border:1px solid #9da8b5;border-radius:var(--small-radius);background:#fff;cursor:pointer}
.check-label input:checked{background-color:var(--accent);border-color:var(--accent);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='white' stroke-width='2' d='m5 12 4 4 10-10'/%3E%3C/svg%3E");background-position:center;background-repeat:no-repeat}
.check-label a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}
.form-error-summary{display:grid;gap:4px;padding:var(--s2);background:#fff3f2;border:1px solid #efc5c1;color:var(--danger);font-size:var(--small);margin-bottom:var(--s2);line-height:1.6}
.form-error-summary a{text-decoration:underline}
.form-error-summary[hidden]{display:none}
.loading-inline{display:flex;align-items:center;gap:var(--s1)}
.loading-dot{width:8px;height:8px;background:currentColor;border-radius:50%;animation:loading-pulse .8s ease-in-out infinite alternate}
.manual-copy{display:block;width:100%;min-height:168px;border:1px solid #bdc6d1;resize:vertical;padding:var(--s2);border-radius:var(--small-radius);font-size:var(--body);line-height:1.6;color:var(--ink);margin-top:var(--s2)}
.toast{position:absolute;bottom:var(--s3);left:var(--s3);right:var(--s3);z-index:80;display:flex;justify-content:center;pointer-events:none}
.toast[hidden]{display:none}
.toast-message{display:flex;align-items:center;gap:var(--s1);background:var(--ink);color:#fff;border-radius:var(--small-radius);padding:12px var(--s3);box-shadow:var(--shadow);font-size:var(--body);max-width:100%;text-wrap:pretty;animation:modal-enter var(--motion) ease-out}
.poster-modal{width:440px;padding:var(--s3)}
.poster-full{width:100%;background:#f2f5fa;border:1px solid #d8e2ef;padding:var(--s4);display:grid;gap:var(--s2);text-align:center;position:relative}
.poster-full .brand-image{width:168px;margin:0 auto}
.poster-full h3{font-size:var(--title);line-height:1.5;margin-top:var(--s1)}
.poster-value{font-size:var(--body);color:var(--secondary)}
.poster-full .poster-invite{font-size:var(--body);color:var(--secondary);margin-top:var(--s2)}
.poster-full .poster-total{font-size:56px;color:var(--accent);line-height:1.1;font-weight:600;letter-spacing:-1px;white-space:nowrap}
.poster-full .poster-unit{font-size:20px;color:var(--accent)}
.poster-full .qr{width:168px;height:168px;padding:12px;margin:var(--s1) auto 0;background:#fff;display:flex;align-items:center;justify-content:center}
.poster-full .poster-caption{font-size:var(--small);color:var(--secondary)}
.poster-full .poster-user{font-size:var(--small);color:var(--muted);border-top:1px solid #cbd5e3;padding-top:var(--s2)}
.poster-image{width:100%;height:auto;display:block;border:1px solid var(--border)}
.image-save-help{font-size:var(--small);color:var(--muted);margin-top:var(--s2);text-align:center}
.app-shell{display:grid;grid-template-columns:224px minmax(0,1fr);min-height:100%;background:#fff}
.app-sidebar{border-right:1px solid var(--border);padding:var(--s3) var(--s2);background:#f6f7f9;display:flex;flex-direction:column;gap:var(--s3);min-width:0}
.app-sidebar .brand-image{width:151px}
.app-nav{display:grid;gap:var(--s1)}
.app-nav button{display:flex;align-items:center;gap:var(--s1);min-height:44px;padding:var(--s1) 12px;border-radius:var(--small-radius);text-align:left;font-size:var(--body);color:var(--secondary)}
.app-nav button.active{background:#e6ebf3;color:var(--accent)}
.app-user-region{margin-top:auto;display:grid;gap:var(--s1)}
.app-user{display:flex;align-items:center;gap:var(--s1);padding:var(--s2) var(--s1);width:100%;text-align:left;border-top:1px solid var(--border)}
.app-user .od-field{font-size:var(--small);--od-gap:4px}
.app-user .od-field small{color:var(--muted);font-size:var(--label)}
.profile-menu{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:var(--s1);font-size:var(--body)}
.profile-phone{padding:var(--s1);color:var(--muted);font-size:var(--small)}
.profile-menu button{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:48px;padding:var(--s1);text-align:left;font-size:var(--body);border-radius:var(--small-radius)}
.profile-menu button.highlight{background:var(--accent-soft);color:var(--accent)}
.profile-menu button .menu-label{display:flex;align-items:center;gap:var(--s1)}
.profile-menu button:last-child{border-top:1px solid var(--border);margin-top:var(--s1);color:var(--danger)}
.menu-points{font-size:var(--small);color:var(--muted);white-space:nowrap}
.app-main{padding:var(--s4);min-width:0}
.app-breadcrumb{display:flex;align-items:center;gap:var(--s1);font-size:var(--small);color:var(--muted);margin-bottom:var(--s3)}
.app-tabs{display:flex;border-bottom:1px solid var(--border);gap:var(--s4);margin:var(--s3) 0 var(--s4)}
.app-tabs button{min-height:48px;display:flex;align-items:center;position:relative;font-size:var(--body);color:var(--muted)}
.app-tabs button.active{color:var(--ink);font-weight:600;border-bottom:2px solid var(--ink)}
.app-overview{padding:var(--s3);background:#f6f7f9;border:1px solid var(--border);border-radius:var(--radius);display:flex;align-items:center;justify-content:space-between;gap:var(--s3);margin-bottom:var(--s4)}
.app-overview h3{font-size:var(--body);color:var(--secondary);font-weight:500}
.app-overview strong{font-size:40px;font-weight:500;line-height:1.4}
.app-overview p{color:var(--muted);font-size:var(--small)}
.resource-header{display:flex;justify-content:space-between;align-items:center;gap:var(--s2);margin-bottom:var(--s2)}
.resource-header h3{font-size:20px}
.resource-actions{display:flex;gap:var(--s1)}
.resource-table{border:1px solid var(--border);border-radius:var(--radius);padding:0 var(--s3);background:#fff}
.resource-row{display:grid;grid-template-columns:128px 128px minmax(0,1fr);gap:var(--s2);align-items:center;padding:var(--s2) 0;font-size:var(--body)}
.resource-row+.resource-row{border-top:1px solid var(--border)}
.resource-row small{font-size:var(--small);color:var(--muted)}
.resource-note{font-size:var(--small);color:var(--muted);margin-top:var(--s2);margin-bottom:var(--s4);line-height:1.7}
.resource-log-link{display:flex;justify-content:space-between;align-items:center;gap:var(--s2);padding:var(--s2) 0;border-top:1px solid var(--border)}
.resource-log-link h3{font-size:20px}
.app-home{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:var(--s6);gap:var(--s3)}
.app-home h1{font-size:40px}
.app-home p{font-size:var(--body);color:var(--secondary)}
.home-input{display:flex;align-items:center;gap:var(--s2);width:100%;max-width:640px;border:1px solid #cdd4dd;padding:var(--s2);border-radius:var(--radius);background:#fff;text-align:left;color:var(--muted);font-size:var(--body)}
.home-input textarea{min-height:80px;width:100%;border:0;resize:vertical;outline:none;color:var(--ink);line-height:1.6}
.home-input textarea:focus-visible{outline:2px solid var(--accent);outline-offset:4px}
.sample-prompts{display:flex;gap:var(--s1);flex-wrap:wrap;justify-content:center}
.sample-prompts button{border:1px solid var(--border);border-radius:var(--small-radius);padding:var(--s1) var(--s2);font-size:var(--small);background:#f8f9fb;min-height:44px}
.ledger-header{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);margin-bottom:var(--s3)}
.ledger-title{font-size:var(--title)}
.ledger-tabs{display:flex;gap:var(--s1);border-bottom:1px solid var(--border);margin-bottom:var(--s2)}
.ledger-tabs button{padding:var(--s1) var(--s2);min-height:48px;font-size:var(--body);color:var(--secondary);border-bottom:2px solid transparent}
.ledger-tabs button.active{border-color:var(--accent);color:var(--accent);font-weight:500}
.ledger-note{font-size:var(--small);color:var(--muted);margin-bottom:var(--s3)}
.ledger-row,.ledger-table-head{display:grid;grid-template-columns:168px minmax(0,1fr) 112px;gap:var(--s2);align-items:center;padding:var(--s2) 0;border-bottom:1px solid var(--border);font-size:var(--body)}
.ledger-table-head{color:var(--muted);font-size:var(--small);border-top:1px solid var(--border)}
.ledger-row .od-field{--od-gap:4px}
.ledger-row small{color:var(--muted);font-size:var(--small)}
.ledger-row time{color:var(--muted);font-size:var(--small)}
.ledger-amount{font-size:20px;font-weight:500;white-space:nowrap;text-align:right;color:var(--success)}
.ledger-amount.expense{color:var(--secondary)}
.ledger-refund-note{display:flex;gap:var(--s1);align-items:flex-start;padding:var(--s2);background:#f3f5f8;color:var(--secondary);font-size:var(--body);line-height:1.7;margin-top:var(--s3)}
.paywall-price{margin:var(--s3) 0;font-size:40px;font-weight:500;color:var(--accent);line-height:1.3;white-space:nowrap}
.paywall-price small{font-size:var(--body);color:var(--secondary)}
.paywall-features{display:grid;gap:var(--s2);font-size:var(--body);color:var(--secondary);margin-top:var(--s2)}
.paywall-features>div{display:flex;align-items:center;gap:var(--s1)}
.paywall-features .icon{color:var(--accent)}
.info-block{padding:var(--s2);background:#f3f5f8;font-size:var(--body);color:var(--secondary);line-height:1.75;margin-top:var(--s2)}
.focus-shell{position:fixed;inset:0;z-index:300;background:#e9edf2;display:grid;grid-template-rows:64px minmax(0,1fr)}
.focus-header{padding:0 var(--s3);display:flex;align-items:center;justify-content:space-between;gap:var(--s2);background:#fff;border-bottom:1px solid #d8dfe7;font-size:var(--body)}
.focus-title{display:flex;align-items:center;gap:var(--s2);min-width:0}
.focus-title span{overflow-wrap:anywhere}
.focus-content{overflow:auto;padding:var(--s3);display:flex;align-items:flex-start;justify-content:center}
.focus-content .board-scaled{max-width:1104px;width:100%;zoom:1}
.focus-content .viewport{height:calc(100dvh - 112px);min-height:480px;width:100%;border:1px solid #d1d9e3;box-shadow:var(--shadow);border-radius:var(--small-radius)}
.focus-content.mobile-focus .board-scaled{width:min(100%,390px)}
.focus-content.mobile-focus .viewport{height:calc(100dvh - 112px)}
.focus-content .browser-bar{display:none}
@keyframes layer-enter{from{opacity:0}to{opacity:1}}
@keyframes modal-enter{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@keyframes loading-pulse{from{opacity:.3}to{opacity:1}}
@media(hover:hover){.btn-primary:hover{background:#2b3038;border-color:#2b3038}.btn-secondary:hover{background:#e9ecf0}.btn-soft:hover{background:#dce7f4;border-color:#b9cde7}.btn-quiet:hover,.icon-button:hover{background:#e9edf3;color:var(--ink)}.text-button:hover{color:#17335b;text-decoration:underline;text-underline-offset:4px}.canvas-nav a:hover,.board-action:hover{background:#fff;color:var(--ink)}.site-links a:hover,.footer-group a:hover,.footer-group button:hover{color:var(--accent)}.profile-menu button:hover,.app-nav button:hover{background:#e9edf4}.disclosure-toggle:hover{color:var(--accent)}.sample-prompts button:hover{border-color:#bdc9d8;background:#edf2f8}.ledger-tabs button:hover{color:var(--accent)}}
@container(max-width:760px){.site-links{display:none}.site-nav{padding-inline:var(--s3);height:64px}.site-content{padding:var(--s4) var(--s3) var(--s6)}.task-hero{grid-template-columns:minmax(0,1fr) 112px;gap:var(--s2)}.task-hero h1{font-size:40px}.task-hero p{font-size:var(--body)}.hero-mascot{width:88px}.task-list{grid-template-columns:repeat(2,minmax(0,1fr))}.task-card{padding:var(--s2)}.share-materials{grid-template-columns:minmax(0,1fr) 216px;padding:var(--s3);gap:var(--s3)}.poster-thumb{width:216px}.invite-summary{padding:var(--s3)}.invite-stats{margin-inline:var(--s3)}.invite-records{padding-inline:var(--s3)}.records-head,.record-row{grid-template-columns:112px minmax(0,1fr) 96px}.records-head>span:nth-child(2){display:none}.record-date{grid-column:1;font-size:var(--label)}.record-row{gap:var(--s1)}.record-row .record-progress{grid-column:2;grid-row:1/3}.record-row .record-amount{grid-column:3;grid-row:1/3}.landing-hero h1{font-size:40px}.landing-hero{grid-template-columns:minmax(0,1fr) 112px}.landing-hero .hero-mascot{width:104px}.landing-step{gap:var(--s2)}.site-footer{padding:var(--s3)}.footer-top{grid-template-columns:2fr 1fr;gap:var(--s3)}.app-shell{grid-template-columns:176px minmax(0,1fr)}.app-main{padding:var(--s3)}.app-sidebar{padding-inline:var(--s1)}.resource-header{align-items:flex-start;flex-direction:column}.resource-row{grid-template-columns:96px 96px minmax(0,1fr)}.ledger-row,.ledger-table-head{grid-template-columns:128px minmax(0,1fr) 80px}}
@container(max-width:480px){.site-nav{padding-inline:var(--s2);gap:var(--s1)}.site-nav .site-brand img{width:128px}.site-nav .consult-button{display:none}.site-actions{gap:var(--s1)}.site-content{padding:var(--s4) var(--s2) var(--s6)}.task-hero{grid-template-columns:minmax(0,1fr) 72px;padding:var(--s1) 0 var(--s4);margin-bottom:var(--s4);gap:var(--s1)}.task-hero h1{font-size:32px;letter-spacing:-1px;white-space:normal}.task-hero p{font-size:var(--body);line-height:1.75}.hero-mascot{width:64px}.hero-eyebrow{font-size:var(--label);margin-bottom:var(--s1)}.task-hero .btn{font-size:var(--small);padding-inline:12px;margin-top:var(--s2)}.section-top{align-items:flex-start;flex-direction:column;gap:var(--s1);margin-bottom:var(--s2)}.section-top h2{font-size:22px}.section-meta{font-size:var(--small)}.task-list{grid-template-columns:minmax(0,1fr)}.task-card{display:grid;grid-template-columns:minmax(0,1fr) 100px;gap:var(--s1) var(--s2);padding:var(--s2)}.task-top{grid-column:1/3}.task-symbol{width:32px;height:32px}.task-condition{grid-column:1;min-height:0;font-size:var(--body)}.task-points{grid-column:2;grid-row:2;flex-direction:column;gap:0;align-items:flex-end}.task-points strong{font-size:32px}.task-points span{font-size:var(--label)}.task-foot{grid-column:1/3;margin-top:var(--s1)}.task-foot .btn{width:100%}.invitation-section{margin-top:var(--s4)}.invite-summary{align-items:flex-start;flex-direction:column;gap:var(--s2);padding:var(--s3) var(--s2)}.invite-heading h3{font-size:20px}.invite-benefit strong{font-size:32px}.invite-guest{align-items:flex-start;flex-direction:column;padding:var(--s2)}.invite-guest .btn{width:100%}.invite-stats{padding:var(--s2) 0;margin-inline:var(--s2);gap:var(--s1)}.invite-stats .od-stat{--od-gap:8px}.invite-stats .od-stat strong{font-size:24px}.invite-stats .od-stat:not(:first-child){padding-left:var(--s1)}.invite-stats .od-stat span{font-size:var(--label)}.share-materials{grid-template-columns:minmax(0,1fr);padding:var(--s3) var(--s2);gap:var(--s4)}.poster-column{grid-row:1;justify-items:center}.poster-column h4{justify-self:start}.poster-thumb{width:240px}.share-copy{grid-row:2}.share-copy p{font-size:var(--body)}.share-url{font-size:var(--label)}.copy-actions{gap:var(--s1)}.quota-note{margin:var(--s2) var(--s2) 0}.invite-records{padding-inline:var(--s2)}.records-head{display:none}.record-row{grid-template-columns:minmax(0,1fr) auto;gap:var(--s1);padding-block:var(--s2)}.record-row .record-date{grid-column:1;grid-row:2}.record-row .record-progress{grid-column:1/3;grid-row:3;margin-top:4px}.record-row .record-amount{grid-column:2;grid-row:1/3;font-size:var(--body)}.rules{padding-inline:var(--s2)}.rules-table{font-size:var(--label)}.rules-table td,.rules-table th{padding:var(--s1) 4px}.rules-table th:first-child{width:40%}.site-footer{padding:var(--s3) var(--s2)}.footer-top{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s3)}.footer-brand{grid-column:1/3}.footer-group h4{font-size:var(--body)}.footer-legal{gap:var(--s1) var(--s2)}.landing-hero{display:block;padding-top:var(--s1)}.landing-hero h1{font-size:32px}.landing-hero .hero-mascot{display:none}.landing-hero p{font-size:var(--body)}.landing-step{display:grid;grid-template-columns:32px minmax(0,1fr);gap:var(--s2);padding:var(--s2)}.step-number{width:32px;height:32px}.landing-step h3{font-size:20px}.landing-step .btn{grid-column:1/3;width:100%;min-height:48px}.landing-step>.done-label{grid-column:1/3}.landing-return{align-items:flex-start;flex-direction:column;gap:var(--s2)}.landing-return h3{font-size:20px}.landing-return .btn{width:100%}.layer-root{padding:var(--s2)}.modal{padding:var(--s3);max-height:calc(100% - 16px)}.modal h2{font-size:24px}.modal-close{top:var(--s1);right:var(--s1)}.modal-success{padding-top:var(--s4)}.credit-amount{font-size:40px}.poster-full{padding:var(--s3)}.poster-full .poster-total{font-size:48px}.app-shell{grid-template-columns:minmax(0,1fr)}.app-sidebar{display:none}.app-main{padding:var(--s2)}.ledger-row,.ledger-table-head{grid-template-columns:104px minmax(0,1fr) 72px;gap:var(--s1)}.ledger-row{font-size:var(--small)}.resource-actions{flex-wrap:wrap}.resource-row{grid-template-columns:88px minmax(0,1fr);gap:var(--s1)}.resource-row small{grid-column:1/3}.app-overview{padding:var(--s2)}}
@media(min-width:1440px){.canvas-main{padding:var(--s6)}.boards-grid{gap:var(--s6) var(--s4)}}
@media(max-width:1023px){.workspace{grid-template-columns:160px minmax(0,1fr)}.canvas-main{padding:var(--s3)}.boards-grid{grid-template-columns:minmax(0,1fr)}.boards-grid.mobile-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.canvas-sidebar{padding-inline:var(--s1)}.canvas-intro{margin-bottom:var(--s4)}.canvas-intro h1{font-size:28px}}
@media(max-width:767px){.studio-header{padding-inline:var(--s2);height:56px}.studio-meta .sample-label{display:none}.studio-brand .brand-image{width:104px}.studio-name{font-size:var(--label)}.workspace{display:block}.canvas-sidebar{position:sticky;top:56px;z-index:90;height:auto;padding:var(--s1) var(--s2);background:var(--canvas);border-right:0;border-bottom:1px solid #dce0e6;display:block;overflow:auto}.canvas-sidebar .sidebar-caption,.sidebar-bottom{display:none}.canvas-nav{display:flex;gap:var(--s1)}.canvas-nav a{flex:none;padding:var(--s1) 12px;min-height:44px;white-space:nowrap}.canvas-nav .nav-number,.nav-count{display:none}.canvas-main{padding:var(--s3) var(--s2)}.canvas-intro{align-items:flex-start;gap:var(--s2)}.canvas-intro h1{font-size:24px}.canvas-intro p{font-size:var(--small)}.intro-index{display:none}.canvas-section{scroll-margin-top:136px}.artboard{scroll-margin-top:136px}.section-count{display:none}.section-header h2{font-size:20px}.section-header p{font-size:var(--small)}.boards-grid.mobile-grid{grid-template-columns:minmax(0,1fr)}.board-heading{min-height:48px}.board-actions .board-action{width:44px;height:44px}.focus-header{padding-inline:var(--s2)}.focus-content{padding:0}.focus-content .viewport{height:calc(100dvh - 64px);border:0;border-radius:0}.focus-content.mobile-focus .viewport{height:calc(100dvh - 64px)}.focus-content.mobile-focus .board-scaled{width:100%}.studio-divider{height:20px}}
@media(prefers-reduced-motion:reduce){html,.page-scroll{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}
