:root{--bg:#f3f6fa;--panel:#fff;--ink:#132033;--muted:#728096;--line:#e5ebf2;--navy:#071522;--navy2:#10243a;--teal:#27c7a5;--teal-dark:#139277;--blue:#4a7ef5;--red:#ef6471;--amber:#f2b84b;--purple:#8d6bf1;--shadow:0 16px 45px rgba(18,39,63,.08)}*{box-sizing:border-box}html{font-size:16px}body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;line-height:1.55}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.app-shell{min-height:100vh;display:flex}.sidebar{position:fixed;inset:0 auto 0 0;width:248px;background:linear-gradient(180deg,var(--navy),#0a1b2d);color:#dce6f2;padding:26px 18px 18px;display:flex;flex-direction:column;z-index:30}.brand{display:flex;align-items:center;gap:12px;padding:0 10px 28px}.brand-mark{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:linear-gradient(145deg,#45e1bf,#20a9ba);color:#06241f;font-weight:900;font-size:22px;box-shadow:0 8px 25px rgba(44,210,176,.26)}.brand b{display:block;font-size:19px;letter-spacing:.2px}.brand small{display:block;color:#8296ad;font-size:11px;letter-spacing:.11em}.nav{display:flex;flex-direction:column;gap:5px}.nav a{padding:11px 13px;border-radius:10px;color:#aebdcd;font-size:14px;font-weight:600;transition:.18s}.nav a:hover,.nav a.active{background:#162c43;color:#fff}.nav a.active{box-shadow:inset 3px 0 var(--teal)}.nav-label{font-size:10px;color:#657b92;letter-spacing:.14em;padding:24px 13px 7px}.sidebar-user{margin-top:auto;border-top:1px solid #20364c;padding:18px 5px 2px;display:grid;grid-template-columns:38px 1fr 30px;gap:10px;align-items:center}.avatar{width:38px;height:38px;border-radius:12px;background:#203a53;display:grid;place-items:center;font-weight:800;color:#76dfc9}.sidebar-user b,.sidebar-user small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-user b{font-size:13px}.sidebar-user small{font-size:10px;color:#758aa1}.icon-button{border:0;background:none;color:#8ca0b6;cursor:pointer;padding:5px}.main{min-width:0;flex:1;margin-left:248px}.topbar{min-height:92px;padding:20px 34px;background:rgba(255,255,255,.86);backdrop-filter:blur(16px);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:18px;position:sticky;top:0;z-index:20}.topbar h1{font-size:20px;margin:0 0 2px}.topbar p{font-size:12px;color:var(--muted);margin:0}.topbar .button{margin-left:auto}.menu-button{display:none;border:0;background:#e9eef5;border-radius:9px;padding:7px 10px}.content{padding:28px 34px 60px;max-width:1540px;margin:0 auto}.button{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:10px;background:var(--teal);color:#07231d;font-weight:750;padding:11px 17px;cursor:pointer;transition:.16s}.button:hover{background:#45d9ba;transform:translateY(-1px)}.button.small{padding:8px 12px;font-size:13px}.button.wide{width:100%;padding:13px}.button.secondary{background:#edf1f6;color:#31445b}.text-button{border:0;background:none;color:#268a79;font-weight:700;font-size:13px;padding:5px;cursor:pointer;white-space:nowrap}.alert{border-radius:12px;padding:13px 16px;margin-bottom:18px;font-size:14px}.alert.success{background:#e4f8f2;color:#126b58;border:1px solid #bfeadd}.alert.error{background:#fff0f2;color:#a33443;border:1px solid #f2c8cf}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:18px}.metric{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:20px;box-shadow:var(--shadow);min-height:138px}.metric>span{font-size:12px;color:var(--muted);font-weight:700}.metric strong{display:block;font-size:34px;line-height:1.15;margin:13px 0 5px;letter-spacing:-.04em}.metric strong i,.report-cards b i{font-size:.43em;font-style:normal;margin-left:3px;color:var(--muted)}.metric small{color:#9aa6b6;font-size:11px}.metric.accent{background:linear-gradient(140deg,#0d2135,#123b47);color:white;border-color:#173f4a}.metric.accent>span,.metric.accent strong i{color:#a1cdc5}.progress{height:6px;background:#254a51;border-radius:10px;overflow:hidden;margin-top:16px}.progress span{height:100%;display:block;background:#4ae0bd;border-radius:10px}.two-column{display:grid;grid-template-columns:1.35fr 1fr;gap:18px;margin-bottom:18px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);padding:21px;margin-bottom:18px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.panel-head h2{margin:0;font-size:16px}.panel-head p{margin:2px 0 0;color:var(--muted);font-size:11px}.panel-head>a:not(.button){color:var(--teal-dark);font-size:12px;font-weight:700}.store-list,.job-list{display:flex;flex-direction:column}.store-list article,.job-list article{display:flex;align-items:center;gap:13px;padding:12px 0;border-top:1px solid var(--line)}.store-list article:first-child,.job-list article:first-child{border-top:0}.store-list article>div,.job-list article>div{min-width:0;flex:1}.store-list b,.store-list small,.job-list b,.job-list small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.store-list b,.job-list b{font-size:13px}.store-list small,.job-list small{font-size:10px;color:var(--muted)}.status-dot{width:8px;height:8px;border-radius:50%}.status-dot.on{background:var(--teal)}.status-dot.off{background:#abb5c1}.provider-badge{font-size:9px;letter-spacing:.06em;font-weight:800;border-radius:7px;padding:5px 7px;background:#edf1f7;color:#647386;min-width:62px;text-align:center}.provider-badge.caskan{background:#e8f2ff;color:#3474cf}.provider-badge.estama{background:#fff0f5;color:#c24d7c}.provider-badge.menran{background:#f0ecff;color:#7456ca}.provider-badge.grow{background:#e8f8ef;color:#33835a}.job-status{width:9px;height:9px;border-radius:50%;background:#a5afbc}.job-status.success{background:var(--teal)}.job-status.failed{background:var(--red)}.job-status.running{background:var(--amber)}.job-list em{font-style:normal;text-transform:uppercase;font-size:9px;color:var(--muted)}.banner-panel{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(125deg,#0d1e31,#123547);color:white;border:0;padding:26px 28px}.banner-panel h2{margin:5px 0 4px}.banner-panel p{margin:0;color:#9fb2c4;font-size:13px}.eyebrow{font-size:9px;letter-spacing:.18em;color:var(--teal-dark);font-weight:800}.banner-panel .eyebrow{color:#5ee4c8}.muted{color:var(--muted);font-size:13px}.pill{display:inline-flex;border-radius:30px;padding:4px 8px;font-size:9px;font-weight:800;text-transform:uppercase}.pill.green{background:#e1f7f0;color:#18856e}.pill.red{background:#ffe7ea;color:#b23d4d}.pill.gray{background:#edf0f4;color:#6d7a8b}.pill.purple{background:#eee9ff;color:#7052c9}.table-wrap{overflow-x:auto;margin:0 -4px}.table-wrap table{width:100%;border-collapse:collapse;min-width:720px}.table-wrap th{text-align:left;color:#8592a3;font-size:10px;text-transform:uppercase;letter-spacing:.05em;padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap}.table-wrap td{padding:13px 12px;border-bottom:1px solid var(--line);font-size:12px;vertical-align:middle}.table-wrap tr:last-child td{border-bottom:0}.cell-sub{display:block;color:var(--muted);font-size:9px;max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.actions{display:flex;align-items:center;gap:4px}.actions form{margin:0}.empty-cell{text-align:center!important;color:var(--muted);padding:34px!important}.note-card{background:#eaf3f7;border:1px solid #d5e7ed;border-radius:14px;padding:17px;color:#38576a}.note-card b{font-size:13px}.note-card p{font-size:11px;margin:5px 0 0}.note-card code{background:#fff;padding:2px 5px;border-radius:5px}.form-panel{max-width:980px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.form-grid label,.form-stack label{font-size:12px;font-weight:700;color:#48586d}.form-grid label.full{grid-column:1/-1}.form-grid input,.form-grid select,.form-grid textarea,.form-stack input,.filter-bar input,.filter-bar select,.gantt-controls input,.gantt-controls select{display:block;width:100%;border:1px solid #dce3eb;border-radius:10px;background:#fff;padding:11px 12px;color:var(--ink);margin-top:6px;outline:none}.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus,.form-stack input:focus{border-color:#61cdb7;box-shadow:0 0 0 3px rgba(39,199,165,.1)}.form-grid small,.form-stack small{display:block;font-weight:400;color:var(--muted);margin-top:4px}.check-label{display:flex!important;align-items:center;gap:9px;padding-top:27px}.check-label input{width:auto;margin:0}.advanced{background:#f7f9fc;border:1px solid var(--line);padding:15px;border-radius:12px}.advanced summary{cursor:pointer;font-size:12px;font-weight:750}.advanced p{font-size:10px;color:var(--muted)}.advanced textarea{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;resize:vertical}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}.help-panel{max-width:980px}.help-panel h3{font-size:14px;margin-top:0}.help-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.help-grid>div{background:#f7f9fc;border-radius:12px;padding:15px}.help-grid b{font-size:12px}.help-grid p{margin:4px 0 0;font-size:10px;color:var(--muted)}.gantt-controls form,.filter-bar{display:flex;gap:9px;align-items:center}.gantt-controls input,.gantt-controls select,.filter-bar input,.filter-bar select{width:auto;margin:0;padding:8px 10px;font-size:12px}.gantt-legend{display:flex;flex-wrap:wrap;gap:16px;margin-bottom:13px;color:var(--muted);font-size:10px}.gantt-legend span{display:flex;align-items:center;gap:5px}.gantt-legend i{width:16px;height:7px;border-radius:4px}.legend-shift{background:#dce9f8}.legend-booked{background:#e76774}.legend-open{background:#41c8aa}.legend-unknown{background:#aeb8c5}.gantt{overflow:auto;border:1px solid var(--line);border-radius:12px;min-height:330px}.gantt-table{min-width:1100px}.gantt-head,.gantt-row{display:grid;grid-template-columns:150px 1fr}.gantt-head{position:sticky;top:0;z-index:5;background:#f8fafc;border-bottom:1px solid var(--line)}.gantt-name-head{padding:12px;font-size:10px;color:var(--muted);font-weight:700}.gantt-hours{position:relative;height:42px}.gantt-hour-label{position:absolute;top:10px;transform:translateX(-50%);font-size:9px;color:#78879a}.gantt-row{border-bottom:1px solid var(--line);min-height:54px}.gantt-row:last-child{border-bottom:0}.gantt-name{padding:10px 12px;display:flex;align-items:center;gap:8px;background:#fff;position:sticky;left:0;z-index:4;border-right:1px solid var(--line)}.gantt-name b{font-size:12px}.gantt-name small{display:block;color:var(--muted);font-size:8px}.gantt-timeline{position:relative;min-height:54px;background-image:linear-gradient(to right,rgba(207,216,227,.65) 1px,transparent 1px);background-size:4.1666667% 100%}.gantt-shift{position:absolute;top:9px;height:36px;border-radius:8px;background:#e4edf8;border:1px solid #cedced}.gantt-booking{position:absolute;top:15px;height:24px;border-radius:6px;z-index:2;min-width:3px;box-shadow:0 2px 7px rgba(0,0,0,.08)}.gantt-booking.booked{background:#e66774}.gantt-booking.open{background:#38c5a5}.gantt-booking.unknown{background:#aab6c4}.gantt-booking:hover:after{content:attr(data-title);position:absolute;left:50%;bottom:31px;transform:translateX(-50%);background:#0e1d2e;color:#fff;padding:6px 8px;border-radius:6px;font-size:9px;white-space:nowrap;z-index:9}.loading,.gantt-empty{display:grid;place-items:center;min-height:330px;color:var(--muted);font-size:12px}.report-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}.report-cards>div{background:#f7f9fc;border:1px solid var(--line);border-radius:12px;padding:14px}.report-cards span{display:block;color:var(--muted);font-size:10px}.report-cards b{display:block;font-size:23px;margin-top:5px}.chart-box{height:250px;border:1px solid var(--line);border-radius:12px;padding:14px}.chart-box canvas{width:100%;height:100%}.reports-columns{grid-template-columns:1fr 1fr}.filter-bar{margin-bottom:18px}.guest-body{background:#081725;min-height:100vh}.guest-wrap{min-height:100vh;display:grid;grid-template-columns:minmax(440px,1.15fr) minmax(400px,.85fr)}.guest-visual{padding:48px 8vw 44px;background:radial-gradient(circle at 30% 20%,rgba(38,196,166,.18),transparent 32%),linear-gradient(150deg,#071421,#102b3d);color:#fff;display:flex;flex-direction:column;justify-content:space-between}.guest-visual .brand{padding:0}.brand.light small{color:#7f9aaf}.guest-visual h1{font-size:clamp(34px,4vw,60px);line-height:1.18;letter-spacing:-.045em;margin:14px 0 20px}.guest-visual p{max-width:610px;color:#9cb1c2;font-size:14px}.guest-points{display:flex;gap:10px;flex-wrap:wrap}.guest-points span{border:1px solid #2a4558;border-radius:30px;padding:7px 11px;font-size:10px;color:#9cb3c4}.guest-card{background:#fff;padding:60px clamp(36px,7vw,110px);display:flex;flex-direction:column;justify-content:center}.auth-heading h2{font-size:28px;margin:8px 0 5px}.auth-heading p{color:var(--muted);font-size:12px;margin:0 0 25px}.form-stack{display:flex;flex-direction:column;gap:15px}.auth-switch{text-align:center;font-size:11px;color:var(--muted);margin-top:20px}.auth-switch a{color:var(--teal-dark);font-weight:700}.empty-state{text-align:center;padding:70px 20px}.empty-state h1{font-size:58px;margin:0}.empty-state.compact{padding:35px 20px}.empty-state p{color:var(--muted)}
@media(max-width:1100px){.metric-grid{grid-template-columns:repeat(2,1fr)}.two-column,.reports-columns{grid-template-columns:1fr}.guest-wrap{grid-template-columns:1fr}.guest-visual{display:none}}
@media(max-width:820px){.sidebar{transform:translateX(-100%);transition:.2s}.sidebar.open{transform:translateX(0);box-shadow:20px 0 50px rgba(0,0,0,.25)}.main{margin-left:0}.menu-button{display:block}.topbar{padding:14px 18px;min-height:74px}.content{padding:18px}.topbar .button{display:none}.form-grid{grid-template-columns:1fr}.form-grid label.full{grid-column:auto}.help-grid{grid-template-columns:1fr}.gantt-controls{align-items:flex-start}.gantt-controls form{flex-wrap:wrap;justify-content:flex-end}.report-cards{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.metric-grid{grid-template-columns:1fr 1fr;gap:9px}.metric{padding:15px;min-height:120px}.metric strong{font-size:27px}.panel{padding:16px;border-radius:14px}.banner-panel{align-items:flex-start;flex-direction:column;gap:16px}.guest-card{padding:35px 22px}.filter-bar{flex-wrap:wrap}.filter-bar select{width:100%}.report-cards{grid-template-columns:1fr 1fr}.topbar h1{font-size:17px}}
