:root{--bg:#f3f7f7;--bg-elev:#fff;--ink:#153238;--muted:#5f7378;--line:#d5e3e4;--teal:#0d7377;--teal-deep:#09575a;--teal-soft:#e6f4f4;--mint:#2a9d8f;--warn:#c47a12;--alert:#b42318;--ok:#1b7f5a;--shadow:0 10px 30px #0f373a0f;--radius:14px;--font:"Noto Sans SC", "PingFang SC", "Hiragino Sans GB", sans-serif;--text-title:1.35rem;--text-section:1.05rem;--text-body:.95rem;--text-meta:.875rem;font-family:var(--font);font-size:var(--text-body);color:var(--ink);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;line-height:1.5}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}button,input,select{font:inherit;color:inherit}button{cursor:pointer}h1,h2,h3{font-family:var(--font);letter-spacing:0;text-transform:none;color:var(--ink);margin:0 0 .3rem;font-weight:700}h1{font-size:var(--text-title)}h2{font-size:var(--text-section);font-weight:650}h3{font-size:var(--text-body);font-weight:650}p{font-size:var(--text-body);margin:0}.eyebrow{font-size:var(--text-meta);letter-spacing:0;text-transform:none;color:var(--teal);margin:0 0 .25rem;font-weight:600}.lede{color:var(--muted);max-width:36rem;font-size:var(--text-meta);font-weight:500}.sub{color:var(--muted);font-size:var(--text-meta)}.hint{color:var(--muted);font-size:var(--text-meta);margin-top:.85rem}.gate{place-items:center;min-height:100vh;padding:1.5rem;display:grid;position:relative;overflow:hidden}.gate-bg{background:radial-gradient(900px 420px at 12% 10%,#0d73772e,#0000 60%),radial-gradient(700px 380px at 90% 80%,#2a9d8f29,#0000 55%),linear-gradient(160deg,#eef6f6,#f7fbfb 45%,#e8f1f2);position:absolute;inset:0}.gate-card{border:1px solid var(--line);width:min(920px,100%);box-shadow:var(--shadow);background:#ffffffeb;border-radius:22px;padding:2rem 2rem 1.6rem;position:relative}.gate-roles{grid-template-columns:repeat(3,1fr);gap:1rem;margin-top:1.6rem;display:grid}.role-card{text-align:left;border:1px solid var(--line);background:var(--bg);border-radius:16px;flex-direction:column;gap:.45rem;padding:1.1rem 1rem;transition:border-color .2s,transform .2s;display:flex}.role-card:hover{border-color:var(--teal);transform:translateY(-2px)}.role-card strong{font-size:var(--text-section)}.role-card span{color:var(--muted);font-size:var(--text-meta)}.doctor-pick select{border:1px solid var(--line);background:#fff;border-radius:10px;width:100%;padding:.45rem .6rem}.app-shell{background:linear-gradient(180deg, #0d73770d, transparent 180px), var(--bg);grid-template-columns:220px 1fr;min-height:100vh;display:grid}.side-nav{border-right:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffffc7;flex-direction:column;gap:1.2rem;height:100vh;padding:1.25rem 1rem;display:flex;position:sticky;top:0}.brand{align-items:center;gap:.75rem;padding:.25rem .35rem;display:flex}.brand-mark{background:radial-gradient(circle at 30% 30%, #e8f6f5, transparent 50%), linear-gradient(145deg, var(--teal), var(--mint));border-radius:10px;width:36px;height:36px}.brand strong{font-family:var(--font);font-weight:700;display:block}.brand em{color:var(--muted);font-style:normal;font-size:var(--text-meta)}.side-nav nav{flex-direction:column;flex:1;gap:.25rem;display:flex}.side-nav nav button,.mobile-nav button{text-align:left;color:var(--muted);background:0 0;border:0;border-radius:10px;padding:.7rem .85rem}.side-nav nav button.active,.mobile-nav button.active{background:var(--teal-soft);color:var(--teal-deep);font-weight:600}.side-foot{flex-direction:column;gap:.5rem;display:flex}.main-pane{min-width:0;padding:1.25rem 1.5rem 5rem}.mobile-nav{display:none}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:1.1rem;display:flex}.page-head.compact{align-items:center}.head-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.btn{border:1px solid var(--line);background:#fff;border-radius:10px;padding:.5rem .9rem}.btn.primary{background:var(--teal);border-color:var(--teal);color:#fff}.btn.ghost{background:0 0}.btn.sm{font-size:var(--text-meta);padding:.35rem .7rem;font-weight:600}.btn.block{width:100%}.panel{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem 1.1rem}.money-strip{border:1px solid var(--line);background:#fff;border-radius:14px;gap:1.25rem;padding:.85rem 1.1rem;display:flex}.money-strip.wide{margin-bottom:1rem}.money-strip span{color:var(--muted);font-size:var(--text-meta);display:block}.money-strip strong{font-size:var(--text-title)}.money-strip .ok{color:var(--ok)}.todo-row{flex-wrap:wrap;gap:.6rem;margin-bottom:1rem;display:flex}.todo-chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:.45rem .9rem}.todo-chip b{color:var(--teal);margin-left:.35rem}.todo-chip.warn b{color:var(--warn)}.todo-chip.alert b{color:var(--alert)}.chair-board{border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);background:#fff;overflow:auto}.chair-board-head,.chair-board-body{grid-template-columns:64px repeat(6,minmax(120px,1fr));min-width:920px;display:grid}.chair-board-head{border-bottom:1px solid var(--line);background:var(--teal-soft)}.chair-col-head{border-left:1px solid var(--line);padding:.7rem .6rem}.chair-col-head span{color:var(--muted);font-size:var(--text-meta);display:block}.time-gutter{padding:.5rem .35rem}.time-slot-label{height:56px;font-size:var(--text-meta);color:var(--muted)}.chair-col{border-left:1px solid var(--line);min-height:616px;position:relative}.time-slot{border-bottom:1px dashed #e4eeee;height:56px}.appt-block{text-align:left;color:#153238;background:#fff;border:1px solid #b7cbcd;border-left-width:4px;border-radius:8px;flex-direction:column;gap:.12rem;min-height:44px;padding:.35rem .45rem;display:flex;position:absolute;left:4px;right:4px;overflow:hidden}.appt-block em{font-style:normal;font-size:var(--text-meta);color:#2f4a50;font-weight:600}.appt-block strong{font-size:var(--text-body);color:#10262b;font-weight:700;line-height:1.2}.appt-block span{font-size:var(--text-meta);color:#34555c;white-space:nowrap;text-overflow:ellipsis;font-weight:500;overflow:hidden}.appt-block.status-arrived,.appt-block.status-treating{background:#e7f5f3}.appt-block.status-arrived em,.appt-block.status-treating em,.appt-block.status-arrived span,.appt-block.status-treating span{color:#1f4f52}.appt-block.status-billing{background:#fff4e4}.appt-block.status-billing em,.appt-block.status-billing span{color:#6b4508}.appt-block.status-done{opacity:1;background:#f0f3f3}.appt-block.status-done em,.appt-block.status-done strong,.appt-block.status-done span{color:#3d555a}.table-wrap{border:1px solid var(--line);border-radius:var(--radius);background:#fff;overflow:auto}.table-wrap.tall{max-height:420px}.data-table{border-collapse:collapse;width:100%;font-size:var(--text-body)}.data-table th,.data-table td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:.7rem .75rem}.data-table th{background:var(--teal-soft);color:var(--teal-deep);font-weight:600;position:sticky;top:0}.data-table.compact th,.data-table.compact td{padding:.5rem .6rem}.ops{flex-wrap:wrap;gap:.35rem;display:flex}.ops button{border:1px solid var(--line);font-size:var(--text-meta);background:#fff;border-radius:8px;padding:.35rem .65rem;font-weight:600}.badge{background:var(--teal-soft);color:var(--teal-deep);font-size:var(--text-meta);border-radius:999px;padding:.2rem .55rem;font-weight:600;display:inline-block}.badge.status-billing,.badge.lab-returned{color:#8a5a00;background:#fff1d6}.badge.status-noshow,.badge.lab-cancelled{color:var(--alert);background:#fde8e6}.form-grid{grid-template-columns:1fr 1fr;gap:.75rem 1rem;margin-bottom:1rem;display:grid}.form-grid label{font-size:var(--text-meta);color:var(--muted);flex-direction:column;gap:.3rem;font-weight:600;display:flex}.form-grid label.check{color:var(--ink);flex-direction:row;align-items:center}.form-grid input,.form-grid select,.search,.date-input,.head-actions select,.pay-bar input,.pay-bar select{border:1px solid var(--line);background:#fff;border-radius:10px;padding:.5rem .65rem}.span-2{grid-column:span 2}.form-actions{justify-content:flex-end;gap:.5rem;display:flex}.split-2{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.simple-list{margin:0 0 1rem;padding:0;list-style:none}.simple-list li{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:.75rem;padding:.7rem 0;display:flex}.simple-list li>div{flex-direction:column;gap:.15rem;display:flex}.simple-list .empty,.empty{color:var(--muted);padding:1rem 0}.simple-list li.overdue{background:#fff8f6;border-radius:8px;margin:0 -.5rem;padding-left:.5rem;padding-right:.5rem}.checkout-queue{flex-direction:column;gap:1.35rem;display:flex}.queue-section .section-head{align-items:center;gap:.55rem;margin-bottom:.75rem;display:flex}.queue-section .section-head h2{margin:0}.count-pill{background:var(--teal-soft);min-width:1.4rem;height:1.4rem;color:var(--teal-deep);font-size:var(--text-meta);border-radius:999px;justify-content:center;align-items:center;padding:0 .4rem;font-weight:700;display:inline-flex}.queue-list{flex-direction:column;gap:.55rem;margin:0;padding:0;list-style:none;display:flex}.queue-row{border:1px solid var(--line);background:#f8fbfb;border-radius:12px;justify-content:space-between;align-items:center;gap:.85rem;padding:.85rem .95rem;display:flex}.queue-row.is-overdue{background:#fff5f3;border-color:#f0c4bd}.queue-main{flex-direction:column;gap:.2rem;min-width:0;display:flex}.queue-title-line{flex-wrap:wrap;align-items:center;gap:.45rem;display:flex}.queue-main strong{font-size:var(--text-body);color:var(--ink);font-weight:700}.queue-meta{color:#3f5a60;font-size:var(--text-meta);font-weight:500}.queue-due{color:#3f5a60;font-size:var(--text-meta)}.queue-due b{color:var(--teal-deep);font-weight:700}.overdue-tag{font-style:normal;font-size:var(--text-meta);color:#9b1c1c;background:#fde2de;border-radius:999px;padding:.12rem .45rem;font-weight:700}.queue-empty{color:var(--muted);font-size:var(--text-meta);padding:.85rem .2rem}.panel>h2{border-bottom:1px solid var(--line);margin-bottom:.75rem;padding-bottom:.55rem}.lab-board .section-head{align-items:center;gap:.55rem;margin-bottom:.85rem;display:flex}.lab-board .section-head h2{margin:0}.lab-list{flex-direction:column;gap:.65rem;margin:0;padding:0;list-style:none;display:flex}.lab-card{border:1px solid var(--line);background:#f8fbfb;border-radius:12px;justify-content:space-between;align-items:center;gap:1rem;padding:.95rem 1rem;display:flex}.lab-card.is-overdue{background:#fff5f3;border-color:#f0c4bd}.lab-card-main{flex-direction:column;gap:.25rem;min-width:0;display:flex}.lab-card-top{flex-wrap:wrap;align-items:center;gap:.45rem;display:flex}.lab-card-top strong{font-size:var(--text-body);font-weight:700}.lab-item{font-size:var(--text-body);color:var(--ink);font-weight:600}.lab-meta{font-size:var(--text-meta);color:#3f5a60;font-weight:500}.lab-card-actions{flex-direction:column;flex-shrink:0;gap:.4rem;display:flex}.badge.lab-sent,.badge.lab-in_lab{background:var(--teal-soft);color:var(--teal-deep)}.badge.lab-returned{color:#8a5a00;background:#fff1d6}.badge.lab-fitted{color:var(--ok);background:#e5f5ec}.badge.lab-cancelled,.badge.lab-draft{color:#52666b;background:#eef1f2}@media (width<=720px){.lab-card{flex-direction:column;align-items:stretch}.lab-card-actions{flex-direction:row}}.subtabs{flex-wrap:wrap;gap:.35rem;margin-bottom:1rem;display:flex}.subtabs button{border:1px solid var(--line);font-size:var(--text-meta);color:var(--muted);background:#fff;border-radius:999px;padding:.4rem .85rem;font-weight:600}.subtabs button.active{background:var(--teal);border-color:var(--teal);color:#fff}.section-head.row-between,.row-between{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.row-between.wrap{flex-wrap:wrap}.filter-row{flex-wrap:wrap;gap:.45rem;display:flex}.filter-row select{border:1px solid var(--line);font-size:var(--text-meta);background:#fff;border-radius:10px;padding:.4rem .55rem}.queue-row.is-selected{border-color:var(--teal);background:var(--teal-soft)}.queue-main.as-button{text-align:left;cursor:pointer;background:0 0;border:0;flex-direction:column;gap:.2rem;width:100%;padding:0;display:flex}.span-full{grid-column:1/-1}.growth-leads{align-items:start}.status-row{margin:.75rem 0 1rem}.chip{border:1px solid var(--line);font-size:var(--text-meta);color:var(--muted);background:#fff;border-radius:999px;padding:.3rem .65rem;font-weight:600}.chip.active{background:var(--teal-soft);border-color:var(--teal);color:var(--teal-deep)}.follow-box{border:1px solid var(--line);background:#f8fbfb;border-radius:12px;grid-template-columns:1fr 160px auto;align-items:end;gap:.65rem;margin:.75rem 0 1rem;padding:.85rem;display:grid}.follow-box h3{grid-column:1/-1;margin:0}.follow-box label{font-size:var(--text-meta);color:var(--muted);flex-direction:column;gap:.25rem;font-weight:600;display:flex}.follow-box input{border:1px solid var(--line);background:#fff;border-radius:10px;padding:.45rem .6rem}.growth-board{flex-direction:column;gap:1rem;display:flex}.ok-text{color:var(--ok);font-weight:700}.alert-text{color:var(--alert);font-weight:700}@media (width<=720px){.follow-box{grid-template-columns:1fr}}.patients-layout{grid-template-columns:280px 1fr;align-items:start;gap:1rem;display:grid}.patient-list ul{max-height:70vh;margin:.75rem 0 0;padding:0;list-style:none;overflow:auto}.patient-list li button{text-align:left;background:0 0;border:0;border-radius:10px;flex-direction:column;gap:.1rem;width:100%;padding:.7rem .5rem;display:flex}.patient-list li button.active{background:var(--teal-soft)}.patient-list li span,.patient-list li em{color:var(--muted);font-style:normal;font-size:var(--text-meta)}.detail-head{justify-content:space-between;gap:1rem;margin-bottom:.75rem;display:flex}.tag-row{flex-wrap:wrap;gap:.4rem;margin-bottom:.75rem;display:flex}.tag{background:var(--teal-soft);color:var(--teal-deep);font-size:var(--text-meta);border-radius:999px;padding:.15rem .55rem;font-weight:600}.meta-dl{gap:.5rem;margin:0 0 1rem;display:grid}.meta-dl dt{color:var(--muted);font-size:var(--text-meta)}.meta-dl dd{margin:0}.timeline{margin:0;padding:0;list-style:none}.timeline li{border-left:2px solid var(--line);padding:0 0 1rem .9rem;position:relative}.timeline li:before{content:"";background:var(--teal);border-radius:50%;width:8px;height:8px;position:absolute;top:.35rem;left:-5px}.timeline .kind{color:var(--teal);font-size:var(--text-meta);margin-right:.5rem;font-weight:600;display:inline-block}.timeline time{color:var(--muted);font-size:var(--text-meta)}.price-grid{grid-template-columns:repeat(2,1fr);gap:.6rem;display:grid}.price-card{text-align:left;border:1px solid var(--line);background:var(--bg);border-radius:12px;flex-direction:column;gap:.2rem;padding:.7rem;display:flex}.price-card .cat{font-size:var(--text-meta);color:var(--muted)}.price-card em{color:var(--teal);font-style:normal;font-weight:600}.price-card small{color:var(--muted)}.cart{margin:0;padding:0;list-style:none}.cart li{border-bottom:1px solid var(--line);grid-template-columns:1fr auto auto;align-items:center;gap:.5rem;padding:.4rem 0;display:grid}.cart button{color:var(--alert);background:0 0;border:0}.total-line{margin:.75rem 0}.pay-bar{flex-wrap:wrap;align-items:flex-end;gap:.6rem;margin-top:.75rem;display:flex}.pay-bar label{font-size:var(--text-meta);color:var(--muted);flex-direction:column;gap:.25rem;font-weight:600;display:flex}.install-box{background:var(--bg);border-radius:12px;margin-top:.75rem;padding:.75rem}.install-box ul{margin:.5rem 0 0;padding:0;list-style:none}.install-box li{border-bottom:1px solid var(--line);justify-content:space-between;gap:.5rem;padding:.4rem 0;display:flex}.receipt-sheet{border:1px dashed var(--line);max-width:360px;font-family:var(--font);font-size:var(--text-meta);background:#fff;margin:1rem auto;padding:1.25rem}.receipt-line{justify-content:space-between;margin:.35rem 0;display:flex}.receipt-foot{text-align:center;color:var(--muted);margin-top:1rem}.role-demo{flex-wrap:wrap;gap:.5rem;margin:.75rem 0 1rem;display:flex}.muted-row{opacity:.65}@media (width<=960px){.app-shell{grid-template-columns:1fr}.side-nav{display:none}.mobile-nav{border-top:1px solid var(--line);z-index:20;background:#fffffff5;justify-content:space-around;padding:.35rem;display:flex;position:fixed;bottom:0;left:0;right:0}.mobile-nav button{text-align:center;font-size:var(--text-meta);padding:.55rem .35rem}.gate-roles,.split-2,.patients-layout,.form-grid,.price-grid{grid-template-columns:1fr}.span-2{grid-column:span 1}.main-pane{padding-bottom:5.5rem}}
